How to estimate programming time

Beautiful techniques for estimating how long it takes to create software

I really want to tell you how I estimate the time required to build a software project.

I have been asked hundreds of times in the past ten years.

  • "We need to implement this feature. How long will it take you?"
  • "In terms of time, please give me a detailed overview of how much time this project will take. 1 month? 2 months?"
  • "I want you to ship. Is 50 hours of billing time enough?"

The answer to these questions is eitherbet, In the most optimistic scenario. Or aLeap of faith, Knowing that if I agree to the phone number, it may be my salary, and has nothing to do with the actual time spent.

Sometimes, for long-term customers, I can use projects that finish work earlier than I expected to amortize projects that exceed my estimates and inform the client.

Eventually I finally said "I can't estimate".

Therefore, the answer to "I really want to tell everyone how I estimate the time required to build a software project" is:I do not.

But i can estimateNo one can really estimateWhen building software, this area may be disadvantageous to you.

"A real engineer" will be difficult to accept, but I have never been your typical real engineer type.

When working as a developer, estimation is probably the most difficult thing.

This is a cool reference table that can be used when you need to estimate tasks

task You guess you forgot Actual time required
A small bugfix 2 minutes We need to find the error function git pull in the source code, check if any other functions are not broken, we need to add some tests, run the tests, fix our broken tests, deploy, update the bug tracker 2 hours
Secondary function 2 hours You need to fix the TODO left in the code in the function to be edited, and see why there is one//don't touch thiscomment. You need to carefully perform manual testing and browser testing, and check why Edge is not working properly. Oh, we need to update all the screenshots in the document 10 hours
Improve endpoint performance 10 hours You need precise benchmark tests that can be used to prove that your new implementation is working properly, and add 10 other tests that did not exist before, otherwise you may break the production code used by 10,000 customers 5 days
Rewrite the entire front-end code 3 weeks You just start overMore scalableYou tried to use the framework without touching the UI, but encountered a whole new set of problems, but no StackOverflow or Google can help this time because the framework is too new. You have encountered a unique problem and you need to hire a library maintainer to work with you, but he is already working on the next great thing. When you use it, the UI team decided to make two complete rewrites of the interface. Mid-term product managers want to switch to slightly different products 12 months

This may be a good estimate for our lack of estimates, but of course things can also be the opposite: one thing you estimate may take 5 days, and it may only take 1 day, because you find that everything has been added and costs have been added. Much less than expected.

Some people may overestimate, predicting that they may encounter difficulties, and their thinking has increased by 30%.

Team project estimation is more difficult, and I won't even try.

What should I do then?

I suggest not to have continuous communication with the customer or boss or the person who commissioned your work, instead of making detailed estimates and checking the progress of the project every week. There is no need to predefine when the process ends.

Because after all, this process will never end.


More experimental tutorials: