Laatu 2020

15.04.2020

Me Bytecraftilla näemme ohjelmistokehityksen nykyisissä toimintamalleissa perustavanlaatuisia ongelmia laatuperspektiivistä katseltuna. Esittelemme tässä ja tulevissa blogeissamme oman laatumääreemme, Laatu 2020, jossa jaamme laadun useaan alakohtaan. Siinä laatua tarkastellaan mm. ohjelmiston sisäisellä, ulkoisella ja välillisillä vertailuilla ja mittareilla. Laadun kynnyskysymyksiä ovat erilaiset tuotteen tai palvelun arvontuottoon vaikuttavat asiat, kuten kehityksessä käytetyn arkkitehtuurin kustannusvaikutukset kehityshetkellä sekä jatkokehitysvaiheessa tai esimerkiksi toteutuksen tuomat hyödyt kustannussäästöinä ja myynnin tehostumisena.

Kun arvioidaan softakehityksen laatua, täytyy se aloittaa ruohonjuuritasolta joka tarkoittaa kehityksen koko prosessia ihmisistä lähtien. Kehitystiimin kokoaminen juuri oikeista ihmisistä on haastavaa mutta palkitsevaa. Kokonaisuuden hallinta vaatii sen, että kaikki tiimissä ymmärtävät kokonaisuuden sekä tavoitteet ja tiimin sisällä täytyy vallita luottamus. Kommunikaatioon valitaan sopivat työkalut ja niitä käytetään. Asiakas ja loppukäyttäjät osallistetaan projektiin alusta asti.

Vuonna 2020 lähes kaikki ovat kuulleet ketteristä menetelmistä, Scrumista sekä Kanbanista ja tuntevat niiden tuomat edut tai ainakin väitteet niistä. Jo aiemmissa blogikirjoituksissa kerroin Agilen ongelmista ja eroista Software Craftsmanship:iin (SC), sekä niiden toisiaan tukevasta mallista. Keskitytään siksi hetki itse softakehityksen praktiikoihin.

Mikään tässä kerrottu ei ole uutta. Emme ole keksineet pyörää uudelleen. Työkalut ja praktiikat ovat olleet olemassa jo vuosikymmeniä ja softakehityksen haasteet on tunnettu vielä pidempään. Fred Brooks kirjoitti ongelmista jo vuonna 1975 teoksen The Mythical Man-Month, jossa kuvataan niitä haasteita, joita miltei jokaisessa projektissa kohdataan mutta niitä liian usein yritetään korjata tehottomilla mutta helposti intuitiivisiksi mielletyillä menetelmillä, kuten lisäämällä käsipareja projektiin. Vaikka kirjan esittelemät työkalut eivät olisikaan kestäneet aikaa ihan 2020-luvulle asti, tarjoaa se hyvän näkymän ja historian ongelmien jatkuvuuteen ellei ratkaisuja etsitä aktiivisesti.

Merkittävimpiä ohjelmistosuunnittelijoiden työn kannalta laatuun ja tuottavuuteen vaikuttavia praktiikoita ovat Kent Beckin Chryslerilla 1990-luvun loppupuolella kehittämät Extreme Programming:n (XP) monelle jo tutut tekniikat, kuten Test-Driven Development, Continuous Integration ja Refactoring. Monet ohjelmistokehittäjät ovat jo omaksuneet nämä työkalut osaksi jokapäiväistä työtään mutta tämä kehityssuunta on vielä kesken.

Näillä mainituilla työkaluilla voidaan vaikuttaa merkittävästi ohjelmiston sisäiseen laatuun, joka voidaan mieltää esimerkiksi laadukkaaksi koodiksi, jota on helppo jatkokehittää ja näin säästää aikaa sekä rahaa. Softan ulkoisen laadun merkitys on kuitenkin yhtä suuri. Sitä kuvaavat sellaiset avainaiheet kuin käytön mukavuus ja miellyttävä ulkonäkö, liiketoiminnan tukeminen ja mahdollistaminen, tuoton ja tuottavuuden kasvattaminen sekä toimintavarmuus. Ulkoisen laadun ytimessä on loppukäyttäjä ja liiketoiminta, jota ohjelmiston on tarkoitus palvella.

Kun ohjelmistolla luodaan liiketoimintaa, on se silloin kenties suurimmassa avainasemassa koko liiketoiminnan elinvoiman kanssa. Tänä päivänä erottuminen esim. verkkokauppamarkkinoilla ei enää onnistu vain sillä, että olet olemassa. Moni suuri onnistui kasvamaan nykyiselleen vain tekemällä kauppaa verkossa, koska kilpailua ei ollut. Tänä päivänä uusien asiakkaiden saaminen uuteen verkkokauppaan vaatii merkittäviä kilpailuetuja, kuten helppokäyttöisen ja laadukkaan käyttöliittymän, vaivattoman ostamisen, oikeiden tuotteiden automaattisen tarjoamisen, kattavan maksutapavalikoiman sekä hyvien logistiikkakumppaneiden käytön.

Laatu 2020 mallilla haluamme yhdistää elinkaariajattelun ja laadukkaan tekemisen perustyökalut ohjelmistotuotannon kokonaisuuteen ja istuttaa ajattelumallin mahdollisimman monen ohjelmistokehittäjän ja asiakkaan jokapäiväiseen työhön. Emme usko laadun olevan yhteen muottiin istutettava käsitys tai määritelmä, vaan jatkuvasti kehittyvä tapa tarkastella asiaa monista eri näkökulmista sekä useilla eri mittareilla. Laatu 2020 on työkalu.

Kirjat tähän blogiin liittyen.

The Mythical Man-Month: Essays on Software Engineering
Extreme Programming Explained: Embrace Change
Antti Siukola

Antti Siukola