Keskustelua hyvästä koodista
02 | 2024 Tomas Günther, Ratkaisuarkkitehti & Fullstack kehittäjä
Muutama kuukausi sitten Slack-keskustelussa heitin puolivitsillä idean, että voisimme seuraavaksi pitää koodifilosofiaretriitin. Ajatus osui useamman kollegani sydämeen. Myöhemmin syksyn Kipinä Symposiumissa puhuimme tulevaisuusaiheista, kuten firman kehityssuunnista sekä tekoälystä, mutta myös filosofointi koodista tuli esille. Jotkut jopa haaveilivat, että voisimme kertoa maailmalle julkilausumalla, miten ohjelmistoja kehitetään.
Tammikuussa kokoonnuimmekin lähes puolen Kipinän voimin yhdeksi päiväksi neuvotteluhuoneen pöydän ääreen vain puhumaan ohjelmoinnin perusasioista ja laadukkaasta digikehityksestä. Keräsimme etukäteen käsiteltäviä aiheita, joista rajasimme päivän puheenaiheiksi "Hyvän koodin tunnusmerkkejä 2024" sekä "Koodin elinkaari". Keskustelu soljui eteenpäin hyvässä hengessä kokemuksia ja ajatuksia jakaen sekä toisten ideoita jatkaen. Tämä on ihan odotettavaakin, kun ihmisillä on useiden vuosien kokemus erilaisista teknologioista, aloista, asiakkaista, projekteista, onnistumisista ja epäonnistumisista.
Hiukan kyllä yllätti, että lounastauko mukaan lukien vietimme kuusi tuntia siinä pöydän ympärillä asioita pyöritellen ja pallotellen. Aika tuntui silti kuluvan kuin siivillä ja keskustelu olisi varmasti voinut jatkua usean päivän ajan samassa hengessä. Monista asioista olimme samaa mieltä, mutta muutamista toki tuli eriäviä mielipiteitä.
Esimerkiksi koodin kommentoimattomuus herätti suuria tunteita, kun taas toisaalta ajateltiin, että hyvä koodi ei tarvitse erityisesti kommentointia. Myös tämä ajatus jakoi ainakin aluksi mielipiteitä: Tekijä sokeutuu koodinsa kompleksisuudelle - kirjoittajan sijaan koodin laadun voi parhaiten määrittää sitä lukeva henkilö.
Ajan käyttäminen tällaiseen on varmasti monessa mielessä hiukan outoa. Firman tulos heikkenee, kun asiantuntijat eivät ole laskutettavassa työssä vaan filosofoimassa itsestäänselvyyksistä neuvotteluhuoneessa. Tällaisesta lienee kuitenkin hyötyä pitkällä aikavälillä. Yhtäältä voisi ajatella, että tämä on virkistävää tyky-toimintaa illan saunomisineen. Toisaalta ajatusten ja kokemusten jakaminen luo yhteenkuuluvuutta välillemme, mikä vahvistaa yritystä monella tasolla.
Toki näistä asioista keskustelemme elektronisissa kanavissakin, mutta kontekstin vaihto elävöittää tietoa ja herättelee ajatuksia eri tavalla. Uskoisin, että perusasioiden ajattelu ja niistä puhuminen parantavat ammattitaitoammekin. Muillakin aloilla kuten urheilussa tai musiikissa arvostetaan ja harjoitetaan perusteita vielä huipullakin. Tai ehkä erityisesti huipulla ymmärretään niiden tärkeys.
Esimerkiksi TV-sarjassa The Bear chicagolainen huippukokki Berzatto perii veljensä kortteliravintolan. Ravintolan toiminta on kaoottista, talous on kuralla ja työntekijät stressaantuneita. Berzatto tulee toimintaan mukaan ja opettaa Michelin-ravintoloiden tapoja: oman työn, kollegoiden ja asiakkaiden kunnioittamista, yksityiskohtien tärkeyttä, laatuun keskittymistä ja järjestelmällisyyttä. Perusasioista lähteminen tuossakin ympäristössä tuottaa työntekijöille rauhallisen ja inspiroivan työympäristön sekä asiakkaille laadukkaan lopputuloksen.
Samanlaiset asiat ovat tärkeitä myös ohjelmistohankkeissa, sillä ihmisiä me ohjelmistoihmisetkin olemme. Automatisoituihin testeihin panostaminen luo kehittäjille luottamusta tehdä muutoksia koodiin. Kunnioitus motivoi ja rentouttaa kohti parempaa tulosta. Yksityiskohtien ja luovan ongelmanratkaisun arvostaminen parantaa laatua. Selkeät tavoitteet ovat tärkeitä. Mutkaton kommunikointi ja ammattimaiset, järkevät käytännöt ja työkalut tehostavat toimintaa ja helpottavat tavoitteiden saavuttamista. Kipinällä kutsumme tätä tapaa toimia Senior Tech Leadershipiksi, jossa valmentava ote digikehitykseen tuo enemmän arvoa asiakkaillemme.
Tässä vielä lyhyesti omat ajatukseni hyvän koodin tunnusmerkeistä:
tarkoituksenmukaista ja virheetöntä
lukijalle ymmärrettävää ja muutoksien teko on helppoa
tehokasta eli vihreää
yksikkötestattavaa
* Kirjavinkki: John Ousterhout - A Philosophy of Software Design
PS. Vaikka tekoälytyökalut ovatkin kiinnostavia, yllä oleva on luomutekstiä Espoosta.