Software craftsmanship manifesto

Mitä on Software Craftsmanship?

Me puhumme paljon software craftsmanshipistä ja termi esiintyy niin verkkosivuillamme kuin erilaisissa materiaaleissakin. Ensinäkemältä tämä saattaa vaikuttaa hyvältä mainoslauseelta, jolla pyrimme korostamaan käsityöläisen tarkkuutta toteutuksissamme. Tämä pitää toki paikkaansa, mutta taustalla on myös laajempi tarina software craftsmanship -termin ideologiasta.

Software Craftsmanship on vuosituhannen vaihteessa ohjelmistokehittäjien toimesta kehitetty lähestymistapa, joka pyrki vastaamaan sen hetkisiin ongelmiin ohjelmistokehityksessä. Software Craftsmanship (SC) on ohjelmistokehityksen ideologia, joka haastaa näkemään ohjelmistokehityksen perinteistä mekaanista insinöörityötä laajempana kokonaisuutena. SC:ssä korostetaan ohjelmistokehittäjien ammattitaitoa, kokemusta, kommunikaatiota ja laadukkaan ohjelmistokehityksen ymmärtämistä.

Software craftsmanship manifesto

Historia

90-luvulla ohjelmistokehitys nähtiin hyvin staattisena ja matemaattisena insinöörialana. Ohjelmistoprojektit olivat mekaanisia ja systemaattisia kokonaisuuksia, jotka katsottiin olevan “helposti” toteutettavissa, kunhan ne vain määriteltäisiin ja suunniteltaisiin kattavasti ennen toteutusta. Prosesseihin, määrittelyyn ja suunnitteluun kulutettiin valtavia määriä aikaa ja kuviteltiin, että näin systemaattisesti suoritettuna ohjelmistoprojektit saadaan onnistuneesti maaliin, kuten sillan rakennus konsanaan. Ongelmaksi kuitenkin muodostui, että ohjelmistokehitysprojektit ovat valtavia ja monimutkaisia kokonaisuuksia. Niiden määrittely ja suunnittelu etukäteen siten, että toteutus olisi aina lopputulokseltaan sama, on käytännössä mahdotonta. 

Miksi tämä sitten on mahdotonta? Se on mahdotonta siksi, että ohjelmistokehitystä tekevät ihmiset, jotka pystyvät käsittelemään vain tietyn määrän asioita kerralla, ymmärtävät asioita eri tavalla ja tekevät myös virheitä. Täydellisenkin määrittelyn ja suunnitelman pohjalta saadaan siten erilaisia ja virheellisiä lopputuloksia. Toisaalta täydellistä määrittelyä ja suunnitelmaakaan ei koskaan tulla saamaan, koska niidenkin tekijöinä ovat erehtyväiset ihmiset.

Software Craftmanshipin nousu

2001 vuonna Pete McBreen julkaisi teoksen “Software Craftsmanship: The New Imperative”, jonka pääideana oli saada ihmiset ymmärtämään, että ohjelmistokehitys ei ole (pelkästään) mekaanisiin tehtäviin jaettava kokonaisuus. McBreen esitteli perinteisen ohjelmistokehitysmallin tilalle vaihtoehtoista Software Craftsmanship -mallia, jonka keskiöön nousevat ohjelmistokehittäjät eli ihmiset.

SC haastaa näkemään ohjelmistokehityksen mekaanista insinöörikehitystyötä laajempana kokonaisuutena. SC:ssä ohjelmistokehitys nähdään kokonaisuutena: 

  • Joka on luovaa työtä, jossa yhdistyy
    • vahva ammattitaito 
    • perinteiset insinööritaidot
    • matemaattiset- ja tieteelliset taidot
    • kokemuksen myötä tulevat “käsityöläistaidot” – kokemuksen kautta kehittynyt ymmärrys ja osaaminen
  • Jossa korostetaan ihmisten välistä kommunikaatiota ja asiakasvaatimusten ymmärrystä
  • Jossa korostetaan yksilöiden taitojen ja kokemuksen merkitystä
  • Jossa ei toimiteta VAIN toimivaa ohjelmistoa, vaan myös hyvin rakennettua ohjelmistoa 

Kovien teknisten arvojen rinnalle nostettiin siis pehmeämpiä ja yksilön ominaisuuksia korostavia arvoja. Samalla pyrittiin korostamaan erityisesti ohjelmiston ja työn laadun merkitystä.

Software Craftsmanship Monadilla

Monadilla on Craftsmanship-tyyppinen ajattelutapa liittyy kaikkeen tekemiseen ja se onkin yksi perusarvoistamme. 

Meillä (Software) Craftsmanship näkyy seuraavasti:

  • Vahva halu tehdä korkealaatuisia ratkaisuja: Haluamme rakentaa laadukkaita ohjelmistoratkaisuja hyviä menetelmiä hyödyntäen. Me tiedämme, että teknisesti laadukkaampi ohjelmisto on joustavampi muutoksille ja kestää aikaa – näin säästyy rahaa jo lyhyelläkin aikavälillä, puhumattakaan tuotteen koko elinkaaren kustannuksista.
  • Läpinäkyvä ja avoin kommunikointi kaikille osapuolille: Toimiva yhteistyö niin asiakkaiden kuin tiimin kesken perustuu luottamukselle. Sen keskeisin rakennusaine on mielestämme rehellinen ja avoin kommunikaatio. Siksi toimimme läpinäkyvästi ja panostamme avoimuuteen toiminnassamme. 
  • Jatkuva kehittyminen ja kouluttautuminen: Vaikka ohjelmistotekniikan perusolettamat ovat pysyneet vuosikymmeniä samana, täytyy kuitenkin muistaa, että ohjelmistokehityksessä käytettävät tekniikat ja laitteet kehittyvät nopeassa tahdissa, joten niin kehitymme mekin: ylläpidämme ja kehitämme jatkuvasti osaamistamme, sekä pysymme tietoisina mitä maailmalla tapahtuu. Näin voimme tarjota asiakkaillemme parasta. 
  • Tiedon jakaminen ja mentorointi: Koemme arvokkaaksi taidot, joita voimme oppia toisiltamme. Kuten eräs tiimimme jäsen totesi: “muiden korkean osaamisen rinnalla pääsee itsekin kehittymään”. Katselmoimme toistemme koodia ja jaamme tietoa toisillemme esimerkiksi Tekniikkatorstai-tapahtumassa, jossa jokainen voi alhaisella kynnyksellä esittää jotain uusia (tai vanhoja) ohjelmistokehitykseen liittyviä juttuja. Korona-aikana halukkaat ovat voineet esitellä uusia mielenkiintoisia palveluita tai muuta aiheeseen liittyvää myös etänä “ATK-kahveiden” merkeissä. Harjoittelijoillemme ja kesätyöntekijöillemme järjestämme Monad.bind(trainee) -koulutusohjelman. Tavoitteena on opettaa uusille työntekijöille sellaisia taitoja, joita ei opi koulunpenkillä. 
  • Ammattiylpeys ja ylpeys oman työn laatuun: Osana monadilaisuutta pidämme tärkeänä, että on kiinnostunut oman työnsä laadusta, ja on ylpeä sekä omista että yhteisistä onnistumisista.
  • Vastuun kantaminen ja rehellisyys: Aina ei mene ihan putkeen. Oikea ammattilainen osaa kuitenkin sanoa, milloin on tehty virhe ja kantaa siitä vastuun. Tuomme myös rehellisesti esiin jo hyvissä ajoin mahdolliset epävarmuustekijät projektin tai toteutuksen näkökulmasta. Lähtökohtaisesti uskomme, että läpinäkyvä yhteistyö ennaltaehkäisee ja vähentää mahdollisten ongelmien muodostumista.

Meihin jokaiseen on iskostunut mielikuva käsityöläisen tekemästä uniikista tuotteesta. Miellämme sen harkiten suunnitelluksi ja vahvalla ammattitaidolla rakennetuksi. Muistat varmasti Pauligin kahvimainokset ja lopussa lausahduksen “Tunteella ja taidolla”. Juuri siten meillä halutaan rakentaa ohjelmistoja. Siksi software craftmanship istuu meille täydellisesti.

Kirjoittanut Aki Haapamäki