Bland 1 471 IT-projekt som Bent Flyvbjerg och Alexander Budzier studerade vid Oxford var den genomsnittliga kostnadsökningen 27%. Det låter hanterbart. Rubriken som göms under är det inte: vart sjätte projekt var en "svart svan" som sprängde budgeten med 200% och tidplanen med nästan 70%. Offerter glider inte bara iväg. En betydande andel av dem exploderar.
Så när någon räcker dig en siffra för ett mjukvaruprojekt är den ärliga frågan inte "är det här rätt pris?". Den är "hur byggdes den här siffran, och håller den vid kontakt med verkligheten?". Låt oss dra undan ridån.
De flesta offerter är fel, och datan är brutal
Standish Groups långa CHAOS-studie fann att bara cirka 16% av mjukvaruprojekten levereras i tid och inom budget med överenskommen omfattning. Ungefär hälften hamnar i facket "utmanade": försenade, över budget, eller tyst saknande funktioner. Resten avbryts helt.
Läs det igen. Sannolikheten att en mjukvaruoffert stämmer ligger närmare ett mynt som landar på kant än något säkert. Det beror inte på att utvecklare är slarviga. Det beror på att uppskatta det okända är genuint svårt, och människohjärnan är byggd för att göra det dåligt.
Planeringsmisstaget: din hjärna är buggen
År 1979 satte Daniel Kahneman och Amos Tversky namn på boven: planeringsmisstaget, den systematiska tendensen att underskatta tid, kostnad och risk samtidigt som man överskattar nyttan. Det grymma är hur svårt det är att skaka av sig. Biasen är robust över kulturer, erfarenhetsnivåer och personlighetstyper, och den kvarstår även när du känner till den. Att fråga en optimistisk utvecklare "är du säker?" hjälper inte; hen var säker första gången.
Varför händer det? Vi uppskattar projektet vi föreställer oss, där kraven är tydliga, ingen blir sjuk, API:et är korrekt dokumenterat och kunden godkänner första utkastet. Verkligheten levererar ett annat projekt. Personal byts ut, prioriteringar skiftar, den "enkla" integrationen har tre odokumenterade specialfall. Offerten beskrev ett projekt som inte längre finns vecka två.
Så byggs en riktig offert
En pålitlig offert är inte en enda självsäker siffra plockad ur luften. Den är en process som omvandlar fyra röriga ingångsvärden till en försvarbar summa:
- Omfattning. Varje skärm, endpoint och adminflöde nedskrivet. Vag omfattning är den enskilt största källan till överskridanden, eftersom allt oskrivet antas bort.
- Okända faktorer. Den ärliga listan över vad vi ännu inte vet. En bra estimerare prissätter det okända uttryckligen istället för att låtsas att det är noll.
- Komplexitet. Ett inloggningsformulär och en realtidsmotor för fakturering i flera valutor är inte samma rad, även om båda är "en funktion".
- Risk. Tredjeparts-API:er, oklara krav och hårda deadlines bär var och en en buffert, dimensionerad efter den verkliga risken snarare än en platt procentsats av hopp.
Varje funktion får sitt eget intervall, inte en enda punkt. Intervallen summeras, de riskfyllda posterna bär sin egen reserv, och resultatet specificeras så att du ser var varje timme tar vägen. När siffran byggs så här kan du granska den. När den är en enda rund siffra utan uppdelning kan du inte, och det är oftast avslöjandet.
Så gör vi på True Dev
Vi har byggt mjukvara sedan 1997, och mönstret bakom varje sprucken offert är detsamma: någon gissade istället för att bryta ner. Så vi vägrar att gissa. Varje offert vi skickar är specificerad per funktion, med omfattningen nedskriven, de okända faktorerna uttalade och risken prissatt där den faktiskt bor. Sedan binder vi oss till en fast offert, så att reserven är vårt problem att hantera, inte en överraskning vi skickar vidare till dig senare.
Det är också därför vår projektstart ställer de lite jobbiga frågorna i förväg. Varje okänd faktor vi reder ut innan vi offererar är en okänd faktor som inte kan bli en 200-procentig svart svan halvvägs in. En bra offert är inte ett löfte om att inget kommer gå fel. Den är bevis på att vi redan tänkt på vad som kan gå fel. Du ser hur det här spelar ut i våra tjänster, där arbetet är avgränsat, transparent och prissatt som en process snarare än en bön.


