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.

keskiviikko 10. maaliskuuta 2010

ClearCase - vuosisadan huijaus

Jokainen, joka tekee softaa ammattimaisesti, käyttää päivittäin versionhallintatyökaluja. Versionhallinnan idea on sinänsä yksinkertainen. Varmaan jokainen koodaaja tietää, mihin sitä tarvitaan ja miksi. Jos et käytä projekteissasi versionhallintaa, olet IT-totuuden toimituksen silmissä vähän samanlainen surkuhupaisa hahmo kuin maanviljelijä joka ei osaa ajaa traktoria.

Maailma on täynnä loistavia versionhallintasoftia. Esimerkiksi ilmaiseksi (kyllä, täysin ilmaiseksi ja vieläpä avoimen lähdekoodin kera) on saatavilla sellaisia upeita versionhallintajärjestelmiä kuten Git ja Mercurial. Jos uudet hajautetut versionhallintasoftat (joihin Git ja Mercurial kumpikin kuuluvat) tuntuvat liian pelottavilta, on vanha kunnon työjuhta Subversion vielä täysin käyttökelpoinen, joskin siirtymässä vähitellen historiaan. Ja sekin on ilmaista open sourcea.

Koska ilmaistarjonta on alalla niin hyvää, voisi kuvitella, ettei kenenkään kannata käyttää kaupallisia versionhallintatuotteita. Niitä kuitenkin käytetään, koska yritykset haluavat maksaa turvallisuuden tunteesta: pitää olla joku, jota voi uhata sopimussakolla, jos asiat eivät toimi niin kuin haluttaisiin. Kaupallisista versionhallintasoftista suurin osa on täyttä paskaa. Kaikkein huonoin niistä on Rationalin (nykyään osa IBM:ää) ClearCase.

ClearCase on teknisesti Gitiin ja muihin parempiin versionhallintajärjestelmiin verrattuna niin naurettavan huono, ettei tiedä pitäisikö itkeä vai raivota. Miksi? Alla muutamia syitä.

ClearCasen käyttöliittymä on hidas, kankea ja aivan jumalattoman vaikea käyttää verrattuna mihin tahansa kilpailijaan. Joku neropatti (tai Rationalin myyntimies) sanoo tietysti tähän, että et vaan osaa, vähän kato koulutusta Tieturilta ja homma menee kuin vettä vaan. Mutta tämä on täysin nurinkurinen ajattelutapa. Versionhallinta on osa projektin perusinfraa, ei projektin keskipiste. Versionhallinnan pitää olla niin helppo käyttää, että tuntuu kuin sitä ei olisikaan. Jokainen euro joka käytetään versionhallintajärjestelmän tuottamiin sivukustannuksiin (koulutus, ylläpito jne.) voitaisiin käyttää johonkin hyödyllisempään.

ClearCase tuottaa näitä sivukustannuksia paitsi lisenssin hinnan ja henkilöstön koulutuskustannusten muodossa, myös ylläpidon muodossa. Ja kyse ei ole mistään pienestä summasta. Noin sadan hengen projektissa/yrityksessä, jossa käytetään jotakin muuta versionhallintaa kuin ClearCasea, tarvitaan keskimäärin yksi ihminen ylläpitämään versionhallintajärjestelmää. Olen ollut projektissa, jossa versionhallintana oli ClearCase, projektissa oli noin sata koodaajaa ja pelkästään ClearCasen ylläpitotiimissä oli viisi täyspäiväistä työntekijää! Jos ei tämä ole tuhlausta niin mikä sitten on?

Tuhlauksesta puheenollen: ei se ClearCasen lisenssikään mikään halpa ole. Tietääkseni se on markkinoilla olevista versionhallintaratkaisuista kaikkein kallein (voi olla, että on olemassa joku vielä kalliimpi, mutta ei sellaisia ainakaan montaa ole). Parhaat kilpailijat ovat ilmaisia ja niille on saatavilla nykyään myös täysin ammattimaisen tasoista tukea ja neuvontaa miltä tahansa itseään kunnioittavalta alan konsulttiyritykseltä.

Rahallisten kustannusten lisäksi ClearCase hidastaa kehitystyön etanan mateluksi. ClearCasea käyttävän koodaajan työpäivästä voi täysin realistisesti arvioiden mennä puolet ClearCasen kanssa tappelemiseen. Miettikääpä miten paljon se maksaa. Ja kun aika menee turhuuksien kanssa taistelemiseen, työmotivaatio heikkenee ja heikkenee. Ja sitä mukaa, kun motivaatio ja työntekijöiden moraali heikkenee, projektin riskit pullistuvat.

ClearCase on vuosisadan huijaus. Huonompaa hinta/laatu-suhdetta en ole nähnyt missään ohjelmistossa koskaan, voi olla etten ylipäätään missään minkään alan tuotteessa. Jos jotain pitää ihailla, niin Rationalin/IBM:n myyjiä - miten ihmeessä ne saavat tuollaista järjettömyyttä kaupaksi?

Jos olet koodaaja, ja työskentelet ClearCasea käyttävässä projektissa, niin tee itsellesi palvelus. Kokeile jotain muuta versionhallintaa. Totea miten paljon parempi ja halvempi se on. Kerro esimiehellesi. Vaadi parempaa. ClearCasen käyttö on ihmisarvon vastaista.

Jos et usko meitä, niin katso mitä muut kollegat ovat kommentoineet aiheesta Twitterissä.

"Once tried to use ClearCase. That was an unmitigated disaster. You need either a PhD or a lobotomy to use that monstrosity." - Phil Pemberton

"Clearcase fails in so many ways that I find it amazing that anyone actually pays money to use it." - Fredrik Mörk

"Is using Rational Clearcase enough to make me quit my job? No. Having coworkers that think it is "not so bad" certainly could be." - Joseph Hirn

IT-totuuden aika on koittanut

IT-totuuden ensimmäinen numero on tässä!