Me emme tee virheitä. Elämässäkään.

Katselin viikonloppuna vanhoja Kummeleita. Musacornerissa vieraina olivat progemuusikot Jussi Pattitussi ja Kikka Korea. He eivät tee lainkaan virheitä. Elämässäkään.

Ilmeisesti ammatistani johtuen ajatukset joutuivat sivuraiteille ja Kummelielämys oli pilalla. Keskustelen paljon ohjelmistokehittäjien kanssa ja toisinaan törmään muusikkoduon ajatusmalliin ihan oikeasti. Testausta ei tarvita, sillä tavoitteena on tehdä riittävän virheetöntä jälkeä jo koodatessa. Eli leipoa laatu sisään jo alkumetreillä.

Minusta laadun tavoittelu on aina hyvä idea. Usein vain unohtuu, että laatu on aina ihmisistä lähtöisin ja laadukkaiden lopputulosten tuottamiseen ihminen tarvitsee aina oppimisen. Täytyy oppia jo tehdyistä virheistä ja täytyy oppia välttämään uusia virheitä.

Vasta yksi jatkuvan oppimisen seurauksista on, että koodaaja tekee vähemmän virheitä.

Mielestäni bugittoman koodin tuottaminen on kuitenkin utopia. Lähelle voi toki päästä, jos pystyy investoimaan jumalaisiin koodaajiin, joilla on eliniän verran kokemusta juuri tästä kehitysympäristöstä, työn alla olevasta tuotteesta ja tuotteen liiketoiminta-alueesta. Käytännössä siis ihmisiä, jotka ovat jo oppineet kaiken, mitä opittavissa on. Sellainen investointi vain tulee helposti hirveän kalliiksi.

Mikäli käsissä sattuu olemaan sopivasti rahaa ja oikeita ihmisiä, niin laadun leipominen tuotekehitykseen voi onnistua. Täytyy vain osata vastata kysymykseen “Miten?”. Miten tuotekehitystiimin oppimiskäyrästä saadaan jyrkästi nouseva? Vastaus on itse asiassa melko yksinkertainen.

Ainoa tapa nopeaan oppimiseen on nopea palaute.

Todellisuudessa suurin ongelma matkalla kohti virheettömämpää maailmaa on ego. Vaatii nimittäin ihan älyttömästi pokkaa myöntää: Bugien päätymistä lopputuloksiin ei pysty mitenkään välttämään, jos rahaa ja aikaa on rajallisesti.

Kun tuon tosiasian on pystynyt kohtaamaan, niin loppumatka onkin helppo. Tarvitsee vain löytää sopivimmat välineet ja menetelmät nopean palautteen toteuttamiselle. Muusikkoduon tapauksessa suoritukset katsottiin videolta hidastettuna ja otettiin opiksi.

Ohjelmistokehityksessä voi hyödyntää esimerkiksi koodin katselmointi- ja tarkastusmenetelmiä, yksikkötestausta sekä jatkuvaa bugien metsästystä välittömästi tuotekehityksen tukena. Äkkiä näissä kaikissa palautemekanismeissa onkin kysymys testauksesta.

Tulosta syntyy, kun hyväksyt tosiasiat: Tee rohkeasti virheitä, huolehdi niiden nappaamisesta ajoissa ja varmista niistä oppiminen.