Ohjelmistokehityksestä puhuttaessa harvoin pystyy välttämään termejä Lean tai Agile, tai kotoisampaa termiä ketterä tai ketterä kehitys. Ketterä kehittäminen onkin yksi suosituimmista tavoista toteuttaa nykypäivänä ohjelmistokehitystä.
Mutta mitä ketterät menetelmät tai ketterä kehittäminen tarkalleen ottaen tarkoittavat ja onko näillä käytännön merkitystä vai ovatko ne vain alalle pesiytynyttä ammattijargonia, jota IT-yrityksien mielestä on kiva viljellä?
Aloitetaanpa sillä, että kaikki aiemmin mainitut termit liittyvät projektinhallintaan. Projektinhallinta on tehokkuuden kannalta melkoisen merkittävässä osassa, eli ihan pelkkää sanahelinää nämä eivät sentään siis ole.
Alla vielä nopeat pikalinkit artikkelin aiheen teemoihin:
Ketterät menetelmät
Ketterät menetelmät, ja englanninkielinen versionsa agile development, nähdään eräänlaisena kattoterminä projektinhallinnan suunnalle, joka sai alkunsa vuonna 2001 julkaistusta Agile Manifestosta. Ketterän kehittämisen vaihtoehtona pidetään myös vesiputousmallista projektityöskentelyä.
Ketterät menetelmät ovat malli, jossa työ etenee pienissä osissa ja lyhyissä ajanjaksoissa eli iteraatioissa. Jokainen osa toistaa vesiputousmallista tutun kaavan (suunnittelu, toteutus, testaus ja toimitus). Jokaisen osan päätteeksi asiakas saa siis käsiinsä toimivan version tuotteesta. Ketterien menetelmien tärkein tavoite onkin toimittaa asiakkaalle tämän tarpeet täyttäviä versioita ohjelmistosta aikaisessa vaiheessa ja säännöllisesti.
Ketterät menetelmät ovat siis iteratiivinen ohjelmistokehitysprosessi, jossa on tärkeää mitoittaa kullekin iteraatiosyklille sen kokoinen osa tehtäväksi, että se voidaan toteuttaa kokonaisuudessaan. Syklin pituus ei vaihtele ketterän projektin edetessä, vaan tehtävä työ mitoitetaan aina siihen sopivaksi kunkin syklin alussa olevassa suunnitteluvaiheessa. Näin jokaisen syklin päätteeksi asiakkaalle voidaan toimittaa tavoitteen mukainen toimiva versio sovelluksesta.
Asiakas ja asiakasyhteistyö ovat siis avainasemassa ketteristä menetelmistä puhuttaessa. Kun projektissa edetään pienissä, iteratiivisissa erissä, tiivis kommunikaatio projektin eri osapuolten välillä on välttämätöntä. Ketterän kehittämisen projektissa asiakas onkin osa kehitystiimiä.
Ketterien menetelmien viitekehykset
Ketterät menetelmät pitävät sisällään myös erilaisia viitekehyksiä, joita voidaan soveltaa yhdessä tai erikseen ketteryyttä tavoitellessa. Erityisesti Scrum ja Kanban ovat yleisiä viitekehyksiä, joita sovelletaan ohjelmistokehityksessä. Scrum tarjoaa projektiin mallin suorittaa kehitystyötä lyhyissä iteraatioissa, joita kutsutaan sprinteiksi. Kanban tuo projektille tavan seurata ja tarkastella projektin etenemistä niin ylemmällä kuin yksityiskohtaisemmallakin tasolla.
Me Haltulla hyödynnämme toiminnassamme erityisesti juuri Scrumia ja Kanbania. Scrumia sovellamme projektikohtaisesti. Tämä tarkoittaa, että sovitamme Scrum-viitekehykseen kuuluvat tapahtumat, kehitystiimin ja tuotokset kullekin projektille sopivaan malliin.
Ketterän kehityksen vaiheet
Yleisesti ketterän kehittämisen vaiheet etenevät seuraavasti:
Tavoitteiden määrittely: Mitä haasteita asiakkaalla on, joita halutaan ratkaista? Minkälaisia vaatimuksia asiakkaalla on ohjelmistolta? Minkälaisissa tilanteissa eri käyttäjät tarvitsevat ohjelmistoa ja mihin tarkoitukseen?
Työn suunnittelu: Määritellään tavoitteiden mukaiset vaatimukset projektille ja kasataan asiantuntijatiimi toteuttamaan kehitystyötä.
Toteutus: Toteutus tapahtuu lyhyissä iteraatioissa, joissa osallistetaan myös asiakasta ja mahdollisesti myös loppukäyttäjiä. Toteutuksen aikana tulee yleensä myös uusia ideoita ja vaatimuksia vastaan, jolloin niihin on helppo reagoida aikaisessa vaiheessa.
Välipalaute: Tässä vaiheessa käydään asiakkaan ja projektitiimin kanssa yhdessä läpi mitä ollaan tähän mennessä saatu aikaan. Projektitiimi myös tarkastelee omaa onnistumistaan, jotta voi seuraavalla toteutuskierroksella toimia vielä tehokkaammin.
Käyttöönotto ja julkaisu: Jokaisessa iteraatiovaiheessa tuotetaan uusi julkaistava osa ohjelmistoon, joka integroidaan asiakkaan käyttöön. Jokaisen iteraatiovaiheen tavoitteena on tuottaa uusi osa kehitettävään ohjelmistoon.
Ohjelmistoyritykset ovat tottuneet käyttämään ketteriä menetelmiä projekteissaan. Heillä on tietotaitoa ja osaamista kysyä juuri niitä kysymyksiä, jolla projektia voidaan lähteä edistämään oikeaan suuntaan. Asiakasta osallistetaan usein kehitysprojektin aikana, jolloin lopputuloksesta saadaan juuri asiakkaan ja loppukäyttäjän tarpeita mukaileva tuotos.
Ketterien menetelmien hyödyt
Ketterän kehityksen menetelmien avulla varmistetaan se, että projekti etenee johdonmukaisesti ja jokaisen sprintin päätteeksi asiakas saa käsiinsä toimivan version tuotteesta. Olemme keränneet alle myös muita selkeitä hyötyjä, joita ketterät menetelmät tuovat projektityöhön ja ohjelmistokehitykseen:
Varhainen arvon tuotto
Yhden iteraation aikana tuotetta kehitetään siten, että sen päätteeksi toimitetaan asiakkaalle aina toimivan version ohjelmistosta. Ketterä kehitys tukee siis mahdollisimman varhaista arvon tuottoa asiakkaalle, koska asiakas saa heti ensimmäisten sprinttien jälkeen toimivia versioita nähtäväksi.
Projektin tasainen ja laadullinen eteneminen
Työn jakaminen pienempiin, ehyisiin osiin ja järjestelemällä tehtävä työ lyhyille ajanjaksoille auttaa varmistamaan projektin tasaisen etenemisen. Se edesauttaa myös laaduntarkkailua, jota tapahtuu sekä yrityksen että asiakkaan puolelta.
Toimivan tuotteen ollessa etenemisen mittareista merkittävin, on kehitystiimin helpompi pitää fokus suuremmassa kuvassa. Jokaisen iteraatiokierroksen alussa, eli suunnitteluvaiheessa, kehitystiimin tehtävänä on valita syklin työlistalle sopivan kokoisia, projektia edistäviä kokonaisuuksia.
Toisin sanoen, koska kehitystä tehdään pienissä paloissa, pääsee asiakkaamme näkemään tuloksia ja vaikuttamaan kehitykseen liki reaaliaikaisesti. Samalla sovelluskehittäjät pystyvät hallitsemaan helpommin ajankäyttöään hahmottamalla paremmin käsillä olevan kokonaisuuden ja sen työstöön varatun ajan.
Tasainen ja tiivis kommunikaatio kehitystiimin sisällä takaa projektin etenemisen haluttuun suuntaan. Kommunikaatio on avainasemassa myös siksi, ettei yhden ihmisen takana ole merkittävää määrää tietoa, joka katoaa taivaan tuuliin, jos tiimin jäsen jostain syystä poistuu projektista.
Lisäksi tämä sallii sen, että asiakkaan esittämät muutostarpeet voidaan huomioida vielä ohjelmistokehitysprojektin loppumetreillä.
Nopea reagointi
Kun asiakas pääsee näkemään ja testaamaan sovellusta koko sovelluskehitysprosessin ajan, näkemys sovelluksen ominaisuuksista ja yksityiskohdista kirkastuu, mikä johtaa muuttuviin määritelmiin. Pienissä sykleissä etenevä ketterä sovelluskehitysprosessi mahdollistaa nopean reagoinnin muuttuneisiin suunnitelmiin jopa aivan projektin viime metreillä.
Olettamusten ja väärinymmärrysten minimointi
Ketterien menetelmien nopeasyklisyys yhdessä asiakasyhteistyön kanssa minimoi olettamukset ja väärinymmärrykset, mikä on omiaan voimistamaan niin asiakastyytyväisyyttä kuin yrityksen työntekijöiden, meidän haltulaisten, työn iloa.
Vesiputousmalli
Vesiputousmallissa yksi osa projektista tehdään täysin valmiiksi ennen kuin siirrytään seuraavaan osaan, eli prosessi etenee yksi suuri askel kerrallaan. Eteneminen vesiputousmallissa voidaan kuvata seuraavasti:
Suunnittelu
Toteutus
Testaus
Toimitus
Koska vesiputousmalli ei salli paluuta aikaisempaan osaan, edellyttää se toimiakseen äärimmäisen tarkat suunnitelmat. Ensimmäisessä osassa laaditut suunnitelmat kulkevat täysin saman muotoisina ja sisältöisinä koko projektin läpi. Lienee helppo kuvitella, ettei tällainen toimintamalli taivu kehitysprojekteille, joissa tuotteiden muotoa ja toiminnallisuutta hiotaan työn edetessä.
Vesiputousmallin haasteet
Vesiputousmallilla kehitetyt ohjelmistot saattavat pahimmillaan vanhentua ennen kuin ne pääsevät markkinoille. Tämä johtuu siitä, että tuote rakennetaan ja testataan ensimmäisen vaiheen suunnitelmaa vastaavaksi, eikä siihen lisätä, siitä poisteta tai muuteta mitään, mikä poikkeaa tuosta suunnitelmasta. Asiakkaalle toimitetaan lopulta toimitusvaiheessa juuri sellainen tuote, mikä suunnitteluvaiheessa on määritelty. Näin ollen ensimmäinen hetki, jolloin asiakas saa toimivan version tuotteesta käsiinsä on kehitysprojektin viimeinen osa.
Koska toteutus- ja testausvaiheet ovat saattaneet kestää kuukausia, tai jopa vuosissa mitattavan ajan, on todennäköistä, ettei tuote olekaan enää ajan hermolla, tai näytä tai käyttäydy siten kuin asiakas haluaa.
Ketterä kehittäminen Haltun arjessa
Me Haltulla teemme ohjelmistotuotantoa ja järjestelmäkehitystä aina ketterillä menetelmillä. Toteutamme varsin erikokoisia ja -tyyppisiä projekteja hyvin monenlaisille asiakkaille, mutta kaikessa tekemisessämme keskeisessä avainroolissa ovat yhteistyö ja kommunikaatio asiakkaidemme kanssa.
Haltulla kehitystiimiin lukeutuu projektikohtaisesti yhdessä määritellyn tarpeen mukaan ainakin joitakin seuraavista: sovelluskehittäjiä, suunnittelijoita, skrummailija (Haltun versio Scrum-mallin Scrum Masterista), ketteryysvalmentaja (valmentaa sekä asiakasta että sovelluskehitystiimiä) ja tietenkin tuoteomistaja, joka on siis asiakkaan edustaja. Asiakkaan puolelta saattaa kehitystiimiin kuulua useampiakin henkilöitä projektin luonteesta ja koosta riippuen.
Haltun projekteilla on yleensä kaksi työlistaa, asiakkaan (tuoteomistaja) laatima koko projektin työlista, eli backlog, ja kulloisenkin iteraatiosyklin (sprintti) työlista, eli sprintin backlog. Sprintin suunnitteluvaiheessa sovelluskehittäjät valikoivat sprintin backlogille projektin backlogilta toteutettavia tehtäviä tuoteomistajan kanssa käydyn keskustelun pohjalta. Näin työstettävänä on aina kokonaisuuksia, jotka Sprintin päättyessä ovat valmiita ja edistävät siten projektia osaltaan.
Ketterien menetelmien yksi tärkeä periaate on motivoituneiden ihmisten kiinnittäminen projektiin. Meillä Haltulla noudatetaan myös tätä periaatetta. Meillä mahdollistetaan kehitystiimien vapaus valita työskentelytapansa ja -välineensä, tuetaan kehitystiimejä ja niiden itseohjautuvuutta kokonaisuudessaan ja luotetaan siihen, että sovitut työt tulevat tehtyä ja projektit etenevät suunnitellusti.
Yhteenveto
Nyt tiedät enemmän ketteristä menetelmistä sekä vaihtoehtoisesta vesiputousmallista. Kuten artikkelista huomasit, niin me Haltulla suosimme ehdottomasti ketteriä menetelmiä ohjelmistokehityksessä. Jos sinulla on mielessäsi ohjelmistoidea, jota haluat lähteä toteuttamaan ja tässä artikkelissa esitetty tapa toteuttaa se kuulosti mielestäsi hyvältä, niin ole meihin yhteydessä. Lähdetään tekemään ketterää kehitystä yhdessä!