29.4.2021Blogi

Näin Oulun Clojure-ihme syntyi

clojure

Aloitin Solitalla devaushommat vuoden 2014 loppupuolella samalla, kun Oulun toimipiste perustettiin. Nykyään toimin Clojure-kehittäjänä ja People Leadinä. Työpaikkaa vaihtaessani en odottanut oppivani mitään tiettyä teknologiaa tai ohjelmointikieltä, vaan halusin oppia laajemmin perusasioita ja yleisiä lainalaisuuksia. Tästä huolimatta hurahdin puolivahingossa melko syvälle upeaan teknologiaan nimeltä Clojure. Yksin en olisi varmaan edes aloittanut tätä matkaa. Nykyään meillä on Oulussa töissä parisenkymmentä clojuristia ja noin puolet käynnissä olevista devaushankkeistamme on tehty Clojurella. Kerron seuraavassa miten Oulun “Clojure-ihme” oikein syntyi.

Oman Clojure-taipaleeni ensimetrit

Solitan Oulun toimiston ensimmäinen projekti, Väyläviraston Harja, päätettiin aikanaan tehdä Clojurella. Hankkeen pääsuunnittelijana toiminut kollegani Tarvaisen Tatu on vannoutunut Clojure-fani, ja hän sai meidät muutkin innostumaan ajatuksesta tehdä hanke tällä hieman erilaisella ohjelmointikielellä. Itselläni ei ollut ennestään Clojure-kokemusta, mutta funktionaalisen ohjelmointiparadigman käyttäminen uudessa hankkeessa tuntui mahdollisuudelta, jota ei kannattaisi jättää käyttämättä.

Alkuun päästäkseni luin netistä erilaisia Clojure-tutoriaaleja, kunnes huomasin, että paras tapa oppia oli yksinkertaisesti ottaa lusikka kauniiseen käteen ja alkaa itse koodata, yrityksen ja erehdyksen kautta. Alkuviikkoina annoin omat ratkaisuni yleensä Tatulle katselmoitavaksi ja löysimme niistä monenlaista paranneltavaa. Yhä muistelen kiitollisena sitä kärsivällisyyttä, millä Tatu jaksoi minua ja myöhemmin lukuisia muita solitalaisia mentoroida ja innostaa Clojure-tekemisen alkumetreillä. Mentoroinnissa hienoa oli se, ettei siinä tarjottu valmiita ratkaisuja, vaan pikemminkin ohjattiin kohti funktionaalisen ohjelmoinnin ajattelumallia; ratkaisun löytämisen ilon sai kokea ihan itse.

Oulun Clojure-innostus alkaa kasvaa

Maaliskuussa 2015 järjestimme Oulussa ensimmäisen Clojure-aiheisen meetupin, jossa pääsimme näyttämään runsaslukuiselle devaajayleisölle Clojuren voimaa käytännössä. Tämän tilaisuuden jälkeen moni oululainen Lisp-intoilija päätyi hakemaan meille töihin ja he ovat yhä tärkeä osa funktionaalisen ohjelmoinnin yhteisöämme.

Samalla kun Harjakin kasvoi kokoa, saimme kasvatettua omista junioreista uusia clojuristeja hyväksi havaitulla kaavalla: alkuun tiukemmin kokeneempien mentoroinnissa, ja siitä vähitellen omilleen, kun siivet alkavat kantaa. Myös pitemmälle ehtineiden osaajien kesken varsin toimiva malli on ollut, että tietystä domain-alueesta enemmän tietävä henkilö on parikoodauksessa taustalla katsomassa ja ohjaamassa, ja vähemmän tietävä koodaa. Näin saadaan tärkeää domain-tietämystä – ja tietysti teknistä osaamista – levitettyä tiimissä tehokkaasti ja yhteisöllisesti. Näin myös vältetään tehokkaasti yksin työskentelyssä esiintyviä lukkotilanteita: kun jokin ongelma ei meinaa millään ratketa, asiakkaan aikaa palaa turhaan. Usein toiset silmäparit, tai ns. kumiankkaefekti, avaavat umpisolmun.

Vuoden 2015 loppuun mennessä meillä oli Oulussa kasassa jo lähes kymmenkunta sulkuja sujuvasti puhuvaa kehittäjää. Tästä alkoi jonkinlainen lumipalloefekti: kiinnostus ruokki kiinnostusta. Muistan yhä, kuinka meillä esiteltiin jo silloin sisäisissä tietoiskuissa itse tehtyjä Lisp-ohjelmointikieliä, Clojuren käyttöä erilaisissa vapaa-ajan projekteissa sekä tietenkin vanhat kunnon Haskell-monadit. Edelleen tekee oikein hyvää kokoontua asiakastyön ahertamisen lomassa silloin tällöin pohtimaan myös teoreettisempaa ongelmanratkaisua. Tällainen projektirajojen yli tapahtuva tiedon jakaminen on jatkunut säännöllisenä ja on yhä voimissaan: nykyään kokoonnumme kahden viikon välein koodikahveille, missä esitellään usein myös Clojure-ratkaisuja. Näiden lisäksi meillä tehdään jatkuvasti satunnaisia syväsukelluksia eri aiheisiin, kutsumme niitä tietoiskuiksi.

Kun viime vuosien aikana olemme aloittaneet uusia hankkeita, usein niihin on valittu pääasialliseksi työkaluksi hyväksi havaittu Clojure-pino. Clojurella tehtäviä hankkeita on pelkästään Oulussa tällä hetkellä käynnissä muun muassa seuraavilta toimialoilta:

Ajan myötä myös päivitämme käytettyjä kirjastoja ja viime aikoina mukaan on tullut mm. mielenkiintoinen Datomic-tietokanta. Tämän myötä tarve Clojure-osaajille on tasaisesti kasvanut. Koska valmiita Clojure-osaajia ei juurikaan työmarkkinoilla ole, aidosta tarpeesta kehittynyt mentoroinnin ja opettamisen kulttuuri on pidetty vahvana. Pääasiassa koulutamme uudet Clojure-tekijämme itse. Olemme kasvattaneet viime vuosien aikana hyviä clojuristeja muun muassa Java, JavaScript, C# ja PHP-taustaisista kehittäjistä. Tärkein yhteinen nimittäjä heille on ollut utelias mieli sekä kiinnostus Clojureen ja funktionaaliseen ohjelmointityyliin.

Totuuden nimissä sanottakoon, että kaikki eivät syystä tai toisesta innostu Clojuresta samalla tavalla, ja hyvä niin. Monimuotoisuus on tässäkin asiassa rikkaus. Lopulta ohjelmointikieli on vain työkalu ja yksi osa laajaa kokonaisuutta, mitä ohjelmistokehittäjän on syytä työssään hallita. Joillakin suhde tähän työkaluun voi olla arkisen käytännöllinen, kun taas toisella se voi olla lähes intohimoinen.

Meillä näitä asiasta palavasti innostuneita Clojure-kehittäjiä on ennestään jo aika monta, mutta lisääkin tarvittaisiin. Voisitko sinä olla seuraava, jota Clojure-kärpänen puraisee ihan kunnolla? Jos vastasit kyllä, laita hakemus tulemaan täältä!