![]() |
Timmar per rader kod?
Jag försöker estimera en tid som skett för en applikation baserat på antal rader kod som implementeras.
Enligt de siffrorna jag sett så tar det i snitt 1 timme per 5 rader kod som skrivis. Är detta en bra estimering, eller är det någon som har en bättre? Siffran är förmodligen baserat på tiden det tar att gå från ide till slutprodukt. |
Det är inte optimalt, för i slutändan så belönar man personer som skriver mycket kod istället för de som skriver ren och optimerad kod. Det är bättre att ta betalt för funktionalitet och kvalitét. Då tjänar båda parter på det då man vet vad man får betalt för.
Om en kodsnutt kan skrivas med tre rader kod, buggfritt, varför ska man då belöna någon för att de skriver samma funktionalitet på 100 rader med en massa buggar istället? |
Att faktiskt skriva koden är en mycket liten del av utvecklingsarbetet. Ditt exempel känns inte orimligt.
|
Citat:
|
Räkneexemplet blir väldigt missvisande. Det skulle vara som att säga att mäta en snickares arbete efter antal spikar. Det mesta arbetet har ju inte med spikarna att göra. Dessutom kanske han i så fall använder fler spikar för att kunna ta mer betalt.
De stora delarna i applikationsutveckling är t.ex. planering, dokumentation och testning. Kodningen är som de andra skriver bara en liten del. |
Citat:
|
Citat:
Har du någon annan statistik så får du gärna redovisa den. Jag har bara hört lite siffror ryktesvägen. |
Jag skulle för tappa förtroendet och tekniska respekten för någon kollega eller uppdragsgivare som ens föreslår att räkna på rader kod. Hur stjärnorna står vid fullmånen eller hur kaffesumpen svirar sig är bättre. Med all välmening, tänk om!
Har personen som gjort koden absolut ingen uppfattning om hur många timmar han lagt ner? Förstod inte riktigt om koden var skriven redan. |
Citat:
Tiden jag spenderar att planera kodbasen, före och under själva implementeringen är så oerhört hög, bra mycket större än vad man i många fall anar. Själv har jag löst en hel del problem i duschen och på bussen, inte har jag en tanke på att räkna med den här tiden när någon frågar hur långt tid det tog att bygga projektet. |
Jag deltog i ett projekt som bestod av ca 3 miljoner rader kod, och som tidsestimerat till 250 manår, men vi skrev det klart på 30 manår.
Det betyder ca 3 000 000 / (30*1200) dvs 3 000 000 / 36 000 dvs 83 rader /timme. Det betyder ca 3 000 000 / (250*1200) dvs 3 000 000 / 300 000 dvs 10 rader /timme. Systemet bestod av ca 555 tabeller i en relationsdatabas. Det betyder ca 65-540 timmar per databastabell. Med andra ord så kan estimaten skilja sig en del beroende på hur komplex ett system är. När man använder tumregler så är det bra att ha flera olika att jämföra med. I fallet med 83 rader per timme så var 97% genererad kod. När man estuimerar hur många timmar ett stsem har tagit att utveckla så behöver man veta massor av olika "metrics": - hur många databastabeller - Hur många Releationer mellan tabeller - Hur många skärmar (indelade i minst 3 oliak sårighetsgrader) - Hur många "functionpoints" - Hur många "fält" för data, beräkningar m.m. - Hur många "användningsfall" Flera kan delas in i olkika svårighetsgrader. |
Skiljer ju otroligt mycket. I vissa fall kommer vi behöva använda oss utav algoritmer som består utav endast 1-3 rader. Men som kanske tar 3-4 timmar att lösa. Samtidigt kan vi ju mycket väl hinna med en enklare funktion med 150 rader på motsvarande tid.
Man får nog helt enkelt se till hur komplext systemet är som man har byggt. |
Citat:
Om du skall beräkna tid så bör du först och främst ta fram en detaljerad kravspecifikation, Efter det bryter man ner varje punkt och gör en beräkning av hur lång tid det tar att göra. I slutändan får ni då en ungefärlig siffra hur lång tid det tar att utveckla. Dubbla den siffran med 2 så har ni en ganska rimlig tid på hur låg tid det tar att utveckla. Dessutom är ett stort antal rader kod ofta en indikation på att man byggt systemet fel. Desto mindre rader kod desto bättre system, så funkar det nuförtiden! |
Vad TS är ute efter är att uppskatta hur mycket arbete han själv lagt ner på ett projekt.
Det är inte bra att räkna i antal rader kod, men för att få en rimlig måttstock kan du jämföra med ett annat projekt du själv gjort där du vet hur mycket tid du lagt ner. Om du då räknar ut tid per rad kod så kan du uppskatta ditt hobbyprojekt ganska bra. Detta förutsätter att det är du själv som har skrivit båda projekten. Det går inte att jämföra "rader kod per timma" mellan olika utvecklare. Det är också svårt att jämföra mellan olika projekt, men två liknande projekt med samma utvecklare bör ha samma ungefärliga tidsåtgång "per rad kod". Det bästa är självklart att löpande föra anteckningar men det vet man ju hur kul det är när det är ett hobbyprojekt :p |
Hur lång tid det tar per kodrad skiljer sig nog väldigt mycket mellan olika utvecklingsmetodiker(vissa fokuserar på att minimera slack, vissa på att göra rätt ifrån början etc.), olika utvecklare(olika utvecklare arbetar på väldigt olika sätt, speciellt frilansare eller hobbykodare) och olika projekt(Komplexiteten och planeringsbehovet skiljer sig väldigt mycket mellan olika projekt).
Därtill vet man ju kanske inte så mycket om hur mycket av koden som gjorts om eller hur mycket kod som kastats. I de fallen innebär det ju mycket dubbelarbete som inte alls syns i antalet kodrader. I de flesta större projekt är det oftast bara 10-20% av arbetstiden som läggs på faktiskt utveckling/programmering. Så genom att mäta antalet kodrader får man ju då bara med en liten del. Mitt tips är väl att du mäter tiden och antalet kodrader på något annat av dina projekt med ungefär samma komplexitet och planeringsbehov för att sedan jämföra. Det är nog det sätt du skulle kunna få en hyfsad, men ändå väldigt grov, uppskattning. |
Alla tider är GMT +2. Klockan är nu 09:44. |
Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson