The thing that helped me the most personally with my estimate accuracy is estimating times beforehand, and then tracking the actual time and evaluating the accuracy of my own estimates. This is partly to get out of the mindset of trying to explain why past estimates were over/under and focus on being more accurate in the future.
Show HN: I built a free app to help devs create more accurate software estimates
41–50 of 58 posts
Re: Show HN: I built a free app to help devs create more accurate software estimates
#42Somebody asks you to walk a certain route through a city and give them an estimate of how long it's going to take. This is the first time you've ever been asked to do this. The route has stop lights, paved walkways, thick forest where you have to trample your own path, crowded areas, construction, and all sorts of other characteristics.
Think you're going to estimate that perfectly the first time? Nope. But guess what, you'll estimate it pretty well the next time you're asked to do the same route.
Therein lies the problem with software and estimates. Many times what engineers are asked to estimate is an unknown or has portions of unknowns. Without having solved the problem prior to being asked it's going to be real tough to estimate it properly. Second time around, your estimate is going to be much much better.
Most software is _not_ being asked to do something you've done once, twice or thirty times before. It's solving problems for the first time, estimates will be wrong.
Re: Show HN: I built a free app to help devs create more accurate software estimates
#43The problem with software estimates is making an estimate based off of the unknown for the first time. Somebody asks you to walk a certain route through a city and give them an estimate of how long it's going to take. This is the first time you've ever been asked to do this. The route has stop lights, paved walkways, thick forest where you have to trample your own path, crowded areas, construction, and all sorts of o…
Come up with risk classes and complexity classes, with objective measure for what is or isn't in each class. ("Class X risk involves a library/technique/platform with we are not yet familiar.").
Measure time spent on all tasks.
Collect statistical distributions for each portion of the risk/complexity grid.
Use those distributions and monte carlo simulation to estimate future projects to an appropriate degree of confidence (e.g. 95%).
This probably means scheduling lots more time than you would have before, more than you will often need, use the rest for refactoring, training, completing unforeseen and therefore unestimated tasks (bug fixes?) maintaining the FOSS you are dependent on, etc.
Re: Show HN: I built a free app to help devs create more accurate software estimates
#44If for some inexplicable reason you feel compelled to add music to an informational video, turn the volume way down and pan it left or right so those of us without perfect hearing can have some idea what's being said. Better yet, add subtitles.
Re: Show HN: I built a free app to help devs create more accurate software estimates
#45Is there any more to this app than a spreadsheet/data input form?
Not yet. I wanted a prettier way to use standard deviation for assessing the most likely value for estimate line items as well as saving those in a nice convenient way. So I built this. Eventually this will branch out to have more features, specifically for agency-style businesses where they may have several worker types with associated internal / external rates etc. For now though, I'm just gathering feedback as to…
Distribution - general term for the shape of the relationship between probability and task length.
Triangular distribution or PERT - the specific shape of least/greatest/most likely you are using
Risk or Probability - the general concept that things are not definite and involve chance.
And where you are using "Total" for each item, you want "Mean" or "Median" depending which it is.
And I don't care to know the total mean or median time for scheduling, because the project will exceed that time 50% of the time (if it's the median, more if it's mean with long-tailed distributions) I would instead want some high quantile such that the chances of exceeding the schedule/budget are low (and which quantile I pick depends on my project, what's at risk if the schedule is exceeded).
Re: Show HN: I built a free app to help devs create more accurate software estimates
#46Re: Show HN: I built a free app to help devs create more accurate software estimates
#47Please, please, stop adding background music to these sorts of videos. It adds nothing but noise, and makes it hard to hear what the person is saying. If for some inexplicable reason you feel compelled to add music to an informational video, turn the volume way down and pan it left or right so those of us without perfect hearing can have some idea what's being said. Better yet, add subtitles.
Re: Show HN: I built a free app to help devs create more accurate software estimates
#48I've a theory about that too. If you take a software development project, 80% of the stuff takes 20% of the time and 20% of stuff takes 80% of the time. Let's call the former noise and the latter the bottlenecks. A beginner estimates everything like the noise. So he's dramatically wrong. The novice though, estimates everything like bottlenecks. So he's dramatically wrong too. This is actually why, in the industry, th…
Re: Show HN: I built a free app to help devs create more accurate software estimates
#49That would be like predicting the weather with a single model, once, for the next three months. Of course that isn't going to work.
There are a few key points I think are often overlooked:
* Estimating is less about understanding time, and more about sizing a project and effort -- a study in software economics.
* Bottom-up estimates need to be based on historical performance. They should always be ranges and should include a notion of confidence. They should be democratically created if you're estimating for a team. You can do something simple (like Estimatr) or use a tool with a lot of data behind it (like Personal Software Process) - I do both.
* Top-down estimates should also be used. I often use COCOMO and COSYSMO, with monte carlo risk calculations (http://csse.usc.edu/tools/COCOMOII.php).
* The two approaches will give you two answers (both in ranges), with confidence intervals, which provides you a better sense of the size of the effort.
* Generating and publishing an estimate has a psychological effect on the team - consider that wisely (read Peopleware).
* Estimates are good for about two weeks, after that, they've become stale.
* You're not done with a project until you've recorded your performance data (for future bottom-up estimates).
* If a project is going to last three months or less, the research shows that nothing matters at all -- estimates, process, etc. -- do whatever keeps you/the team motivated.
Re: Show HN: I built a free app to help devs create more accurate software estimates
#50The problem with software estimates is making an estimate based off of the unknown for the first time. Somebody asks you to walk a certain route through a city and give them an estimate of how long it's going to take. This is the first time you've ever been asked to do this. The route has stop lights, paved walkways, thick forest where you have to trample your own path, crowded areas, construction, and all sorts of o…
Too often the first estimate turns into the plan. That's what makes us all so gunshy of estimation.
That's not a problem with estimation, though.