|
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
|
|
|
|
|
There is something called COCOMO that was developed and used almost 30 years ago to estimate time although it may not be applicable exactly to your work. However, its approach of taking into account many various technical (e.g., estimated number of modules or lines of code) and human (e.g., number of developers on the team that are skilled and familiar with the technologies) factors is going in the right direction. But not matter what estimates are produced, management will browbeat the time downward and the development team almost always work like hell to meet the deadline.
|
|
|
|
|
I start by estimating a number based on experience. I only use factors of ~2. e.g. 1h, 2h, 4h, 8h, 1d, 2d, 4d, 2w, 1m, etc. Anything more specific is just a guess.
Then I quadruple it.
1/4 is to make up for the fact that I'm lying to myself about how long it will take.
1/4 is for when I come across bug X in component Y and waste a day or more on it.
1/4 of that is so I can properly document the project, code, and write a developer's manual.
I am meticulous about keeping track of my time, and lately I have been within 10% of my estimate.
|
|
|
|
|
Yvan Rodrigues wrote: Then I quadruple it.
1/4 is to make up for the fact that I'm lying to myself about how long it will take.
1/4 is for when I come across bug X in component Y and waste a day or more on it.
1/4 of that is so I can properly document the project, code, and write a developer's manual. Where did the remaining 1/4 go?
|
|
|
|