Abstract
Työpanoksen arviointi ketterissä projekteissa eroaa olennaisesti perinteisistä arviointimenetelmistä. Perinteinen lähestymistapa on arvioida käyttäen ”alhaalta ylöspäin” -tekniikkaa: eritellään yksityiskohtaisesti kaikki vaatimukset ja arvioidaan jokainen tehtävä näiden vaatimusten täyttämiseksi tunteina/päivinä, ja käytetään sitten näitä tietoja projektin aikataulun laatimiseen. Sen sijaan ketterissä hankkeissa käytetään ylhäältä alaspäin suuntautuvaa lähestymistapaa, jossa käytetään bruttotason arviointitekniikoita ominaisuuksiin ja sen jälkeen asteittaista tarkennusta ja rullaavan aallon suunnittelumenetelmiä, joiden avulla päästään tehtävätasolle juuri oikeaan aikaan ja paljastetaan iteratiivisesti yhä yksityiskohtaisempia yksityiskohtia kutakin tasoa alempana. Tässä artikkelissa käsitellään kahta yleistä ketterän arvioinnin tekniikkaa (suunnittelupokeri ja affiniteettiryhmittely) sekä sitä, miten näiden harjoitusten tuloksista saadaan tietoa aikataulun ja budjetin ennustamiseen.
Top-down vs. Bottom-up
Perinteinen menetelmä projektien arvioimiseksi on käyttää useita viikkoja tai kuukausia projektin alussa rakennettavan tuotteen yksityiskohtaisten vaatimusten määrittelyyn. Kun kaikki tiedossa olevat vaatimukset on selvitetty ja dokumentoitu, voidaan laatia Gantt-kaavio, jossa näkyvät kaikki vaatimusten täyttämiseen tarvittavat tehtävät ja kunkin tehtävän arvio. Tämän jälkeen resurssit voidaan kohdentaa tehtäviin, ja kuormituksen ja tasauksen kaltaiset toimet auttavat määrittämään lopullisen toimituspäivän ja budjetin. Tätä prosessia kutsutaan alhaalta ylöspäin -menetelmäksi, koska kaikki tuotetta koskevat yksityiskohdat on määriteltävä ennen kuin projektin aikataulu ja kustannukset voidaan arvioida.
Ohjelmistoteollisuudessa alhaalta ylöspäin -menetelmän käytöllä on vakavia haittoja nykypäivän muutosnopeuden vuoksi. Muutosnopeus tarkoittaa sitä, että uusien kehitystyökalujen nopeus ja uuden tiedon saatavuuden nopeus on niin suuri, että mikä tahansa toimituksen viivästyminen jättää avoimeksi kilpaileville vaihtoehdoille ja vaaraksi vanhentuneen tuotteen toimittamisen (Sliger, 2010).
Ylhäältä alas -menetelmällä puututaan tähän keskeiseen ongelmaan käyttämällä tällä hetkellä saatavilla olevia tietoja bruttotason arvioiden laatimiseen. Rolling-wave-suunnittelua käytetään sitten uusien tietojen sisällyttämiseen sitä mukaa, kun niitä saadaan, arvioiden tarkentamiseen ja iteratiiviseen tarkentamiseen yksityiskohtaisemmin hankkeen edetessä. Tämä menetelmä, jossa opitaan juuri sen verran, että päästään alkuun, ja suunnitellaan lisätiedon sisällyttämistä työn tuotosten kehittyessä, antaa projektiryhmälle mahdollisuuden reagoida nopeasti vastoinkäymisiin ja muuttuvaan markkinakysyntään.
Estimointitekniikat
Bruttotason arviointitekniikoita käyttävät tiimit, jotka käyttävät ketteriä lähestymistapoja, kuten Scrumia ja Extreme Programmingia, ja tässä artikkelissa käsitellään kahta suosituinta tekniikkaa: Planning Poker ja Affinity Grouping. Myös käytettyjä estimointiyksiköitä tarkastellaan, sillä näiden yksiköiden tulisi olla sellaisia, ettei niitä voi sekoittaa aikaan.
Suunnittelupokeri
Suosituin bruttotason estimointitekniikka on Suunnittelupokeri eli Fibonacci-sekvenssin käyttö pisteen arvon antamiseksi ominaisuudelle tai kohteelle (Grenning, 2002). Fibonaccin sekvenssi on matemaattinen numerosarja, joka otettiin käyttöön 1200-luvulla ja jota käytettiin selittämään tiettyjä luonnon muotoutumiseen liittyviä seikkoja, kuten puiden haarautumista. Sarja muodostetaan laskemalla kaksi edellistä lukua yhteen, jolloin saadaan sarjan seuraava arvo: 0, 1, 1, 2, 3, 5, 8, 13, 21 ja niin edelleen. Ketterää arviointia varten joitakin numeroita on muutettu, ja tuloksena on seuraava sarja: 1, 2, 3, 5, 8, 13, 20, 40, 100.
Nämä numerot esitetään pelikorttisarjassa (ks. kuvio 1). Ryhmän jäsenet pelaavat ”suunnittelupokeria” (liite 2) antaakseen arvion pistearvon muodossa kullekin kohteelle. Vaiheet ovat seuraavat:
- Kukin tiimin jäsen saa korttisarjan.
- Yrityksen omistaja (joka EI saa arvioida) esittelee arvioitavan kohteen.
- Kohteesta keskustellaan.
- Kukin tiimin jäsen valitsee yksityisesti kortin, joka edustaa hänen arvioitaan.
- Kun kaikki ovat valmiita, kaikki valitut kortit paljastetaan samanaikaisesti.
- Jos kaikki tiimin jäsenet ovat valinneet saman kortin, kyseinen pistearvo on estimaatti.
- Jos kortit eivät ole samat, tiimi keskustelee estimaatista painottaen poikkeavia arvoja:
- Matalimman arvon valinnut jäsen selittää, miksi hän valitsi arvon.
- Korkeimman arvon valinnut jäsen selittää, miksi hän valitsi arvon.
- Valitaan uudelleen, kunnes arviot lähenevät toisiaan.
- Mikäli syntyy pitkiä tai ”ruohonjuuritasolla” käytäviä keskusteluja, tiimin jäsenet voivat käyttää kahden minuutin ajastinta keskustelun ajaksi ja valita uudelleen aina kun ajastin loppuu, kunnes konversio toteutuu.
- Toistetaan jokaisen kohteen kohdalla (Cohn, 2006, s. 56-57).
Näyte 1. Pokerikorttien suunnittelu
Näyte 2. Planning Pokerin pelaaminen (Photo courtesy of Museums and the Web. All Rights Reserved)
Fibonaccin lukuja käytetään useista syistä, ja niitä käytetään tässä muodossa. Ensimmäinen on ajatus siitä, että kun tiimit poistavat ajan arvioinnin perustana, ne vaativat epätodennäköisemmin enemmän yksityiskohtia ja pehmustavat arvioita. Nämä luvut edustavat sen sijaan suhteellista kokoa, eivät aikaa. Tämän seurauksena arviointitehtävä sujuu melko nopeasti. Tiimit käyttävät yleensä noin kaksi minuuttia kuhunkin kohteeseen, joten 30:n kohteen työmäärä voidaan arvioida tunnissa. Prosessia nopeuttaa myös se, että tiimit voivat valita vain yhdeksän vaihtoehtoa (eli pistearvoja tai kortteja).
Sekvenssi tarjoaa myös oikean yksityiskohtaisuuden tason pienemmille ja paremmin ymmärretyille ominaisuuksille ja välttää samalla vääränlaisen tarkkuuden tunteen suuremmille arvioille. Esimerkiksi kohde, jolla on korkea arvio (20 tai korkeampi), tarkoittaa, että kohde on suuri eikä sitä vielä ymmärretä hyvin. Keskustelu siitä, onko kohde 20 vai 19 vai 22, olisi ajanhukkaa, koska tietoa ei yksinkertaisesti ole riittävästi saatavilla. Kun kohde on lähempänä iteraatiota, jossa sitä työstetään, se voidaan pilkkoa pienempiin osiin ja arvioida rakeisemmilla luvuilla (1-13). Kohdat, joiden pistearvio on 1-13, voidaan yleensä saada valmiiksi yhden iteraation aikana (1-4 viikkoa).
On tärkeää huomata, että pisteillä ei ole sama merkitys eri tiimeissä; esimerkiksi yhden tiimin ”viisi” ei vastaa toisen tiimin ”viittä”. Näin ollen tiimin nopeutta, joka on johdettu pisteistä, ei pitäisi käyttää vertailtaessa tuottavuutta eri tiimien välillä.
Affiniteettiryhmittely
Vielä nopeampi tapa arvioida, ja sitä käytetään, kun arvioitavien kohteiden määrä on suuri, on affiniteettiryhmittely. Tiimin jäsenet yksinkertaisesti ryhmittelevät samankokoisia kohteita yhteen, jolloin saadaan samanlainen kokoonpano kuin kuvassa 3. Menetelmä on yksinkertainen ja nopea:
- Ensimmäinen kohde luetaan tiimin jäsenille ja sijoitetaan seinälle.
- Toinen kohde luetaan ja tiimiltä kysytään, onko se pienempi vai suurempi kuin ensimmäinen kohde; sijoittaminen seinälle vastaa tiimin vastausta (suurempi on oikealla, pienempi vasemmalla).
- Kolmas kohde luetaan ja ryhmältä kysytään, onko se pienempi vai suurempi kuin ensimmäinen ja/tai toinen kohde; kohde sijoitetaan seinälle vastauksen mukaisesti.
- Valvonta luovutetaan sen jälkeen ryhmälle, jotta se voi viimeistellä affiniteettiryhmittelyn lopuille kohteille.
Ryhmät voivat halutessaan jatkaa samalla tavalla sijoittamalla ryhmäkeskustelun jälkeen yhden kohteen kerrallaan seinälle. Nopeampi tapa on kuitenkin antaa jokaisen ryhmän jäsenen valita kohde ja sijoittaa se oman parhaan ymmärryksensä perusteella. Näin toimitaan siten, että kaikki ryhmän jäsenet työskentelevät rinnakkain, kunnes kaikki kohteet on arvioitu ja sijoitettu seinälle. Useita satoja kohteita voidaan arvioida suhteellisen lyhyessä ajassa. Kun kaikki kohteet on sijoitettu seinälle, tiimi tarkastelee ryhmittelyä. Kohteista, joiden joku ryhmän jäsen uskoo olevan väärässä ryhmässä, keskustellaan ja niitä siirretään tarvittaessa.
Kun affiniteettiryhmittely on valmis, voidaan määrittää arvioinnin yksikköarvot, kuten pisteet. Kuviossa 3 ensimmäiselle joukolle äärivasemmalla merkittäisiin arvo 1 piste, toiselle joukolle 2 pistettä, kolmannelle joukolle 3 pistettä, neljännelle joukolle 5 pistettä ja viimeiselle joukolle 8 pistettä.
Affiniteettiryhmittely voidaan tehdä myös muille estimointiyksiköille, kuten T-paitojen koolle. Liitteessä 4 on esimerkki affiniteettiryhmitetyistä kohteista, jotka on merkitty pisteiden sijasta T-paitojen kooilla.
Lähde 3. Esimerkki affiniteettiryhmittelystä
Näyte 4. Affiniteettiryhmittely t-paitojen kokoja käyttäen (Grafiikka Chris Sterlingin luvalla. Kaikki oikeudet pidätetään.)
Estimation Units
T-paitojen kokojen (Extra Small , Small , Medium , Large , Extra Large ) käyttö on toinen tapa ajatella ominaisuuksien suhteellisia kokoja. Tämä on vieläkin suurempi poikkeama numeerisesta järjestelmästä, ja kuten kaikkia hyviä bruttotason estimointiyksiköitä ei voida mitenkään liittää tiettyyn aikajaksoon.
Muita mielivaltaisia mittayksikköjä ovat esimerkiksi Gummi Bears, NUTS (Nebulous Units of Time) ja foot-pounds. Tiimit voivat luoda omia arviointiyksikköjään, ja kuten huomaatte, heillä on siinä usein hauskaa.
Tässä asiakirjassa ei käsitellä aikaperusteisten yksiköiden, kuten ihanteellisten kehityspäivien ja/tai -tuntien, käyttöä. Nämä ovat jo yleisiä ja hyvin ymmärrettyjä, joten niiden selityksiä ei ole otettu mukaan. On kuitenkin syytä huomata, että bruttotason arvioinnilla on potentiaalia onnistua paremmin, kun se irrotetaan ajan käsitteestä. Koska johto ja liiketoiminta tekevät aika-arvioista usein sitoumuksia, tiimin jäsenillä on enemmän paineita olla mahdollisimman tarkkoja. Tämän seurauksena he pyytävät yhä yksityiskohtaisempia tietoja arvioitavasta kohteesta. Tämä muuttaa bruttotason arvioinnin aikaa vievämmäksi detaljitason arvioinniksi ja kumoaa alkuperäisen tarkoituksen ja päämäärän.
Aikataulun ja budjetin ennustaminen
Kun bruttotason arviot ja tiimin nopeus on määritetty, aikataulu ja budjetti voidaan ennustaa. Tiimit määrittävät nopeutensa laskemalla yhteen kaikkien iteraation aikana valmistuneiden kohteiden kokonaispistemäärän. Tiimi on esimerkiksi valinnut viisi kohdetta, joiden kokonaispistemäärä on 23 pistettä (ks. kuvio 5). Kahden viikon iteraation päätteeksi he olivat saaneet valmiiksi vain neljä viidestä kohdasta. Heidän nopeutensa on 15 eli kohtien 1-4 pistearvojen summa. Joukkueet eivät saa ”osittaista pistemäärää” kohteen osien loppuunsaattamisesta, joten vaikka he olisivat aloittaneet kohteen 5, sitä ei laskettaisi, koska se jäi kesken.
Näyte 5. Tiimin nopeuden määrittäminen
Aikataulun määrittäminen
Tiimin keskimääräistä nopeutta käytetään pitkän aikavälin aikataulun ennustamisessa. Keskimääräinen nopeus lasketaan laskemalla yhteen tiimin kolmen viimeisen iteraation nopeusmittaukset ja jakamalla tämä summa kolmella. Jos tiimi siis suoritti ensimmäisessä iteraatiossaan 15 pistettä ja kahdessa seuraavassa iteraatiossa 20 pistettä, tiimin keskimääräinen nopeus on 18 (15+20+20 / 3). Jos tiimi pystyy tekemään keskimäärin 18 pistettä yhdessä iteraatiossa ja projektissa on 144 pisteen arvosta tehtävää työtä, tiimiltä kestää kahdeksan iteraatiota saada työ valmiiksi (144 / 18). Jos kukin iteraatio kestää kaksi viikkoa, valmistumisennuste on 16 viikkoa. Tämän menetelmän avulla voidaan vastata kysymykseen: ”Milloin saamme kaiken tämän työn valmiiksi?”
Jos tiimillä on nopeustietoja, voidaan määrittää optimistisin valmistumispäivä, pessimistisin ja todennäköisin. Tiimin keskimääräistä nopeuslukua käytetään todennäköisimmän skenaarion laskemiseen, kun taas tiimin huonoimmin sujuneiden iteraatioiden nopeuslukuja käytetään pessimistisimmän ennustetun valmistumispäivän laskemiseen. Käyttämällä nopeuslukuja iteraatioista, joissa tiimi sai valmiiksi odotettua enemmän, saadaan optimistisin ennuste.
Voidaan myös käyttää näitä lukuja vastaamaan kysymykseen: ”Meidän on toimitettava jotain tähän päivämäärään mennessä, kuinka monta näistä ominaisuuksista saamme valmiiksi siihen mennessä?”. Katso liitteessä 6 esimerkki todennäköisimmin valmistuvaksi ennustetusta määrästä, pessimistisestä ennusteesta ja optimistisesta ennusteesta. Tämä esimerkki koskee tiimiä, jonka keskimääräinen nopeus on 20 ja jonka huonoimman suorituskyvyn nopeus on 12 ja parhaan suorituskyvyn nopeus 25. Tämä esimerkki koskee tiimiä, jonka keskimääräinen nopeus on 20 ja jonka huonoimman suorituskyvyn nopeus on 12 ja parhaan suorituskyvyn nopeus 25. Kun otetaan huomioon tämä ja vain kuusi viikkoa (kolme iteraatiota), kuinka paljon voidaan saada valmiiksi? Pessimistinen ennuste on, että vain kohdat 1-8 saadaan valmiiksi kuudessa viikossa. Optimistinen ennuste on, että kohteet 1-18 saadaan valmiiksi. Ja todennäköisin ennuste, joka perustuu tiimin keskimääräiseen nopeuteen 20, on, että kohteet 1-13 saadaan valmiiksi kuudessa viikossa.
Jos tiimit käyttäisivät muita kuin numeerisia arviointiyksiköitä, kuten T-paitojen kokoja, ennustealgoritmit olisivat monimutkaisempia. On suositeltavaa, että koot muunnetaan numeeriseen järjestelmään, jotta samankaltaisten tietojen tuottaminen olisi helpompaa. Esimerkiksi Small voitaisiin muuntaa NUT 3:ksi, Medium NUT 5:ksi ja niin edelleen. Nämä voidaan muuntaa myös aikaväleiksi (Small voisi olla esimerkiksi 1-3 päivää), mutta tämä on luonnostaan riskialtista, johtuen jo kohdassa Arviointiyksiköt mainituista ongelmista.
Liite 6. Esimerkki ennuste kohteen valmistumisesta
Budjetin määrittäminen
Tässä osiossa tarkastelemme vastausta kysymykseen: ”Meillä on vain näin paljon rahaa – kuinka kauan se riittää ja kuinka paljon saamme tehtyä ennen kuin se loppuu?”. Ensin käytetään yksinkertaista kaavaa pistekohtaisten kustannusten määrittämiseksi:
Σ (kuormitetun tiimin palkat kaudelta n) / kaudella n tehdyt pisteet
Voidaan ottaa tiimin palkkojen summa (kuormitettu) joltakin ajanjaksolta, vaikkapa kolmelta kahden viikon iteraatiokierrokselta, ja jakaa se pisteiden lukumäärällä, jonka tiimi on saanut valmiiksi samassa ajassa. Näin ollen tiimin, jonka kokonaispalkat ovat 240 000 dollaria kuuden viikon aikana ja joka on suorittanut 60 työpistettä noiden kolmen iteraation aikana, kustannukset työpistettä kohti ovat 4 000 dollaria. Käytä nyt seuraavaa kaavaa budjetin määrittämiseksi:
(Kustannus per piste x valmistuvien kohtien kokonaispistearvo) + muut kulut = ennustettu budjetti
Hyvin usein kaikkia tuotteen ominaisuuksia ei määritellä projektin alussa, mikä on odotettavissa ketterissä projekteissa. Budjettiarviot perustuvat siis siihen, mitä tiedämme tällä hetkellä, sekä ennustealgoritmiin, joka perustuu historiatietoihin tai asiantuntijoiden ohjeistukseen. Sanotaan esimerkiksi, että tähän mennessä on listattu vain 20 ominaisuutta, mutta liiketoiminta ei voi esittää lisäominaisuuksia koskevia pyyntöjä tai tarkennuksia ennen kuin on nähty, miten asiakas ottaa ensimmäisen julkaisun vastaan. Kolme julkaisua käsittävän projektin budjetissa olisi käytettävissä ennustetietoja vain ensimmäisestä julkaisusta eikä koko projektista. Tiimi voisi käyttää edellä esitettyä algoritmia ensimmäisen julkaisun budjetin ennustamiseen, sitten olettaa 20 prosentin lisäyksen toiseen julkaisuun ja 5 prosentin lisäyksen viimeiseen julkaisuun aiempien kokemusten perusteella.
Kuten nopeus, myös budjettiennusteet ja aikatauluennusteet tarkistetaan jokaisella iteraatiokerralla. Tämä on osa rullaavan aallon suunnitteluprosessia, jota ketterät hankkeet noudattavat.
Loppusanat
Tässä artikkelissa ei ole käsitelty strukturoitujen arviointitekniikoiden puutetta, joita käytetään lean-lähestymistavoissa, kuten Kanbanissa. Sen sijaan, että käytettäisiin (tuhlattaisiin) aikaa kohteiden arvioimiseen, keskimääräiset sykli- ja läpimenoajat lasketaan tiimin todellisen läpimenon perusteella. Kanban käyttää kaavojensa perustana matemaattista teoreemaa Littlen laki. Käyttämällä kumulatiivisista virtauskaavioista johdettuja läpimenoaikojen laskelmia tiimit ennustavat projektin aikatauluja käyttämättä etukäteen aikaa arvioiden laatimiseen. Lukijaa kannustetaan tekemään itsenäistä tutkimusta tästä aiheesta, joka voisi olla erillinen oma artikkelinsa.
Ketterien projektien tarkoituksena on toimittaa tuote tai tuotekokonaisuuksia aikaisin ja usein, jotta asiakaspalaute ja muut opit voidaan sisällyttää seuraavaan julkaisuun. Kun kokeiluun, toteutukseen ja oppimiseen käytetään enemmän aikaa ja spekulointiin vähemmän, toimituksen läpimenoaika lyhenee. Ketterät tiimit pystyvät paremmin kilpailemaan markkinoilla ja pysymään mukana jatkuvasti nopeutuvassa muutoksessa.