|
My technique isn't too far from that:
- Take a wild-ass guess at the time it would take if I were certain the requirements were firm and that there would be no interruptions while I'm working on it;
- Double the number;
- Promote the unit to the next higher value.
So if I figure I could knock it out in an hour under "ideal" conditions, I estimate "2 days." If my wild-ass guess is two weeks, I submit an estimate of "4 months." And so forth.
The remarkable thing about this approach, which I first suggested as a gag of sorts, is that it's proved to be pretty reliable in practice -- seldom more than about 10% from the actual time required, and never more than 25% off. Somehow it accounts flexibly for requirements changes, imposition of unanticipated constraints, distractions and interruptions, and acts of God. There's a lesson in there, somewhere...
(This message is programming you in ways you cannot detect. Be afraid.)
|
|
|
|
|
Richard MacCutchan wrote: Think of a number, add 2 and multiply by 3.
After giving it some Deep Thought, I'll start with 12.
"These people looked deep within my soul and assigned me a number based on the order in which I joined."
- Homer
|
|
|
|
|
Take the number they give you and multiply it by PI (3.14), for going around in circles.
|
|
|
|
|
A slightly serious answer.
Split it down into easily manageable task.
Estimate each task.
If the estimate is less than 1/2 day, round up to 1/2 day
IF the estimate is greater than 2 days, split it into smaller tasks.
Add the total.
Multiply by 2 if I am doing it, or three if someone else (not because I am better but because there needs to be additional time for them to interpret, and for contingency if I missed anything)
Round up to the nearest week or day depending how big it is.
Add a couple of days for contingency.
Present the estimate.
Be prepared to negotiate.
Note my time as I develop against each of the tasks - so next time I will be able to estimate better.
MVVM # - I did it My Way
___________________________________________
Man, you're a god. - walterhevedeich 26/05/2011
.\\axxx
(That's an 'M')
|
|
|
|
|
When I was working for a machine tool company in Dorset, we were all trained in the Carnegie Mellon University 'PSP' scheme.
PSP stands for Personal Software Process.
During the course we wrote our own statistical analysis apps and applied them recursively to the work.
The PSP yielded lots of very interesting stats about our individual performances, but in particular it revealed nuggets such as spending more time on detail design reduced bug fixing, particularly in testing phase.
Testing bugs take (if I remember) 5 times longer to fix than Compile bugs.
In addition to exposing and improving the way you work, PSP builds a database of your performance which is your property(between jobs too), and provides a statistically significant estimate of future performance of jobs.
You can use this to provide management with a probably accurate estimate.
If you're really serious about this, I'd recommend PSP.
|
|
|
|
|
Thanks for mentioning this. I have made lots of estimates over the years but am still not very good at it. I've never tried actually analyzing the data though - will look at this shortly.
GOTOs are a bit like wire coat hangers: they tend to breed in the darkness, such that where there once were few, eventually there are many, and the program's architecture collapses beneath them. (Fran Poretto)
|
|
|
|
|
|
|
+5
great article....
whenever i was asked how long does x take i felt like i´m having my back on the wall...
|
|
|
|
|
Yet another reason to get FogBugz
Politicians are always realistically manoeuvering for the next election. They are obsolete as fundamental problem-solvers.
Buckminster Fuller
|
|
|
|
|
|
محمد م. محمد wrote: How do you estimate time fir writing code?
There's the fundamental flaw. A time estimate needs to include more than just "writing code". Documentation, debugging, unit testing, feature testing, QA testing, rewriting...
So, break your requirements down into smaller chunks, recurse (and I do mean, re-Curse) until you feel like you can confidently make an estimation and if you can't, refine the requirements further. Then for every 10 hours of code writing, factor in:
1 hour for documentation
1 hour for debugging
3 hours for testing (unit, feature, QA)
2 hours for rewrite based on requirement changes and problems resulting from testing and having to update the tests and docs.
For every 500 hours of coding estimates, multiply the above additional factors by 2 to compensate for increasing complexity.
Marc
|
|
|
|
|
I try not to give an estimate, but when pushed I say they should add six months to my estimate.
This is based on experience, twice on a former job I gave an estimate:
In the first case, it turned out that a few systems we had been using turned out not to be Y2K-compliant so we had to get new systems, I had to learn to use them, and alter our code to use them.
In the second case, I thought that I could just drop some code into a new client's codebase (just as I always had), only to find that they were not using OpenVMS and Oracle PRO*C, but had instead opted for Windows NT and SQL Server (with ODBC ).
|
|
|
|
|
I'm actually glad you asked this question. This will help me as well. I've never been able to honestly estimate time. When I started working for the client I'm with at the moment, they repeatedly ask about how long I think some things may take, and I never really have an answer.
djj55: Nice but may have a permission problem
Pete O'Hanlon: He has my permission to run it.
|
|
|
|
|
Tell him you do agile development now and the first iteration is 2 weeks.
modified 20-Oct-19 21:02pm.
|
|
|
|
|
The project manager is going to always divide by 2 so I always times by 2.
"Program testing can be used to show the presence of bugs, but never to show their absence."
<< please vote!! >>
|
|
|
|
|
(MyEstimation + 15%)*2, well, ±...
|
|
|
|
|
|
Usually I take a guess at first using the spec completeness and complexity and then I multiply by 2 or 3 depending on my knowledge of both the code and the architecture.
How else do you expect to be seen as a miracle worker === Scotty STNG
|
|
|
|
|
Remember to offer to your customer (or boss) that they can get it done (1) fast, (2) cheap, or (3) good. Pick any two.
|
|
|
|
|
|
محمد م. محمد wrote: How do you estimate time fir writing code?
Badly
CPallini wrote: You cannot argue with agile people so just take the extreme approach and shoot him.
:Smile:
|
|
|
|
|
Shelby Robertson wrote: CPallini wrote: You cannot argue with agile people so just take the extreme approach and shoot him.
:Smile:
Are you referring that all agile people are males?
|
|
|
|
|
محمد م. محمد wrote: Are you referring that all agile people are males?
Yes. I think its illegal to shoot female software developers, as they are an endangered species.
CPallini wrote: You cannot argue with agile people so just take the extreme approach and shoot him.
:Smile:
|
|
|
|
|
Shelby Robertson wrote: I think its illegal to shoot female software developers
This sound nerdish
|
|
|
|