Projektinhallinnan tarkoitus: Projektinhallinnan avulla voidaan ratkaista ohjelmistokehityksen ongelmia, kuten vaatimusten laiminlyöntejä ja epäselvää vastuunjakoa.
Projektityypit: Erilaiset ohjelmistoprojektit edellyttävät erilaisia hallinnan painopisteitä aina uudesta kehitystyöstä päivityksiin ja mobiilisovelluksiin.
Kettereiden menetelmien käyttö: Ketterät menetelmät, Scrum ja Kanban tarjoavat ohjelmistotiimeille erilaisia hyötyjä, ja kukin niistä soveltuu erilaisiin projektitarpeisiin.
Keskeiset riskit: Yleisiä riskejä ovat laajeneva projektin laajuus, tekninen velka ja riittämätön testaus, jotka kaikki edellyttävät strategisia hallintatoimia.
Jos et käytä ohjelmistokehityksen projektinhallintaa (tai oikeaa projektinhallintaohjelmistoa), kohtaat todennäköisesti kaikenlaisia ongelmia, jotka voivat vaarantaa julkaisut: projektivaatimuksia jää huomioimatta, laajuus karkaa, viestintä on heikkoa ja vastuut epäselviä. Projektinhallinta auttaa ottamaan tilanteen hallintaan ja julkaisemaan useampia versioita ajallaan, budjetin puitteissa ja sovitun laajuuden mukaisesti.
Tässä oppaassa käsitellään kaikki, mitä sinun tulee tietää ohjelmistokehityksen projektinhallinnasta. Opit käytännön viitekehyksiä, joiden avulla voit julkaista nopeammin, vähentää riskejä ja rakentaa prosessin, jota ohjelmistokehitystiimisi pystyy ylläpitämään.
Mitä ohjelmistoprojektien projektinhallinta on?
Ohjelmistoprojektien projektinhallinta on tieteenala, jossa suunnitellaan, koordinoidaan ja valvotaan ohjelmistotuotteiden luomista tai kehittämistä ohjelmistokehityksen elinkaaren aikana. Se kattaa laajuuden, aikataulun, budjetin, laadun, tiimidynamiikan ja sidosryhmäviestinnän kaikissa hankkeissa, joissa toimiva ohjelmisto on ensisijainen toimitettava tuotos.
Ohjelmistoprojekteihin liittyy erityisiä haasteita, joita yleiset projektinhallinnan viitekehykset eivät täysin kata. Tässä on yhteenveto niiden eroista.
| Osa-alue | Yleinen projektinhallinta | Ohjelmistoprojektien projektinhallinta |
|---|---|---|
| Laajuuden vaihtelu | Määritellään varhain, muutoksia hallitaan muodollisesti | Vaatimukset muuttuvat jatkuvasti käyttäjien palautteen perusteella |
| Toimitettavan tuotoksen tyyppi | Fyysiset tai dokumenttipohjaiset tuotokset | Aineeton koodi, API:t ja käyttöliittymät |
| Palautekierrot | Toimituksen jälkeinen tarkastelu tai vaiheporttitarkastus | Jatkuva integraatio, sprinttikatselmukset, betatestaus |
| Työkalut | Gantt-kaaviot, resurssien tasaamisen työkalut | Ongelmanseurantaohjelmistot, Git-repositoriot, CI/CD-putket |
| Tiimirakenne | Roolipohjainen hierarkia | Monialaiset tiimit, joilla on jaettu vastuu |
Ohjelmistokehitys ja ohjelmistoprojektien projektinhallinta
Ohjelmistokehitys tarkoittaa koodin kirjoittamista, testaamista ja käyttöönottoa. Ohjelmistoprojektien projektinhallinta tarkoittaa sen varmistamista, että koodi kirjoitetaan, testataan ja otetaan käyttöön tavalla, joka tuottaa arvoa aikataulussa ja budjetin puitteissa.
Seuraava vertailu ohjelmistokehityksen tavoitteista ja projektinhallinnan tavoitteista havainnollistaa keskeisiä eroja.
| Kehityksen tavoitteet | Projektinhallinnan tavoitteet |
|---|---|
| Rakentaa tekniset vaatimukset täyttäviä ominaisuuksia | Toimittaa oikeat ominaisuudet oikeaan aikaan |
| Kirjoittaa siistiä ja ylläpidettävää koodia | Pitää laajuus, budjetti ja projektin aikataulu linjassa |
| Korjata virheitä ja vähentää puutteita | Hallita riskejä, riippuvuuksia ja sidosryhmien odotuksia |
| Optimoida järjestelmän suorituskyky | Koordinoida monialaisia tiimejä ja poistaa esteitä |
Ohjelmistoprojektien tyypit
Tässä on erittely yleisimmistä ohjelmistoprojektityypeistä:
- Uuden ohjelmiston kehittäminen: Rakennat ohjelmiston tyhjästä ilman vanhojen järjestelmien rajoitteita. Projektinhallinnassa keskitytään vaatimusten kartoittamiseen, arkkitehtuuripäätöksiin ja nopeaan prototyyppien kehittämiseen. Suurin riski on laajuuden paisuminen, koska kaikki tuntuu mahdolliselta.
- Päivitykset, korjaustiedostot ja jatkuva ylläpito: Nämä ovat laajuudeltaan pienempiä hankkeita, joihin kohdistuu tiukat toimitusaikaodotukset. Projektinhallinnassa keskitytään priorisointiin, regressiotestaukseen ja julkaisujen koordinointiin. Riskinä on teknisen velan kertyminen oikoteiden käytön seurauksena.
- Mobiilisovellusprojektit: Mobiiliprojekteissa iteraatiosyklit ovat nopeita, ja niihin vaikuttavat sovelluskauppojen tarkastusaikataulut sekä laitekirjon pirstoutuneisuus. Projektinhallintaan kuuluvat alustakohtainen laadunvarmistus, ominaisuuksien vastaavuuteen liittyvät päätökset ja käyttäjäanalytiikan palautekierrot.
- Yritysratkaisut ja SaaS-ratkaisut: Näihin liittyy tiukkoja vaatimuksia vaatimustenmukaisuuden ja skaalautuvuuden suhteen. Projektinhallinnan painopiste siirtyy tietoturvatarkastuksiin, usean asiakkaan arkkitehtuurin huomioimiseen ja pitkien myyntisyklien yhteensovittamiseen. Sidosryhmien hallinta muuttuu monimutkaisemmaksi.
- Järjestelmäintegraatiot ja tietojen siirrot: Työ on erittäin teknistä ja riippuu vahvasti ulkoisista järjestelmistä. Projektinhallinnassa keskitytään riippuvuuksien kartoittamiseen, tietojen validointiin ja palautussuunnitteluun. Aikatauluriski on keskimääräistä suurempi, koska kolmansien osapuolten API:t ja vanhat järjestelmät aiheuttavat ennalta arvaamattomia esteitä.
Ohjelmistotiimien projektinhallintamenetelmät
Ketterä kehitys
Ketterä lähestymistapa on iteratiivinen tapa, jossa työ toimitetaan pieninä, käyttökelpoisina kokonaisuuksina. Tiimit suunnittelevat, rakentavat, testaavat ja arvioivat työtä lyhyissä jaksoissa ja käyttävät palautetta suunnan jatkuvaan säätämiseen. Ketterän ohjelmistokehityksen manifestin neljä arvoa (yksilöt ja vuorovaikutus prosessien ja työkalujen sijaan, toimiva ohjelmisto kattavan dokumentaation sijaan, asiakasyhteistyö sopimusneuvottelujen sijaan sekä muutokseen reagoiminen suunnitelman noudattamisen sijaan) muodostavat tämän ajattelutavan perustan.
Ketterä menetelmä sopii parhaiten silloin, kun vaatimukset todennäköisesti muuttuvat, kun loppukäyttäjien palautteen on ohjattava tuotteen kehitystä ja kun tiimit työskentelevät samoissa tiloissa tai niillä on toimivat asynkronisen viestinnän käytännöt. Se sopii huonosti projekteihin, joissa on jäykät sääntelyyn liittyvät välitavoitteet tai kiinteän laajuuden sopimukset, joissa muutokset aiheuttavat taloudellisia seuraamuksia.
Scrum
Scrum jäsentää ketterän työn sprinteiksi eli yleensä yhdestä neljään viikkoa kestäviksi, kiinteän pituisiksi iteraatioiksi. Keskeisiä rooleja on kolme: prosessia fasilitoiva Scrum-mestari, työjonosta vastaava tuoteomistaja ja työn tekevä kehitystiimi.
Jokainen sprintti alkaa sprintin suunnittelulla, jossa tiimi valitsee työn alle ottamansa työjonon kohteet. Joka päivä lyhyt päivittäispalaveri auttaa tiimiä pysymään ajan tasalla projektin etenemisestä ja esteistä. Sprintin lopussa tiimi esittelee sprinttikatselmuksessa rakentamansa kokonaisuuden ja pohtii retrospektiivissä, mitä pitäisi parantaa.
Scrum toimii hyvin, kun tiimin kokoonpano pysyy vakaana, sprinttien tavoitteet ovat selkeitä ja tuoteomistaja on aidosti käytettävissä. Menetelmä alkaa toimia huonosti ympäristöissä, joissa on paljon keskeytyksiin perustuvaa työtä, useiden Scrum-tiimien kesken jaettuja resursseja tai organisaatioissa, joissa "sprinttiin sitoutumista" pidetään sopimusvelvoitteena ennusteen sijaan.
Kanban
Kanbanissa käytetään visuaalista taulua (eli Kanban-taulua), jonka sarakkeet edustavat työnkulun vaiheita. Työkohteet siirtyvät vasemmalta oikealle sitä mukaa kuin kapasiteettia vapautuu. Keskeinen mekanismi on keskeneräisen työn rajoitus (WIP-rajoitus), joka määrittää, kuinka monta kohdetta yhdessä sarakkeessa voi olla kerrallaan. WIP-rajoitukset estävät ylikuormittumista ja tuovat pullonkaulat näkyviin.
Kanban toimii hyvin ylläpitotiimeissä, tukipyyntöihin perustuvassa työssä ja kaikissa ympäristöissä, joissa prioriteetit muuttuvat päivittäin. Se sopii hyvin myös tiimeille, jotka siirtyvät pois tapauskohtaisesta projektinhallinnasta, koska taulu tekee näkymättömän työn näkyväksi ilman, että koko prosessia tarvitsee uudistaa.
Hybridimenetelmät
Water-Scrum-Fallin kaltaisissa hybridimenetelmissä yhdistyvät vesiputousmallin etukäteissuunnittelu ja Scrumin iteratiivinen toteutus.
Joissakin organisaatioissa hybridimenetelmän käyttöönotto on harkittu vastaus projekteihin, jotka todella tarvitsevat sekä hallintaa että ketteryyttä. Jos hybridimenetelmäsi kuitenkin tarkoittaa, että suunnittelet sprintit mutta jätät retrospektiivit väliin tai laadit projektiperusteen mutta et koskaan päivitä sitä, välttelet vain sitoutumista.
Testi on yksinkertainen: pystytkö perustelemaan, miksi jokainen hybridimenetelmäsi osa on mukana ja minkä ongelman se ratkaisee? Jos vastaus on "näin olemme aina tehneet", menetelmäsi tarvitsee oman retrospektiivinsä.
| Menetelmä | Sopii parhaiten | Sprintin/vaiheen pituus | Joustavuus | Riskiprofiili |
|---|---|---|---|---|
| Ketterä | Muuttuvat vaatimukset, tuotetoimintavetoinen työ | 1–4 viikkoa | Suuri | Pieni tai keskisuuri |
| Scrum | Monialaiset tiimit, jotka rakentavat iteratiivisesti | 1–4 viikkoa (kiinteä) | Suuri | Pieni tai keskisuuri |
| Kanban | Ylläpito, operatiivinen toiminta, tukipyyntöihin perustuva työ | Jatkuva | Erittäin suuri | Pieni |
| Hybridi | Yritysprojektit, vaihtelevat hallintotarpeet | Vaihtelee vaiheen mukaan | Keskisuuri tai suuri | Keskisuuri |
Ohjelmistokehityksen elinkaaren (SDLC) vaiheet
Jokaiseen SDLC-vaiheeseen liittyy erityisiä projektinhallinnan vastuita, tuotoksia ja riskejä. Seuraavassa kerrotaan, mistä sinä ohjelmistoprojektipäällikkönä vastaat kussakin vaiheessa.
Suunnittelu ja vaatimusten kerääminen
Projektipäällikkö määrittelee projektin laajuuden, kerää liiketoiminta- ja tekniset vaatimukset, tunnistaa sidosryhmät ja laatii projektin alustavan suunnitelman. Tuotoksia ovat projektiperuste, vaatimusmäärittely ja alustava riskirekisteri.
Suurin riski tässä vaiheessa ovat puutteelliset vaatimukset. Kun vaatimukset ovat epämääräisiä, kaikki myöhemmät vaiheet kärsivät. Järjestä jäsenneltyjä määrittelytyöpajoja ja dokumentoi hyväksymiskriteerit jokaiselle merkittävälle ominaisuudelle ennen etenemistä.
Hyväksymiskriteerien tulee olla riittävän täsmällisiä, jotta kaksi eri kehittäjää rakentaisi niiden perusteella saman asian (given-when-then-hyväksymiskriteerit ovat hyödyllisiä tässä). Jos kriteerit voidaan tulkita kolmella eri tavalla, et ole vielä saanut niiden kirjoittamista valmiiksi.
Järjestelmän ja arkkitehtuurin suunnittelu
Projektipäällikkö koordinoi arkkitehtien, kehittäjien ja sidosryhmien välistä yhteistyötä varmistaakseen, että ehdotettu suunnitelma vastaa liiketoiminnan tarpeita ja pysyy budjetissa. Tuotoksia ovat muun muassa järjestelmäarkkitehtuurikaaviot, teknologiavalintaa koskevat päätökset ja suunnittelun katselmointien hyväksynnät.
Suurin riski on ylisuunnittelu. Tiimit suunnittelevat joskus tarpeettoman suuren mittakaavan varaan ja käyttävät aikaa ja rahaa infrastruktuuriin, jolla ei ole merkitystä vielä vuosiin. Olen nähnyt tiimin käyttävän kolme viikkoa mikropalveluarkkitehtuurin rakentamiseen työkalulle, joka ei koskaan palvelisi yli 200 käyttäjää.
Hyvin rajattu monoliitti olisi voitu julkaista viikossa. Projektipäällikön tehtävä on kysyä ”minkä ongelman tämä ratkaisee tänään?” ja vastata vastaväitteeseen ”ei vielä mitään”.
Kehitys ja rakentaminen
Rakennusvaiheen aikana projektipäällikkö seuraa sprintin edistymistä, hallinnoi laajuuden muutoksia muutospyyntöprosessin avulla ja poistaa etenemisen esteitä. Tuotoksia ovat muun muassa sprintin työlista, edistymiskaaviot ja tilanneraportit.
Suurin riski on laajuuden hallitsematon kasvu. Jokainen ”nopea lisäys” kasautuu. Kurinalainen muutospyyntöjen käsittely, johon liittyy vaikutusanalyysi, on paras puolustuksesi. Vaikutusanalyysin ei tarvitse olla muodollinen asiakirja.
Jo kolmen rivin Slack-viesti (esimerkiksi ”Tämän ominaisuuden lisääminen vie noin kaksi päivää, siirtää kirjautumisen uudelleensuunnittelua ja vaatii maksuprosessin lisälaadunvarmistusta”) pakottaa pyynnön esittäjän punnitsemaan kompromissia sen sijaan, että jokaista lisäystä pidettäisiin ilmaisena.
Testaus ja laadunvarmistus
Projektipäällikkö suunnittelee testauksen kattavuuden, seuraa virheiden korjaamista ja varmistaa, että hyväksymiskriteerit täyttyvät. Tuotoksia ovat muun muassa testaussuunnitelma, virhelokit ja laadunvarmistuksen hyväksyntäraportit.
Suurin riski on riittämätön testikattavuus, erityisesti poikkeustapauksissa ja integraatioissa. Vasemmalle siirretty testaus, jossa laadunvarmistus aloittaa testitapausten kirjoittamisen jo suunnitteluvaiheessa, löytää virheet aiemmin ja edullisemmin. Suunnittelun aikana löydetyn virheen korjaaminen vie minuutteja. Tuotannossa löydetty sama virhe maksaa työtunteja, mainetta ja joskus tuloja.
Käyttöönotto ja julkaisu
Projektipäällikkö koordinoi julkaisun ajoituksen, palautussuunnitelmat ja viestinnän. Tuotoksia ovat muun muassa julkaisusuunnitelma, käyttöönottotarkistuslista ja julkaistaanko vai ei -päätösten dokumentit.
Suurin riski on käyttöönoton epäonnistuminen tuotannossa. Sinivihreät käyttöönotot ja kanarialintujulkaisut mahdollistavat julkaisun ensin osalle käyttäjistä ja ongelmien havaitsemisen ennen kuin ne vaikuttavat kaikkiin.
Julkaisun jälkeinen ylläpito ja iterointi
Julkaisun jälkeen projektipäällikkö siirtää projektin ylläpidon säännölliseen rytmiin, luokittelee saapuvat virheet ja suunnittelee vaiheittaisia parannuksia. Tuotoksia ovat muun muassa julkaisun jälkeinen katselmus, häiriöraportit ja päivitetty tuotteen työlista.
Suurin riski on tuotteen laiminlyöminen julkaisun jälkeen. Laadi suunnitelma käyttäjäpalautteen keräämiseksi ja siihen reagoimiseksi. Sovi virallinen 30 päivän julkaisun jälkeinen katselmus koko tiimin ja keskeisten sidosryhmien kanssa. Tarkastele käyttötilastoja, tukipyyntöjä ja ominaisuuspyyntöjä. Aseta sitten seuraavan iteraation prioriteetit ennen kuin tiimi siirretään muihin tehtäviin ja organisaation osaaminen haihtuu.
Teknisen velan hallinta
Tekninen velka on yksi merkittävimmistä asioista, joita ohjelmistoprojektin projektipäällikkö valvoo, ja samalla yksi vähiten näkyvistä. Se on oikoteiden, siirrettyjen uudelleenmuotoilujen, vanhentuneiden riippuvuuksien ja sellaisten arkkitehtuuripäätösten kertyvä kustannus, jotka olivat aikanaan oikeita mutta eivät enää sovi nykytilanteeseen.
Projektipäällikön tehtävä on tehdä tekninen velka näkyväksi sidosryhmille ja varmistaa, että sen käsittelylle varataan oma kapasiteetti työlistalla. Käytännössä tämä tarkoittaa kolmea asiaa.
- Ylläpidä teknisen velan rekisteriä ominaisuustyölistan rinnalla. Jokaisen kohteen tulee sisältää velan kuvaus, arvio sen vaikutuksesta etenemisnopeuteen tai luotettavuuteen sekä kustannus sen korjaamiseksi. Ilman tätä velka pysyy näkymättömänä, kunnes se aiheuttaa käyttökatkon tai hidastaa toimitusta.
- Varaa sprinttikapasiteettia velan vähentämiseen. Aloita 15–20 prosentista. Jotkin tiimit suosivat erillistä ”teknisen velan sprinttiä”, mutta kokemukseni mukaan tasainen varaaminen estää tilanteen, jossa velkatyö perutaan aina määräajan lähestyessä.
- Yhdistä velka liiketoiminnan tuloksiin sidosryhmille viestiessäsi. Voisit esimerkiksi sanoa: ”Todennusmoduulin nykyinen arkkitehtuuri lisää kaksi päivää jokaiseen kirjautumiseen liittyvään ominaisuuteen, ja kolme seuraavista viidestä ominaisuudestamme liittyy kirjautumiseen” sen sijaan, että sanoisit: ”Meidän täytyy uudelleenmuotoilla todennusmoduuli.”
Hajautettujen ja etätiimien johtaminen
Hajautetut ja etätiimit aiheuttavat erityisiä projektinhallinnan haasteita, jotka sinun on otettava huomioon.
Aikavyöhykkeiden koordinointi
Kun tiimisi toimii useammalla kuin neljällä tai viidellä aikavyöhykkeellä, samanaikaisen työskentelyn aikaikkuna kutistuu kapeaksi. Suojaa tämä aikaikkuna ja käytä sitä vain päätöksiin, jotka edellyttävät reaaliaikaista keskustelua, kuten sprintin suunnitteluun, suunnittelukatselmuksiin ja esteiden käsittelyyn.
Julkaise "tiimin työajat" -kartta, josta käyvät ilmi kunkin jäsenen työajat ja päällekkäiset aikaikkunat. Tee se näkyväksi siinä työkalussa, jota tiimisi käyttää päivittäin.
Asynkronisten seremonioiden suunnittelu
Perinteiset Scrum-seremoniat olettavat, että kaikki työskentelevät samassa paikassa. Niiden mukauttaminen hajautetuille tiimeille tarkoittaa muodon uudelleenarviointia. Päivittäiset tilannekatsaukset voivat olla asynkronisia kirjallisia päivityksiä, jotka julkaistaan jaetussa kanavassa päivittäiseen määräaikaan mennessä. Jokaisessa päivityksessä kerrotaan, mitä saatiin valmiiksi, mitä on suunniteltu ja mikä estää etenemisen. Projektipäällikkö tarkistaa tilanteen ja seuraa esteiden käsittelyä sen sijaan, että hän odottaisi kokousta.
Sprinttikatselmuksiin voidaan yhdistää tallennettu demovideo ja päällekkäisen työskentelyajan aikana järjestettävä reaaliaikainen kysymys- ja vastaustilaisuus. Näin tiimin jäsenet, jotka eivät voi osallistua reaaliaikaisesti, voivat katsoa demon omalla ajallaan ja lähettää kysymyksiä asynkronisesti.
Retrospektiivit ovat vaikeimpia asynkronisesti toteutettavia seremonioita, koska ne perustuvat psykologiseen turvallisuuteen ja avoimeen vuoropuheluun. Pidä retrospektiivit synkronisina, vaikka se tarkoittaisi niiden järjestämistä harvemmin.
Dokumentaatio infrastruktuurina
Hajautetuissa tiimeissä dokumentaatio ei ole enää valinnaista. Jos päätöstä ei kirjoiteta muistiin, sitä ei tapahtunut, koska ne kolme henkilöä, jotka eivät olleet verkossa Slack-keskustelun aikana, eivät näe sitä. Ylläpidä yhtä totuuden lähdettä päätöksille, arkkitehtuurivalinnoille ja prioriteettimuutoksille. Päivitä se samana päivänä, jona päätös tehdään, älä viikkoa myöhemmin, kun puolet asiayhteydestä on kadonnut.
Ohjelmistoprojektien hallinnan mittarit ja KPI:t
Mittarit kertovat, toimiiko prosessisi vai tuntuuko vain siltä, että se toimii. Seuraan jokaisessa projektissa näitä mittareita:
| KPI | Mitä se mittaa | Miksi sitä mitataan | Ihanteellinen mittausväli | Milloin toimia |
|---|---|---|---|---|
| Suorituskyky | Sprintin aikana valmistunut työ (esim. tarinapisteet tai tehtävät) | Voit mitata kunkin sprintin suhteellisen työmäärän ja tiimin työskentelynopeuden | Jokainen sprintti | Kun se laskee vähintään 20 % kahden peräkkäisen sprintin ajan |
| Työkiertoaika | Yksittäisen työtehtävän kesto | Auttaa paljastamaan työnkulun pullonkaulat, jotta voit kohdistaa ponnistelusi oikein | Viikoittain | Kun keskiarvo ylittää tiimisi tavoitteen 50 %:lla |
| Läpimenoaika | Kesto työjonosta toimitukseen | Antaa kuvan päästä päähän ulottuvasta nopeudesta ja on sidosryhmien helposti tulkittavissa | Viikoittain | Kun sidosryhmät ilmoittavat toimitusten tuntuvan hitailta |
| Virhetiheys | Virheiden määrä koodiriviä tai ominaisuutta kohden | Auttaa havaitsemaan kehityksen tai testauksen laatuongelmista kertovia trendejä | Jokaisen julkaisun yhteydessä | Kun tiheys kasvaa kolmen julkaisun ajan |
| Edistymisen ennustetarkkuus | Suunniteltu verrattuna sprintin todelliseen valmistumiseen | Auttaa havaitsemaan arviointiongelmat, sprintin aikana tapahtuvat laajuuden muutokset tai molemmat | Jokainen sprintti | Kun suunniteltu ja toteutunut poikkeavat jatkuvasti vähintään 30 % |
| Sidosryhmien tyytyväisyys | Sidosryhmien luottamus toimitukseen | Auttaa varmistamaan projektin onnistumisen | Neljännesvuosittain | Kun tyytyväisyys laskee tai palautetta ei enää saada lainkaan |
Tässä on hyödyllisiä menetelmiä edistymisen seuraamiseen:
- Edistymiskaaviot näyttävät sprintin jäljellä olevan työn ajan kuluessa. Ne ovat hyödyllisiä päivittäisissä tilannekatsauksissa ja sprintin tilan tarkistuksissa.
- Kertymäkaaviot näyttävät valmistuneen työn ajan kuluessa suhteessa kokonaislaajuuteen, mikä tekee laajuuden muutokset näkyviksi. Jos kokonaislaajuuden viiva jatkaa nousuaan, näet laajuuden hallitsemattoman kasvun reaaliajassa.
- Kumulatiiviset virtauskaaviot havainnollistavat, kuinka monta kohdetta kussakin työnkulun vaiheessa on, ja paljastavat keskeneräisen työn kertymisen sekä läpimenon trendit. Minkä tahansa sarakkeen levenevä kaista tarkoittaa, että työtä kasaantuu siihen.
- Ansaitun arvon hallinta (EVM) vertaa suunniteltua arvoa, ansaittua arvoa ja toteutuneita kustannuksia budjetin ja aikataulun toteutumisen ennustamiseksi. Se on raskaampi menetelmä kuin useimmat ketterät tiimit haluavat käyttää, mutta arvokas kiinteän budjetin projekteissa, joissa on ulkoisia raportointivaatimuksia.
Ohjelmistoprojektien hallinnan parhaat käytännöt
Tässä on keskeisiä parhaita käytäntöjä ohjelmistoprojektien hallintaan.
Tavoitteiden asettaminen ja vaatimusten selkeys
Käytä ohjelmiston laajuuteen mukautettuja SMART-tavoitteita. Sen sijaan että kirjoittaisit ”paranna kassaprosessia”, kirjoita ”vähennä kassaprosessin keskeyttämisiä 15 %:lla Q3:n loppuun mennessä suunnittelemalla maksuvaihe uudelleen ja lisäämällä Apple Pay -tuki”. Jokaisella tavoitteella tulee olla mitattava tulos, määräaika ja vastuuhenkilö.
Projektin tavoitteiden asettamisen aliarvostetuin osa on kieltäytyminen. Tavoite, jolla yritetään saavuttaa neljä asiaa, ei saavuta niistä yhtäkään hyvin. Rajoita tavoitteet enintään kahteen ensisijaiseen tavoitteeseen sprinttiä kohden ja yhteen haastetavoitteeseen. Jos kaikki on prioriteetti, mikään ei ole sitä.
Viestintästrategiat
Ota käyttöön asynkronista viestintää ensisijaisesti hyödyntävä viestintätapa. Kirjoita tilannepäivitykset jaettuun asiakirjaan tai projektinhallintatyökaluun sen sijaan, että järjestäisit jälleen yhden kokouksen. Varaa synkroninen aika päätöksille, esittelyille ja retrospektiiveille.
Käytä viikoittaista yhteenvetoa sidosryhmille, päivittäisiä tilannepalavereita toimitustiimille (hajautetuille tiimeille asynkronisesti) ja joka toinen viikko järjestettävää esittelyä laajemmalle sidosryhmäjoukolle. Pidä tilannepäivitykset lyhyinä ja jäsenneltyinä. Aloita kertomalla, mitä julkaistiin, mikä on estynyt ja mitä seuraavaksi on tulossa.
Resurssien kohdentaminen ja hallinta
Laadi osaamismatriisi, joka kuvaa jokaisen tiimin jäsenen vahvuudet, kehitysalueet ja käytettävyyden. Käytä sitä sprintin suunnittelussa työkuorman tasapainottamiseen ja yksittäisten vikaantumispisteiden välttämiseen. Kun tiimin jäsenet työskentelevät useissa projekteissa, määritä priorisointisäännöt etukäteen, jotta heidän ei tarvitse jatkuvasti vaihtaa kontekstia.
Laatustandardit
Määritä valmiin työn määritelmä ennen ensimmäisen sprintin alkamista. Hyvä valmiin työn määritelmä voi sisältää suoritetun koodikatselmoinnin, läpäistyt yksikkötestit, läpäistyt integraatiotestit, päivitetyn dokumentaation ja tuoteomistajan hyväksynnän. Älä anna ”valmis”-sanan tarkoittaa ”se kääntyy”.
Kirjoita valmiin työn määritelmä muistiin, julkaise se tiimin nähtäville ja noudata sitä poikkeuksetta kolmen ensimmäisen sprintin ajan. Sen jälkeen tiimi noudattaa sitä itse. Kun annat ensimmäisen kerran tarinan merkitä valmiiksi ilman kriteerien täyttymistä määräaikapaineen vuoksi, olet luonut tilanteen, jossa määritelmä on valinnainen. Se ei palaudu ennalleen.
Jatkuva parantaminen
Järjestä retrospektiivi jokaisen sprintin ja jokaisen julkaisun jälkeen. Keskity yhteen tai kahteen toimenpiteeseen retrospektiiviä kohden ja seuraa niiden edistymistä seuraavassa jaksossa. Retrospektiivit, joissa syntyy toimenpiteitä mutta niitä ei viedä loppuun, rapauttavat luottamusta nopeasti.
Aloita jokainen retrospektiivi tarkastelemalla edellisen retrospektiivin toimenpiteitä. Toteutimmeko ne? Auttoivatko ne? Jos vastaus on ”emme toteuttaneet niitä”, siinä on retrospektiivin aihe. Joko toimenpiteet eivät olleet riittävän tärkeitä priorisoitaviksi tai tiimillä ei ole kapasiteettia tai valtuuksia niiden toteuttamiseen. Molemmista kannattaa keskustella rehellisesti.
Yleiset haasteet ja hyväksi todetut ratkaisut
Tässä on joitakin keskeisiä haasteita, joita kohtaat ohjelmistoprojekteja hallinnoidessasi, sekä ratkaisuja niihin.
| Haaste | Perimmäinen syy | Ratkaisu |
|---|---|---|
| Laajuuden hallitsematon kasvu | Epäselvät vaatimukset, heikko muutostenhallinta | Muutospyyntötaulu vaikutusanalyysipohjalla |
| Resurssipullonkaulat | Kapasiteetin heikko näkyvyys | Osaamismatriisi yhdistettynä kuormitukseltaan tasapainotettuun sprinttisuunnitteluun |
| Tiimin linjaushaasteet | Siiloutunut viestintä | Monialaisten tiimien tilannepalaverit ja jaetut OKR-tavoitteet |
| Laaturiskit | Riittämätön testikattavuus | Aikainen laadunvarmistus automatisoituine regressioportteineen |
| Aikataulupaineet | Arvioinnin optimismiharha | Historialliseen nopeuteen perustuva vertailu puskurisprintteineen |
Budjetin hallinta ja arviot
Ohjelmistokehitysprojektien kustannusten ja työtuntien arviointiin voi käyttää useita menetelmiä.
- Analogisessa arvioinnissa käytetään samankaltaisten aiempien projektien toteutuneita kustannuksia. Se on nopeaa, mutta edellyttää vertailukelpoista historiatietoa. Tarkkuus riippuu täysin siitä, kuinka samanlainen aiempi projekti todella oli, ja ihmisillä on taipumus yliarvioida samankaltaisuutta.
- Parametrisissa malleissa hyödynnetään historiatiedon ja projektimuuttujien välisiä tilastollisia yhteyksiä. Jos keskimääräinen kustannus tarinapistettä kohden on 1 200 $, voit ennustaa budjetin arvioitujen tarinapisteiden perusteella. Tämä toimii hyvin organisaatioissa, joissa seuranta on kehittynyttä.
- Alhaalta ylöspäin suuntautuvassa arvioinnissa jokainen tehtävä hinnoitellaan ja summataan kokonaismääräksi. Se on tarkkaa, mutta myös aikaa vievää. Käytä sitä projekteissa, joissa budjetin tarkkuus on kriittistä (esimerkiksi kiinteähintaisissa sopimuksissa, avustusrahoitteisessa työssä tai tilanteissa, joissa 20 %:n kustannusylitys aiheuttaisi vakavia seurauksia).
- Kolmen pisteen arvioinnissa käytetään optimistisia, todennäköisimpiä ja pessimistisiä arvoja keskiarvon tuottamiseksi. Se ottaa epävarmuuden huomioon ja pakottaa tiimin lisäksi pohtimaan, mikä voisi mennä pieleen, mikä voi auttaa riskienhallinnassa.
Mitä menetelmää sitten käytätkin, ajanseurantaohjelmisto voi tarjota tehtäviin ja projekteihin käytetyt todelliset työtunnit, joita voi verrata arvioihin.
Budjetin seuranta projektin koko elinkaaren ajan
Seuraa suunniteltuja ja toteutuneita menoja vähintään joka toinen viikko. Ansaitun arvon mittarit, kuten kustannustehokkuusindeksi (CPI) ja aikataulutehokkuusindeksi (SPI), antavat varhaisia varoitusmerkkejä. Kun CPI on alle 1,0, käytät työyksikköä kohden enemmän rahaa kuin suunniteltiin. Kun huomaat tämän ajoissa, voit mukauttaa laajuutta, aikataulua tai resursseja ennen kuin budjetti on käytetty loppuun.
Hyödyllinen budjettitapa, jonka olen omaksunut, on yksinkertainen kahden viikon välein tehtävä menotason tarkastelu. Vertaa nykyistä kulutusvauhtiasi jäljellä olevaan budjettiin ja jäljellä olevaan työhön. Jos laskelmat eivät täsmää, sinulla on täsmälleen kolme vaihtoehtoa: vähennä laajuutta, pidennä aikataulua tai lisää resursseja.
Kustannusylitysten ehkäiseminen
Suurimmat kustannusylitykset johtuvat kolmesta lähteestä: laajuuden muutoksista ilman budjetin mukautuksia, monimutkaisuuden aliarvioinnista ja virheiden myöhäisestä havaitsemisesta.
Ensimmäiseen auttaa muodollinen muutosesitysten käsittelyprosessi, joka sisältää kustannusvaikutusten analyysin. Kun sidosryhmä pyytää lisäystä, vastauksessa tulisi aina kertoa: "tämä maksaa tämän verran ja syrjäyttää nämä asiat."
Kolmipistearviointi ratkaisee toisen ongelman ottamalla epävarmuuden mukaan ennusteeseen sen sijaan, että se jätettäisiin huomiotta. Optimistisen ja pessimistisen arvion välinen ero on itsessään hyödyllistä tietoa. Jos tehtävän optimistinen arvio on kaksi päivää ja pessimistinen arvio kolme viikkoa, se kertoo, ettei projektiryhmä ymmärrä työtä riittävän hyvin arvioidakseen sitä.
Testauksen aikaistaminen ratkaisee kolmannen ongelman. Virheiden korjaamisen kustannuskäyrä on hyvin dokumentoitu: vaatimusmäärittelyssä löydetyn virheen korjaaminen maksaa yhden yksikön, kehitysvaiheessa kuusi, testauksessa 15 ja tuotannossa 100 yksikköä. Jokainen varhaiseen testaukseen investoitu euro maksaa itsensä takaisin.
Mitä seuraavaksi?
Oikea ohjelmistokehityksen projektinhallintaohjelmisto voi helpottaa huomattavasti näiden parhaiden käytäntöjen toteuttamista. Saat myös lisää ohjeita tarpeisiisi sopivan projektinhallintaohjelmiston valintaan.
