Formålet med prosjektstyring: Bruk av prosjektstyring bidrar til å håndtere problemer som krav som ikke er fanget opp, og uklart eierskap i programvareutvikling.
Prosjekttyper: Ulike programvareprosjekter krever ulike styringsfokus, fra nyutvikling til oppdateringer og mobilapplikasjoner.
Bruk av smidige metodikker: Agile, Scrum og Kanban gir programvareteam ulike fordeler, og hver metode passer til forskjellige prosjektbehov.
Viktige risikoer: Vanlige risikoer omfatter ukontrollert utvidelse av omfanget, teknisk gjeld og utilstrekkelig testing, og alle krever strategisk styring.
Hvis du ikke bruker prosjektstyring for programvareutvikling (eller riktig prosjektstyringsprogramvare), støter du sannsynligvis på alle slags problemer som kan ødelegge lanseringer: oversette prosjektkrav, ukontrollert omfang, svak kommunikasjon og uklart eierskap. Prosjektstyring hjelper deg med å få kontroll og levere flere lanseringer i tide, innenfor budsjett og avtalt omfang.
Denne veiledningen dekker alt du trenger å vite om prosjektstyring for programvareutvikling. Du lærer praktiske rammeverk for å levere raskere, redusere risiko og bygge en prosess som programvareutviklingsteamet ditt kan opprettholde.
Hva er prosjektstyring for programvare?
Prosjektstyring for programvare er disiplinen som omfatter planlegging, koordinering og oppfølging av utviklingen eller videreutviklingen av programvareprodukter gjennom programvareutviklingslivssyklusen. Den dekker omfang, tidsplan, budsjett, kvalitet, teamdynamikk og kommunikasjon med interessenter for alle initiativer der fungerende programvare er hovedleveransen.
Programvareprosjekter har unike utfordringer som generiske rammeverk for prosjektstyring ikke fullt ut håndterer. Her er en oppsummering av forskjellene.
| Dimensjon | Generell prosjektstyring | Prosjektstyring for programvare |
|---|---|---|
| Variasjon i omfang | Defineres tidlig, endringer håndteres formelt | Kravene endres kontinuerlig etter hvert som brukerne gir tilbakemeldinger |
| Type leveranse | Fysiske eller dokumentbaserte resultater | Uhåndgripelig kode, API-er og brukergrensesnitt |
| Tilbakemeldingssløyfer | Evaluering etter levering eller kontroll ved faseoverganger | Kontinuerlig integrasjon, sprintgjennomganger, betatesting |
| Verktøy | Gantt-diagrammer, verktøy for ressursutjevning | Saksbehandlingsverktøy, Git-repositorier, CI/CD-pipelines |
| Teamstruktur | Rollebasert hierarki | Tverrfunksjonelle team med delt eierskap |
Programvareutvikling kontra prosjektstyring for programvare
Programvareutvikling er selve arbeidet med å skrive, teste og distribuere kode. Prosjektstyring for programvare handler om å sørge for at koden blir skrevet, testet og distribuert på en måte som leverer verdi i tide og innenfor budsjettet.
Her er en sammenligning av målene for programvareutvikling og målene for prosjektstyring, for å illustrere de viktigste forskjellene.
| Utviklingsmål | Mål for prosjektstyring |
|---|---|
| Bygge funksjoner som oppfyller tekniske spesifikasjoner | Levere de riktige funksjonene til riktig tid |
| Skrive ren og vedlikeholdbar kode | Holde omfang, budsjett og prosjektplan samordnet |
| Løse feil og redusere mangler | Håndtere risiko, avhengigheter og interessentenes forventninger |
| Optimalisere systemytelsen | Koordinere tverrfunksjonelle team og fjerne hindringer |
Typer programvareprosjekter
Her er en oversikt over de vanligste typene programvareprosjekter:
- Ny programvareutvikling: Du bygger fra grunnen av uten begrensninger fra eldre systemer. Fokuset for prosjektstyringen rettes mot kartlegging av krav, arkitekturbeslutninger og rask prototyping. Den største risikoen er at omfanget vokser, siden alt føles mulig.
- Oppdateringer, feilrettinger og løpende vedlikehold: Dette er tiltak med mindre omfang og høye forventninger til rask gjennomføring. Fokuset for prosjektstyringen ligger på prioritering, regresjonstesting og koordinering av lanseringer. Risikoen her er at teknisk gjeld bygger seg opp gjennom snarveier.
- Prosjekter for mobilapplikasjoner: Mobilprosjekter har raske iterasjonssykluser drevet av tidsrammer for appbutikkgodkjenning og fragmentering av enheter. Fokuset for prosjektstyringen omfatter plattformspesifikk kvalitetssikring, beslutninger om funksjonslikhet og sløyfer for brukeranalyse.
- Virksomhets- og SaaS-løsninger: Disse har omfattende krav til samsvar og skalerbarhet. Fokuset for prosjektstyringen dreies mot sikkerhetsgjennomganger, hensyn knyttet til arkitektur for flere leietakere og samordning med lange salgssykluser. Interessenthåndteringen blir mer kompleks.
- Systemintegrasjoner og datamigreringer: Arbeidet er svært teknisk og avhengig av eksterne systemer. Fokuset for prosjektstyringen ligger på kartlegging av avhengigheter, datavalidering og planlegging av tilbakeføring. Tidsplanrisikoen er høyere enn gjennomsnittet fordi tredjeparts-API-er og eldre systemer introduserer uforutsigbare hindringer.
Metoder for prosjektstyring i programvareteam
Smidig
Smidig utvikling er en iterativ tilnærming der arbeidet leveres i små, brukbare trinn. Team planlegger, bygger, tester og evaluerer i korte sykluser og bruker tilbakemeldinger til å justere retningen kontinuerlig. De fire verdiene fra det smidige manifestet (individer fremfor prosesser, fungerende programvare fremfor dokumentasjon, kundesamarbeid fremfor kontraktsforhandlinger og å reagere på endringer fremfor å følge en plan) danner rammen for filosofien.
En smidig metodikk passer best når kravene sannsynligvis vil endre seg, når tilbakemeldinger fra sluttbrukere må forme produktet, og når teamene sitter samlet eller har gode vaner for asynkron kommunikasjon. Den passer dårlig for prosjekter med strenge regulatoriske milepæler eller kontrakter med fast omfang, der endringsordre medfører økonomiske straffer.
Scrum
Scrum strukturerer smidig arbeid i sprinter, som er iterasjoner med fast varighet, vanligvis fra én til fire uker. Det finnes tre sentrale roller: Scrum-masteren, som legger til rette for prosessen, produkteieren, som eier backloggen, og utviklingsteamet, som utfører arbeidet.
Hver sprint starter med sprintplanlegging, der teamet velger hvilke elementer fra backloggen det forplikter seg til. Hver dag samordner et kort standup-møte teamet rundt fremdrift og hindringer i prosjektet. På slutten av sprinten demonstrerer teamet det som er bygget, i en sprintgjennomgang, og undersøker hva som kan forbedres i et retrospektiv.
Scrum fungerer godt når teamene har stabil bemanning, tydelige sprintmål og en produkteier som faktisk er tilgjengelig. Det bryter sammen i miljøer med mye avbruddsdrevet arbeid, delte ressurser på tvers av flere Scrum-team eller organisasjoner der «sprintforpliktelsen» behandles som en kontraktsmessig forpliktelse i stedet for en prognose.
Kanban
Kanban bruker en visuell tavle (det vil si en Kanban-tavle) med kolonner som representerer arbeidsflytens stadier. Arbeidselementer hentes fra venstre mot høyre etter hvert som kapasitet blir tilgjengelig. Den sentrale mekanismen er WIP-begrensninger, som setter et tak på hvor mange elementer som kan ligge i én enkelt kolonne om gangen. WIP-begrensninger hindrer overbelastning og synliggjør flaskehalser.
Kanban fungerer godt for vedlikeholdsteam, supportdrevet arbeid og alle miljøer der prioriteringene endres daglig. Det fungerer også godt for team som går bort fra ad hoc-prosjektstyring, fordi tavlen synliggjør usynlig arbeid uten at det kreves en fullstendig omlegging av prosessen.
Hybride tilnærminger
Hybride metoder som Water-Scrum-Fall kombinerer den innledende planleggingen fra fossefallsmodellen med den iterative gjennomføringen i Scrum.
I noen organisasjoner er innføringen av en hybridmodell et gjennomtenkt svar på prosjekter som faktisk trenger både styring og smidighet. Men hvis den hybride tilnærmingen din betyr at du gjennomfører sprintplanlegging, men hopper over retrospektiver, eller at du skriver et prosjektmandat, men aldri oppdaterer det, unngår du bare å forplikte deg.
Testen er enkel: Kan du forklare hvorfor hvert element i den hybride tilnærmingen din finnes, og hvilket problem det løser? Hvis svaret er «det er bare slik vi alltid har gjort det», trenger metodikken din et eget retrospektiv.
| Metodikk | Best egnet for | Lengde på sprint/fase | Fleksibilitet | Risikoprofil |
|---|---|---|---|---|
| Smidig | Krav i utvikling, produktstyrt arbeid | 1–4 uker | Høy | Lav til middels |
| Scrum | Tverrfunksjonelle team som bygger iterativt | 1–4 uker (fast) | Høy | Lav til middels |
| Kanban | Vedlikehold, drift, supportdrevet arbeid | Kontinuerlig | Svært høy | Lav |
| Hybrid | Virksomhetsprosjekter, blandede styringsbehov | Varierer etter fase | Middels til høy | Middels |
Fasene i programvareutviklingens livssyklus (SDLC)
Hver SDLC-fase har spesifikke ansvarsområder, artefakter og risikoer innen prosjektstyring. Her er det du som programvareprosjektleder har ansvar for i hvert stadium.
Planlegging og innsamling av krav
Prosjektlederen definerer prosjektomfanget, samler inn forretningsmessige og tekniske krav, identifiserer interessenter og utarbeider den innledende prosjektplanen. Artefaktene omfatter prosjektmandatet, kravdokumentet og det foreløpige risikoregisteret.
Den største risikoen i denne fasen er ufullstendige krav. Når kravene er vage, lider alt videre arbeid. Gjennomfør strukturerte workshops for behovsavklaring og dokumenter akseptansekriterier for alle større funksjoner før dere går videre.
Akseptansekriteriene bør være så spesifikke at to forskjellige utviklere som leser dem, ville bygget det samme (akseptansekriterier med gitt–når–så er nyttige til dette). Hvis kriteriene dine kan tolkes på tre måter, er du ikke ferdig med å skrive dem.
System- og arkitekturdesign
Prosjektlederen koordinerer mellom arkitekter, utviklere og interessenter for å kontrollere at det foreslåtte designet oppfyller forretningsbehovene og holder seg innenfor budsjettet. Leveransene omfatter systemarkitekturdiagrammer, beslutninger om teknologistakk og godkjenninger fra designgjennomganger.
Den største risikoen er overkonstruering. Team designer noen ganger for en skala de ikke trenger ennå, og bruker tid og penger på infrastruktur som ikke vil ha betydning på flere år. Jeg har sett et team bruke tre uker på å bygge en mikrotjenestearkitektur for et verktøy som aldri ville ha mer enn 200 brukere.
En monolitt med gode grenser ville ha blitt levert på én uke. Prosjektlederens oppgave er å spørre «hvilket problem løser dette i dag?» og utfordre svaret «ingen ennå».
Utvikling og bygging
I byggefasen følger prosjektlederen opp fremdriften i sprinten, håndterer endringer i omfang gjennom en prosess for endringsforespørsler og fjerner hindringer. Leveransene omfatter sprintens arbeidskø, burndown-diagrammer og statusrapporter.
Den største risikoen er ukontrollert utvidelse av omfanget. Hver «rask tilleggstjeneste» bygger seg opp. Et disiplinert styre for endringsforespørsler med konsekvensanalyse er det beste forsvaret ditt. Konsekvensanalysen trenger ikke å være et formelt dokument.
Selv en Slack-melding på tre linjer (for eksempel «Det vil ta omtrent to dager å legge til denne funksjonen, skyve redesignen av innloggingen frem i tid og kreve ekstra kvalitetssikring av betalingsflyten») tvinger den som ber om endringen, til å vurdere avveiningen i stedet for å behandle hvert tillegg som kostnadsfritt.
Testing og kvalitetssikring
Prosjektlederen planlegger testdekningen, følger opp feilretting og bekrefter at akseptansekriteriene er oppfylt. Leveransene omfatter testplanen, feillogger og rapporter med godkjenning fra kvalitetssikringen.
Den største risikoen er utilstrekkelig testdekning, særlig for grensesituasjoner og integrasjoner. Testing som flyttes til venstre, der kvalitetssikringen begynner å skrive testtilfeller i designfasen, oppdager feil tidligere og rimeligere. En feil som oppdages under design, tar minutter å rette. Den samme feilen som oppdages i produksjon, koster timer, omdømme og noen ganger inntekter.
Distribusjon og lansering
Prosjektlederen koordinerer tidspunkt for lanseringen, planer for tilbakeføring og kommunikasjon. Leveransene omfatter lanseringsplanen, sjekklisten for distribusjon og beslutningslogger for om lanseringen skal gjennomføres eller ikke.
Den største risikoen er at distribusjonen mislykkes i produksjon. Blågrønne distribusjoner og kanarilanseringer lar deg først rulle ut til et utvalg brukere og oppdage problemer før de påvirker alle.
Vedlikehold og iterasjon etter lansering
Etter lanseringen overfører prosjektlederen prosjektet til en vedlikeholdsrutine, prioriterer innkommende feil og planlegger trinnvise forbedringer. Leveransene omfatter gjennomgangen etter lansering, hendelsesrapporter og en oppdatert produktarbeidskø.
Den største risikoen er å forsømme produktet etter lanseringen. Lag en plan for å samle inn og følge opp tilbakemeldinger fra brukerne. Planlegg en formell gjennomgang 30 dager etter lanseringen med hele teamet og viktige interessenter. Gå gjennom bruksmålinger, supportsaker og forespørsler om funksjoner. Prioriter deretter neste iterasjon før teamet blir omplassert og den kollektive kunnskapen forsvinner.
Håndtering av teknisk gjeld
Teknisk gjeld er noe av det mest avgjørende en prosjektleder for programvareprosjekter har ansvar for, og samtidig noe av det minst synlige. Det er den akkumulerte kostnaden ved snarveier, utsatt refaktorering, utdaterte avhengigheter og arkitekturbeslutninger som var riktige på det tidspunktet, men som ikke lenger passer.
Prosjektlederens rolle er å synliggjøre teknisk gjeld for interessentene og sørge for at den får dedikert kapasitet i arbeidskøen. I praksis betyr dette tre ting.
- Vedlikehold et register over teknisk gjeld ved siden av funksjonsarbeidskøen. Hvert element bør inneholde en beskrivelse av gjelden, den estimerte påvirkningen på fremdrift eller pålitelighet og kostnaden ved å håndtere den. Uten dette forblir gjelden usynlig frem til den forårsaker et driftsavbrudd eller bremser leveransene.
- Sett av sprintkapasitet til å redusere gjeld. Start med 15–20 %. Noen team foretrekker en egen «sprint for teknisk gjeld», men etter min erfaring forhindrer en jevn fordeling dynamikken der arbeid med gjeld blir avlyst hver gang en tidsfrist nærmer seg.
- Knytt gjelden til forretningsresultater når du kommuniserer med interessentene. Du kan for eksempel si «Den nåværende arkitekturen til autentiseringsmodulen legger til to dager for hver funksjon som berører innlogging, og tre av de fem neste funksjonene våre berører innlogging» i stedet for «Vi må refaktorere autentiseringsmodulen.»
Ledelse av distribuerte team og fjernteam
Distribuerte team og fjernteam skaper spesifikke prosjektledelsesutfordringer som du må ta høyde for.
Koordinering på tvers av tidssoner
Når teamet ditt dekker mer enn fire eller fem tidssoner, blir overlappet for synkron kommunikasjon redusert til et kort tidsvindu. Beskytt dette tidsvinduet, og bruk det bare til beslutninger som krever sanntidsdiskusjon, som sprintplanlegging, designgjennomganger og blokkeringer.
Publiser et kart over «teamets arbeidstid» som viser hvert medlems arbeidstid og tidsvinduene med overlapp. Gjør det synlig i verktøyet teamet bruker daglig.
Utforming av asynkrone seremonier
Tradisjonelle Scrum-seremonier forutsetter at alle er på samme sted. Å tilpasse dem for distribuerte team innebærer å tenke gjennom formatet på nytt. Daglige statusmøter kan være asynkrone, skriftlige oppdateringer som publiseres i en felles kanal innen en daglig frist. Hver oppdatering dekker hva som er fullført, hva som er planlagt, og hva som er blokkert. Prosjektlederen gjennomgår og følger opp blokkeringer i stedet for å vente på et møte.
Sprinterevisjoner kan kombinere en innspilt demovideo med en direktesendt spørsmåls- og svarøkt som legges til overlappsvinduet. Dette gjør at teammedlemmer som ikke kan delta direkte, kan se demoen når det passer dem og sende inn spørsmål asynkront.
Retrospektiver er den vanskeligste seremonien å gjennomføre asynkront fordi de avhenger av psykologisk trygghet og åpen dialog. Hold retrospektivene synkrone, selv om det betyr at de gjennomføres sjeldnere.
Dokumentasjon som infrastruktur
I distribuerte team er dokumentasjon ikke lenger valgfritt. Hvis en beslutning ikke er skrevet ned, har den ikke skjedd, fordi de tre personene som ikke var pålogget under den Slack-tråden, ikke vil se den. Oppretthold én felles kilde til sannheten for beslutninger, arkitekturvalg og endringer i prioriteringer. Oppdater den samme dag som beslutningen tas, ikke en uke senere når halvparten av konteksten er borte.
Måleparametere og KPI-er for programvareprosjektledelse
Måleparametere forteller deg om prosessen fungerer, eller om det bare føles slik. Dette er måleparameterne jeg følger med på i hvert prosjekt:
| KPI | Hva den måler | Hvorfor måle den | Ideell hyppighet | Når du bør handle |
|---|---|---|---|---|
| Hastighet | Arbeid fullført per sprint (f.eks. brukerhistoriepoeng eller oppgaver) | Lar deg måle det relative arbeidsomfanget i hver sprint og hvor raskt teamet arbeider | Hver sprint | Når den faller med 20 % eller mer i to sprinter på rad |
| Syklustid | Varigheten til ett enkelt arbeidselement | Bidrar til å avdekke flaskehalser i arbeidsflyten, slik at du kan konsentrere innsatsen | Ukentlig | Når gjennomsnittet overstiger teamets mål med 50 % |
| Ledetid | Varighet fra etterslep til levering | Gir innsikt i hastigheten fra ende til ende og er lett for interessenter å tolke | Ukentlig | Når interessenter opplever at leveringen går sakte |
| Defekttetthet | Feil per kodelinje eller funksjon | Bidrar til å oppdage trender som signaliserer kvalitetsproblemer i utvikling eller testing | Per leveranse | Når tettheten øker over tre leveranser |
| Nøyaktighet i nedbrenning | Planlagt kontra faktisk fullføring av sprinten | Bidrar til å avdekke estimeringsproblemer, endringer i omfang under sprinten eller begge deler | Hver sprint | Når planlagt og faktisk resultat konsekvent avviker med 30 % eller mer |
| Interessenttilfredshet | Interessentenes tillit til leveransen | Bidrar til å sikre at prosjektet lykkes | Hvert kvartal | Når tilfredsheten synker eller tilbakemeldingene stopper helt |
Her er noen nyttige metoder for å følge fremdriften:
- Nedbrenningsdiagrammer viser gjenværende arbeid over tid i en sprint. De er nyttige for daglige statusmøter og kontroller av sprintens helsetilstand.
- Oppbrenningsdiagrammer viser fullført arbeid over tid opp mot det totale omfanget, noe som synliggjør endringer i omfanget. Hvis linjen for totalt omfang fortsetter å stige, kan du se at omfanget vokser ukontrollert i sanntid.
- Kumulative flytdiagrammer visualiserer hvor mange elementer som befinner seg i hvert trinn i arbeidsflyten, for å avdekke opphopning av arbeid under utførelse og trender i gjennomstrømningen. Et bredere bånd i en kolonne betyr at arbeidet hoper seg opp der.
- Styring av opptjent verdi (EVM) sammenligner planlagt verdi, opptjent verdi og faktiske kostnader for å beregne prognoser for budsjett- og tidsplanresultater. Metoden er mer omfattende enn det de fleste smidige team ønsker, men er verdifull for prosjekter med fast budsjett og krav om ekstern rapportering.
Beste praksis for programvareprosjektledelse
Her er noen viktige anbefalinger for å lede programvareprosjekter.
Målsetting og tydelige krav
Bruk SMART-mål tilpasset programvareomfanget. I stedet for «forbedre betalingsflyten» skriver du «redusere frafallet i betalingsprosessen med 15 % innen tredje kvartal ved å redesigne betalingstrinnet og legge til støtte for Apple Pay». Hvert mål bør ha et målbart resultat, en tidsfrist og en ansvarlig person.
Den mest undervurderte delen av målsettingen for et prosjekt er å si nei. Et mål som prøver å oppnå fire ting, oppnår ingen av dem på en god måte. Begrens deg til maksimalt to hovedmål per sprint og ett mål utover det forventede. Hvis alt er en prioritet, er ingenting det.
Kommunikasjonsstrategier
Ta i bruk en kommunikasjonsstrategi der asynkron kommunikasjon kommer først. Skriv statusoppdateringer i et delt dokument eller et prosjektstyringsverktøy i stedet for å planlegge enda et møte. Reserver synkron tid til beslutninger, demonstrasjoner og retrospektiver.
Bruk en ukentlig oppsummering for interessenter, daglige standup-møter for leveranseteamet (asynkront for distribuerte team) og en demonstrasjon annenhver uke for en bredere gruppe interessenter. Hold statusoppdateringene korte og strukturerte. Begynn med hva som er levert, hva som er blokkert, og hva som kommer neste gang.
Ressursfordeling og -styring
Lag en kompetansematrise som viser hvert teammedlems styrker, utviklingsområder og tilgjengelighet. Bruk den under sprintplanleggingen for å balansere arbeidsmengden og unngå enkeltstående feilkilder. Når teammedlemmer deles mellom prosjekter, må dere fastsette prioriteringsregler på forhånd, slik at de ikke hele tiden må bytte kontekst.
Kvalitetsstandarder
Definer definisjonen av ferdig før den første sprinten starter. En god definisjon av ferdig kan omfatte at kodegjennomgangen er fullført, enhetstestene består, integrasjonstestene består, dokumentasjonen er oppdatert, og produkteieren har godkjent. Ikke la «ferdig» bety «det kompilerer».
Skriv ned definisjonen av ferdig, legg den ut et sted der teamet kan se den, og håndhev den uten unntak i de tre første sprintene. Etter det vil teamet håndheve den selv. Første gang du lar en oppgave bli merket som «ferdig» uten at kriteriene er oppfylt på grunn av tidspress, har du etablert at definisjonen er valgfri. Det lar seg aldri rette opp.
Kontinuerlig forbedring
Gjennomfør retrospektiver etter hver sprint og hver lansering. Fokuser på én eller to tiltak per retrospektiv, og følg dem opp i neste syklus. Retrospektiver som resulterer i tiltak, men ingen oppfølging, svekker raskt tilliten.
Start hvert retrospektiv med å gå gjennom tiltakene fra det forrige. Gjennomførte vi dem? Hjalp de? Hvis svaret er «vi gjennomførte dem ikke», er det temaet for retrospektivet. Enten var tiltakene ikke viktige nok til å bli prioritert, eller så har teamet ikke kapasitet eller myndighet til å gjennomføre dem. Begge deler er verdt å diskutere ærlig.
Vanlige utfordringer og velprøvde løsninger
Her er noen av de viktigste utfordringene du vil møte når du leder programvareprosjekter, og hvordan du kan løse dem.
| Utfordring | Rotårsak | Løsning |
|---|---|---|
| Ukontrollert utvidelse av omfanget | Uklare krav, svak endringsstyring | Styre for endringsforespørsler med mal for konsekvensanalyse |
| Ressursflaskehalser | Dårlig oversikt over kapasitet | Kompetansematrise kombinert med balansert sprintplanlegging |
| Problemer med teamtilpasning | Kommunikasjon i siloer | Tverrfunksjonelle standup-møter og felles OKR-er |
| Kvalitetsrisikoer | Utilstrekkelig testdekning | Kvalitetssikring tidlig i utviklingsprosessen med automatiserte porter for regresjonstesting |
| Tidspress | Optimismebias i estimeringen | Sammenligning med historisk gjennomføringstakt og buffersprinter |
Budsjettstyring og kostnadsestimater
Det finnes flere metoder du kan bruke til å estimere kostnader og timer for programvareutviklingsprosjekter.
- Analog estimering bruker faktiske kostnader fra lignende tidligere prosjekter. Det går raskt, men er avhengig av at man har sammenlignbare historiske data. Nøyaktigheten avhenger helt av hvor likt det tidligere prosjektet faktisk var, og folk har en tendens til å overvurdere likheten.
- Parametriske modeller bruker statistiske sammenhenger mellom historiske data og prosjektvariabler. Hvis den gjennomsnittlige kostnaden per historiepoeng er $1,200, kan du beregne budsjettet ut fra estimerte historiepoeng. Dette fungerer godt for organisasjoner med modne rutiner for registrering og oppfølging.
- Estimering nedenfra og opp beregner kostnaden for hver oppgave og summerer dem til en total. Det er nøyaktig, men også tidkrevende. Reserver dette til prosjekter der budsjettnøyaktighet er avgjørende (for eksempel kontrakter med fast pris, arbeid finansiert av tilskudd eller situasjoner der en kostnadsoverskridelse på 20% får alvorlige konsekvenser).
- Trepunktestimering bruker optimistiske, mest sannsynlige og pessimistiske verdier for å beregne et gjennomsnitt. Det tar høyde for usikkerhet og har den ekstra fordelen at teamet må tenke gjennom hva som kan gå galt, noe som kan hjelpe med risikostyring.
Uansett hvilken metode du bruker, kan programvare for tidsregistrering gi deg det faktiske antallet timer som er brukt på oppgaver og prosjekter, slik at du kan sammenligne dem med estimatene.
Budsjettoppfølging gjennom hele prosjektets livssyklus
Følg planlagt kontra faktisk forbruk minst annenhver uke. Verdibaserte måltall som kostnadsytelsesindeks (CPI) og tidsplanens ytelsesindeks (SPI) gir deg tidlige varsler. En CPI under 1,0 betyr at du bruker mer per arbeidsenhet enn planlagt. Oppdager du det tidlig, kan du justere omfang, tidsplan eller ressurser før budsjettet er brukt opp.
En nyttig budsjettvane jeg har utviklet, er en enkel gjennomgang av forbrukstakten annenhver uke. Sammenlign den nåværende forbrukstakten med det gjenstående budsjettet og det gjenstående arbeidet. Hvis regnestykket ikke går opp, har du nøyaktig tre alternativer: redusere omfanget, forlenge tidsplanen eller tilføre ressurser.
Forebygging av kostnadsoverskridelser
De største kostnadsoverskridelsene kommer fra tre kilder: endringer i omfanget uten tilsvarende budsjettjusteringer, undervurdert kompleksitet og sen oppdagelse av feil.
En formell prosess for endringsforespørsler som inkluderer analyse av kostnadskonsekvenser, håndterer det første. Når en interessent ber om et tillegg, bør svaret alltid inneholde «dette er hva det koster, og dette er hva det fortrenger».
Trepunktestimering håndterer det andre ved å bygge usikkerhet inn i prognosen i stedet for å ignorere den. Forskjellen mellom den optimistiske og den pessimistiske verdien er i seg selv nyttig informasjon. En oppgave der det optimistiske anslaget er to dager og det pessimistiske anslaget er tre uker, forteller deg at prosjektteamet ikke forstår arbeidet godt nok til å anslå det.
Testing tidlig i utviklingsprosessen håndterer det tredje. Kostnadskurven for feilretting er godt dokumentert: En feil som oppdages i kravfasen, koster 1x å rette, i utviklingen 6x, i testingen 15x og i produksjon 100x. Hver krone som investeres i tidlig testing, betaler seg selv.
Hva skjer videre?
Den riktige prosjektstyringsprogramvaren for programvareutvikling kan gjøre det mye enklere å implementere disse beste praksisene. Du kan også få mer veiledning om hvordan du velger riktig prosjektstyringsverktøy for dine behov.
