MyFondia VirtuaaliLakimies
17. tammikuuta, 2014

Ketterä ohjelmistokehitys – ketterä sopimus?

Viimevuosien kestoaiheita ohjelmistoalan seminaareissa ovat olleet ns. ketterää ohjelmistokehitystä (”agile software development”) käsittelevät esitelmät. Ketterällä ohjelmistokehityksellä tarkoitetaan mallia, jossa

projektia ei aloiteta laatimalla mahdollisimman tarkka ja yksityiskohtainen kuvaus tavoiteltavasta lopputuloksesta, vaan keskitytään toteuttamaan asiakkaan tarpeet riittävän hyvin täyttävä ohjelmisto asiakkaan ja toimittajan vuorovaikutteisella yhteistyöllä.

Jos projektin toteuttamistavaksi on valittu ketterä menetelmä, tulisi sen näkyä myös toimittajan ja asiakkaan välisessä sopimuksessa. Ketterän ohjelmistoprojektin toteutus perinteisellä ”vesiputous”-sopimuksella on tuhoon tuomittu idea.

Syy, miksi harvoin törmään hyvään agile-sopimukseen löytynee lakimiesten perinteisestä tavasta mieltää sopimusten merkitys. ”Hyvän” lakimiehen ensisijainen tavoite on turvata asiakkaansa etu parhaalla mahdollisella tavalla kaikissa mahdollisissa tilanteissa. Vanhan lakimiesten viljelemänsanonnan mukaan 'paras sopimus on sellainen, johon kumpikaan ei ole tyytyväinen'. Ei kovin win-win-henkistä.

Perinteisesti lakimies sovintoneuvotteluissa pyrkii varmistamaan, että hänen asiakkaansa saa täsmälleen sovitun lopputuloksen, sovitussa ajassa ja sovittuun hintaan. Mikäli näin ei tapahdu, lakimies huolehtii, että toimittaja maksaa projektin epäonnistuessa vahingonkorvausta asiakkaalle. Näistä seikoista sopimiseen käytetään suhteettoman paljon aikaa sen sijaan, että keskityttäisiin varmistamaan, miten asiakas saa hänen tarpeisiinsa soveltuvimman tuotteen tai palvelun, ennalta arvioitavilla kustannuksilla ja siten, että asiakas pystyy projektin edetessä vaikuttamaan lopputulokseen ja ymmärtää muutosten vaikutuksen aikatauluun ja kustannuksiin.

Ketterässä projektissa mitään perinteisistä ”kulmakivistä” (lopputulos, hinta, aikataulu) ei pystytä lyömään lukkoon siten kuin lakimiehet sen haluaisivat. Projektin alussa ei ole olemassa määriteltyä tuotetta ja ominaisuuslistaa, kustannuksista voidaan esittää vain tavoitteita tai arvioita ja aikataulu riippuu toimittajan ja asiakkaan yhdessä sopimasta projektin etenemisestä. Jos totta puhutaan, eivät nämä kulmakivet ole selviä perinteisissäkään ohjelmistoprojekteissa, osapuolet vain elävät siinä uskossa, että näin on. Ketterässä projektissa osapuolet sen sijaan hyväksyvät tietyn epävarmuuden aikataulusta, kustannuksista ja lopputuloksesta ja keskittyvät enemmän projektin hallintaan ja toimivan lopputuloksen saavuttamiseen.

Ketterän projektin sopimuksen tulee tukea projektin toteuttamista ja osapuolten vuorovaikutusta, ei niinkään keskittyä siihen, miten turvataan maksimaalisesti osapuolten edut ja minimoidaan riskit. Perinteisessä ohjelmistoprojektissa asiakkaan riskiä kasvattaa se, että lopputulosta päästään arvioimaan vasta, kun koko projekti on toimitettu. Vasta tällöin saatetaan havaita, ettei lopputulos ollut lainkaan se,mitä tavoiteltiin, aikataulu venyi ja kustannukset tuplaantuivat.Ketterässä ohjelmistoprojektissa projekti voidaan keskeyttää jokaisen iteraatiokierroksen jälkeen. Koska iteraatiokierrokset ovat tavanomaisesti vain muutaman viikon mittaisia, asiakkaan riski menetetyistä kustannuksista ja venyneestä aikataulusta on huomattavan pieni eikä sopimusneuvotteluissakaan tarvitse keskittyä neuvottelemaan vastuukysymyksistä ainakaan siinä määrin kuin perinteisissä projekteissa.

Mikseivät sitten paljon käytetyt kiinteähintainen tai aikavelotteinen projektisopimusmalli toimi ketterässä ohjelmistokehityksessä? Kiinteähintaisessa projektissa on ongelmana se, että jos hinta lukitaan, toimittaja halunnee lukita myös sopimuksen kohteen. Agile-projektissa sopimuksen kohdetta ei voida lukita, se tulee elämään projektin edistyessä. Puhtaasti aikavelotteisissa sopimuksissa ongelmana on se, että vain asiakkaalla on kontrollioikeus projektin etenemiseen ilman, että sillä olisi velvollisuutta vuorovaikutteisesti toimittajan kanssa osallistua ja antaa palautetta toimittajalle projektin edetessä. Ketterän ohjelmistotoimituksen yksi pääperiaatteista on toimittajan ja asiakkaan tiivis vuorovaikutus projektin aikana.

Hyvä agile-sopimus voi olla yhdistelmä kiinteähintaisesta ja aikavelotteisesta projektisopimuksesta siten, että sopimukseen myös kirjataan agile-kehityksen perusajatukset. Projekti voidaan aloittaa aikaveloitteisella mallilla ja tietyn vaiheen saavuttamisen jälkeen se voidaan muuttaa kiinteä- tai tavoitehintaiseksi. Näin kummankin osapuolen riskit pienenevät: toimittaja pystyy paremmin arvioimaan toteutuvat kustannukset ja asiakas saavutettavan lopputuloksen sekä kustannukset. Todellinen win-win-tilanne siis.