maanantai 3. toukokuuta 2010

Unelmien Lada 1200

Dokumentaatiolla ei paskaa projektia pelasteta. Tämä on fakta, jota moni ei ymmärrä.

Monet kuvittelevat, että mikä tahansa softa on jatkokehitettävissä, jos se vain on hyvin dokumentoitu. Totta tietysti sikäli, että minkä tahansa softan voi vaikka kirjoittaa alusta asti uusiksi, mutta nyt puhun sellaisesta jatkokehityksestä, jota tehdään vanhaa toteutusta hyödyntäen ja järkevällä hinnalla. Sama koskee bugikorjauksia ja muuta ylläpitotyötä.

Mikään määrä dokumentaatiota ei riitä tekemään täysin paskasta koodista ylläpidettävää tai jatkokehityskelpoista. Koodin pitää olla lähtökohtaisesti hyvää. Koodin hyvyys tai huonous ei ole makuasia sen enempää kuin se, kumpi on parempaa kirjallisuutta, Väinö Linna vai Jallun lukijapalsta.

Softan ja reaalimaailman välinen kuilu

Softa-alalla käytetään paljon vertauksia. Niitä rakastetaan ja vihataan, mutta totuus on, että koodaajan työ liikkuu sellaisella abstraktiotasolla jota tavis ei ymmärrä ilman vertailua reaalimaailman konsepteihin. Tämä on varmasti ollut eräs niistä syistä, miksi olio-ohjelmointi on kehitetty: se tarjoaa "tavalliselle ihmiselle" funktioita ja monadeja helpomman tavan suhteuttaa softan toiminta siihen reaalimaailman prosessiin, jota softa automatisoi.

Kaikkein kuuluisin vertaus on varmasti ns. rakennusanalogia. Pitää tehdä piirustukset hyvin ennen kuin voi ruveta hommiin ja niin edelleen. Jokainen ammattimainen softantekijä suhtautuu tällaiseen vertaukseen suunnilleen yhtä vakavissaan kuin basisti basistivitseihin. Lähinnä tätä epäonnistunutta analogiaa käytetäänkin nykyisin vesiputousmallin perustelemiseen. Ei mennä siihen tällä kertaa, ehkä joskus toiste.

Vaihdetaanpa näppärästi rakennus autoksi, tarkemmin ottaen vuoden 1977 Lada 1200:ksi. Tarkastellaan asiaa nimenomaan dokumentaatiota silmällä pitäen. Katsotaanpa:

Projekti on tehty vähän kiireellä, mutta se on sentään dokumentoitu hyvin

Ostat käytetyn Lada 1200:n. Myyjä vaikuttaa luotettavalta ja lupaa, että auto on uudenveroisessa kunnossa. Mukana tulee vieläpä 1000-sivuinen ohjekirja, jossa neuvotaan kädestä pitäen, miten kuuluu suorittaa jokapäiväiset ja vähemmän jokapäiväiset huoltotoimenpiteet, kuten moottorin vaihto jne.

Ajaessasi ylpeänä kotiin uudella ostoksellasi auto alkaa äkkiä pitää kummallista ääntä. Sitten nenääsi tulvahtaa paksu palavan öljyn katku. Pysähdyt, kiipeät ulos ja tarkastelet autoa lähemmin.

1000-sivuinen ohjekirja Ladan teknisistä tiedoista ja huoltamisesta ei hirveästi lämmitä siinä vaiheessa, kun huomaat että ostamasi auto onkin läpeensä ruosteessa ja aivan absurdin surkeassa kunnossa.

Paljastuu, että Ladaa ei ole huollettu eikä katsastettu ikinä. Jotain saattaa hajota täysin arvaamattomasti milloin ja mistä syystä tahansa: esimerkiksi jarrupolkimesta painaessa saattaa mennä radio itsestään päälle ja pakoputki tukkoon.

Myyjä ei suostu tekemään asialle mitään: kauppakirjassa lukee, että auto myydään siinä kunnossa kuin se ostohetkellä on. Harkitset käräjille haastamista, mutta tulet järkiisi. Se olisi niin raskas prosessi, ettei siitä kovin kummoisille tuntipalkoille kuitenkaan pääsisi.

Vaihdetaan toimittajaa, onneksi oli sitä dokumentaatiota

Istut kotona. Tuijotat ohjekirjaa. 1000 sivua huolellisesti kirjoitettua, informatiivista tekstiä. Hienoja kaaviokuvia kaikista mahdollisista auton osista ja niiden toiminnasta. Pitipä mennä tähänkin halpaan.

Viet Ladan tutulle kaverille katsottavaksi. Hän on ammatiltaan automekaanikko ja erittäin hyvä työssään. Hän avaa konepellin ja purskahtaa nauruun. Hän silmäilee autoa joka puolelta. Pokka ei pidä. Vilkuilet ympärillesi huolestuneena.

Kaveri lopettaa nauramisen, yrittää tavoitella ääneensä myötätuntoa ja sanoo:
- Voi kuule, kyllä sua on nyt kusetettu pahasti. Tää auto on niin paskassa kunnossa ettei tässä nyt mitkään korjaukset auta.

- Mutta kun mä tarvitsen juuri tällaisen Ladan, yrität vängätä. Kai sen nyt ammattimies voi jotenkin korjata?

Kaveri tuumii hetken, virkkoo sitten vaisulla äänellä:
- Voin mä rakentaa sulle uuden samanlaisen, joka toimii oikeasti. Mutta se tulee kalliiksi. Mun täytyy luultavasti hommata tähän kaikki osat. Osa pitää ostaa uutena ja osan mä varmaan saan joltakin kollegalta ilmaiseksi tai teen itse. Mutta siinä on ihan järjettömästi duunia, koska en mä sitä työtäkään ihan ilmaiseksi tee vaikka kavereita ollaankin. Tässä on ihan älyttömästi duunia ja mulla on muitakin kiireitä.
- No paljonko uusi tällainen tulisi maksamaan, jos sä pistät sellaisen kasaan?

Hetken hiljaisuus.
- En mä osaa sanoa tarkkaan. Mutta miljoonista euroista puhutaan.

Viimeinenkin toivonkipinä sammuu

Jähmetyt. Ensin et usko korviasi. Mutta kaveri sanoi sen ihan vakavalla naamalla. Siis oikeasti, mitä vittua? Seisot paikallasi suolapatsaana. Pidättelet itkua.

Äkkiä muistat ohjekirjan, jota myyjä niin maireasti kaupitteli. Pieni toivon pilkahdus.
- Hei, mulla on tällainen ohjekirja! Yli tuhat sivua ja tosi hyvin kirjoitettu. Tässä selitetään ihan tarkkaan kaikki tällaisesta autosta. Eikös se työ ole helpompaa tän kanssa?

Kaveri ottaa ohjekirjan käteensä ja selailee sitä hetken hajamielisesti.
- No jaa. Voihan tästä jotain apua olla, mutta ei se tosiasioita muuta. Paska mikä paska. Sori vaan. Mä tiedän että tää on sulle ikävää, mutta ei paskasta saa kermakakkua millään reseptillä. Eikä tästä autosta saa toimivaa millään ohjekirjalla.

Menet baariin ja vedät kolmen promillen kännin. Soitat kännissä Ladan myyjälle ja latelet tappouhkauksia. Siitä tulee vähän parempi olo.

Horjuessasi sulkemisen jälkeen kotiin päin näet tien vierellä sortuneen talon ja pihalla kaksi miestä riitelemässä. Toinen miehistä heiluttaa käsissään pinkkaa rakennuspiirustuksia. Hymähdät ja jatkat matkaa.