Kun tämä blogi aloitettiin oli Suomessa paljon julkista keskustelua ohjelmistoprojektien onnistumisesta. Sitten keskustelu kuitenkin loppui – olivatko IT-hankkeet alkaneet onnistua? Nähtävästi eivät olleet, koska nyt saamme taas lukea IT-hankkeiden turmiollisuudesta, kun VR ei saa myytyä lippuja kaikilla halukkaille.
Ensimmäinen reaktio oli tietysti syyllisten etsiminen. Lopulta joku lipsautti, että järjestelmän ovat tehneet Accenture ja Tieto. Sitten VR:n sisältä otettiinkin ongelmista vastuuta. Tänään Aamulehdessä oli mielenkiintoinen artikkeli, jossa oli haastateltu Börje Uimosta ja Reino Myllymäkeä, jotka ovat kirjoittaneet kirjan IT hankkeiden epäonnistumisesta. Artikkelissa he tuovat esille suurten IT hankkeiden epäonnistuvan vielä paljon pieniä useammin.
Kuka on syyllinen?
Tähän on minun mielestäni olemassa aivan selvä ja oikea vastaus: kaikki projektin osapuolet ovat syyllisiä. Ihan kaikki. Ei mikään merkittävä hanke voi onnistua jos projektin osapuolet kantavat vastuuta vain oman osuutensa onnistumisesta. Kaikkien osapuolten on kannettava vastuuta koko projektin onnistumisesta. Niin se vaan on.
Ja hienoa onkin, etteivät lipunmyyntihankkeen osapuolet ole kauheasti toisiaan julkisuudessa haukkuneet. On aika vaikeaa uskoa, ettei kuka tahansa osapuolista olisi voinut toimia paremmin ja siten ehkäistä ongelman syntyä.
Miksi kuormitusta ei osattu arvioida oikein?
Teknisenä ihmisenä minulle mielenkiintoisinta on, miksi järjestelmä ylikuormittui, vaikka asiakkaiden määrä on varmasti hyvin tiedossa. Tästäkin aiheesta on jo kirjoitettu ja vastaus ainakin tuntuu uskottavalta: uusi järjestelmä kannustaa hintavertailuun ja siten yksi asiakas käyttää järjestelmää paljon enemmän kuin ennen.
Mikä meni pieleen?
Mikael Aro toteaa YLElle, että viiden kuukauden testijakso ei ollut riittävä. On tietenkin helppoa todeta, että Aro on oikeassa, mutta toivottavasti hän ei tarkoita, että seuraavaan projektiin järjestetään 12 kuukauden testijakso. Järjestelmä on pakko olla mahdollista testata viidessä kuukaudessa ja, kun testauksessa löytyy vakavia ongelmia, ei järjestelmää tietenkään oteta käyttöön. Jos järjestelmää ei ole mahdollista testata viidessä kuukaudessa, sellaista järjestelmää ei pitäisi ollenkaan tehdä – se on yksinkertaisesti liian suuri.
Suuria järjestelmiä voidaan kyllä rakentaa, mutta ne pitää rakentaa osissa. Jokainen osa voidaan sitten rakentaa erillisenä ja testata alle viiden kuukauden aikana.
Tämä on asia, jossa meillä ohjelmistosuunnittelijoilla muilla olisi opittavaa. Ihan liian helposti ratkaisu kaikkeen on järjestelmän uudelleenkirjoittaminen. Mutta toisaalta myös johtoporras rakastaa suuria hankkeita, joissa voidaan pitää paljon palavereja. On todella upeaa laittaa “kaikki järjestelmät kerralla kuntoon!” Olemassa olevaan järjestelmään tehtäville jatkokehityshankkeille on myös vaikeaa saada avoimen kilpailutuksen kautta kiinteää hintaa.
Yksi askel kerrallaan
Valtavan järjestelmän uusimisessa on usein mahdotonta onnistua: kukaan ei enää tiedä, miksi käytössä oleva järjestelmä toimii niin kuin se toimii, joten kukaan ei osaa määritellä uuteen järjestelmään kaikkia tarvittavia toimintoja. Kun uusi järjestelmä kuitenkin yritetään määritellä,
- tulee määrittelyyn mukaan paljon turhia ominaisuuksia, jotka entisestään kasvattavat järjestelmän kokoa ja
- siitä puuttuu paljon ominaisuuksia, joita nykyisessä järjestelmässä ei edes tiedetty olevan.
Paras perustelu järjestelmien jatkokehittämiseen on jatkuva muutos. Vaikka järjestelmien uusiminen veisi vain viisi vuotta ja vaikka se onnistuisi, mikä organisaatio voi pitää toimintatapansa samoina viiden vuoden ajan? Nykyään toiminta muuttuu koko ajan esimerkiksi lainsäädännön muuttuessa. Tämä tekee uudelleenkirjoittamisen mahdottomaksi, koska järjestelmän määrittely elää sen rakentamisaikana niin paljon, ettei se koskaan tule valmiiksi.
Näin ollen suuret järjestelmät on pakko pilkkoa osiin jolloin niitä voidaan uusia osa kerrallaan. Jokaiseen osaan on myös säilytettävä mahdollisuus jatkokehitykseen. Tämä ei ole helppoa tai kivaa tai edes tehokasta, mutta se on ainoa keino saada valtavat tietojärjestelmät pysymään käyttökelpoisina.
Mikä ei mennyt pieleen?
Reino Myllymäki tuo Aamulehden artikkelissa esille, että VR:llä on aikaisemmin ollut erittäin tiukka seuranta IT hankkeissa ja miettii olisiko tämä seuranta nyt löystynyt. Tiukalla seurannalla olisi ehkä voitu varmistaa, että kuormitustestausta tehdään tarpeeksi, ennen järjestelmän käyttöönottoa.
Tiukka seuranta kuitenkin myös ajaa kohti selkeältä tuntuvia, suuria uudelleenkirjoitushankkeita, joilla Myllymäen mukaan on taas suurempi mahdollisuus epäonnistua. Lisäksi tiukka seuranta on usein taloudellista ja pintapuolista: kukaan ei osaa seurata sitä, miten ohjelmistosuunnittelijoiden työ oikeasti etenee. Omassa kokemuksessani olen havainnut, että projektit joiden aloituskokouksessa verrataan projektin organisaatiota armeijaan, epäonnistuvat 100% todennäköisyydellä.
