Mitä Software Craftsmanship tarkoittaa pähkinänkuoressa

Antti Siukola, General manager, teknologisti ja avoimen lähdekoodin puolestapuhuja

02.01.2020

Kuten edellisessä postauksessa kirjoitin, ei Software Craftsmanship ole Agilen korvaaja vaan ne ovat molemmat toisiaan täydentäviä. Kaikessa lyhykäisyydessään Software Craftsmanship:ssä on kyse softakehityksen ammattitaidosta.

Hieman enemmän asiaa avaa muuan Sandro Mancuso, joka kertoo SC:n olevan pitkä matka taitavaksi, siis mestariksi. Se on ajattelutapa, jossa kehittäjä valitsee vastuun omasta urastaan, osaamisestaan, jatkuvasta oppimisesta ja loputtomasta itsensä kehittämisestä työssään. Software Craftsmanship perustuu ammattitaitoon, käytännöllisyyteen, vastuuseen ja ammattiylpeyteen.

Software Craftsmanship on nimi ideologialle tai ajattelutavalle toteuttaa kehitystyö parhaalla mahdollisella tavalla ammattitaitoisesti. Se on yhdistelmä käsityö-, ammatti- ja insinööritaitoa, tiedettä ja taidetta. Monelle se on luovaa työtä. Abstraktia ajattelua.

Kun tämä ajattelutapa otetaan käyttöön jokapäiväisessä työssä, päästään ohjelmistokehityksessä aivan uudelle tasolle. Käytännössä, hienojen puheiden jälkeen, se tarkoittaa oikeiden työkalujen ja tekniikoiden käyttöä oikeassa paikassa. Ennen kaikkea, ammattitaidolla. Teknologiat ja tekniikat valitaan tarpeen mukaan ja ammattilainen pystyy arvioimaan tilanteen ja tarpeet, joilla tuotetaan maksimaalinen arvo tuotteelle tai palvelulle, asiakkaalle.

Ohjelmistoalan käsityöläinen on avoin, teknologia-agnostikko, jakaa tietoa ja taitoa, mentoroi ja haastaa käsityksiä. Hän omaa myös partiopoika-asenteen ja jättää aina koodin siistimmäksi kuin sen saadessaan.

Emme siis tuota ainoastaa toimivaa softaa vaan hyvin tehtyä softaa. Ohjelmistot elävät usein vuosia ja kehittyvät koko matkan ajan, eikä huonosti tehtyä koodia enää uskalleta muuttaa kun kukaan ei tiedä kuinka se toimii. Ei koodi, eikä testit, kerro mikä kaikki hajoaa muutosten jälkeen. TDD on äärimmäisen tärkeä työkalu tämän päivän softakehityksessä.

Software Craftsmanship ei ole pelkkää muutokseen vastaamista vaan jatkuvaa arvontuottoa. Koska on selvää, että ohjelmistokehitys on kallista, täytyy tuotannon vastata liiketoiminnan tarpeeseen. Ei siis pelkästään lisätä ominaisuuksia ja korjata virheitä vaan parannetaan jatkuvasti koodin rakennetta, siistitään, refaktoroidaan. Pidetään huolta, että koodi on laajennettavaa, testattavaa ja helppoa ylläpitää.

Olemme enemmän kuin yksilöitä. Ammattilaisten yhteisö jakaa tietoa sekä mentoroi ja se on Software Craftsmanship:n keskiössä. Olemme vastuussa tulevista ohjelmistoalan ammattilaisista. Ala menee eteenpäin vain jakamalla osaamista ja opettamalla ja tukemalla kokemattomampia kehittäjiä.

Tavoitteena on edetä yhteistyöstä tuottavaksi kumppanuudeksi. Kumppanuus on aina kaksisuuntainen tie, eikä sen tuottamia hyötyjä pidä vähätellä. Aito kumppanuus tuottaa arvoa molemmilla osapuolille ja näkyy ilman muuta liiketoiminnan tuloksessa. Motivoituneet osaajat tuottavat projekteissa tehokkaan ja toimivan lopputuloksen. Se on ammattiylpeyttä, tyytyväisiä asiakkaita ja korkealaatuista softaa.