Live data from Hacker News

Why Can't Developers Estimate Time?

blog.patchspace.co.uk

111–120 of 134 posts

Re: Why Can't Developers Estimate Time?

#111
post #42

Earlier quoted context omitted.

What could replace it?

Instead of replacing estimation, I would say that you should embrace the problem in estimates - uncertainty. Convey the uncertainty you have about a task to those you work with, and then you can start to factor in the risks of uncertain tasks. I build project management software for a living at LiquidPlanner. Everything we do be it development, design, or marketing is based on ranged estimates. We don't always get th…

Yep.

I used to work for big oil, and they would have 100-200 million dollar projects. Not software projects, actually building plants. Similar to software development, these were basically prototypes. Yes a lot of the technology was known, but they weren't exactly building cookie-cutter houses.

So the first round of estimates would be something crazy like +/- 80%, both money and timeframe.

If that seemed good, then they'ed fork over the money to get more specifications and more details, and come up with a new estimate. Maybe +/- 50%. Then they'd re-evaluate the viability of the project. And do that a few more times, spending more money and time each iteration, before they actually committed to the project or dumped it. At that point, the estimates were quite accurate.

So basically, the software version. How long will that feature take?

An experienced developer can spitball an answer. About a week. Then they start working on it. After a day-and-a-half, they're going to have a better idea if that's actually a three day project or a two-weeker or if it ain't gonna happen.

Or maybe they need a day-or-two or a week to do a spike to be able to provide that estimate. All well and good if you let them do the spike. Not so good if you demand an estimate when the developer has clearly said he has no idea.

Re: Why Can't Developers Estimate Time?

#112
post #108

Earlier quoted context omitted.

> the problem is that if you promise a manager something The real problem is thinking of "estimates" as "promises" when really they're rough guesses. If you go around holding people to a guess as if it were some kind of gospel biblical contract then yes, they will lie their ass off to protect themselves. Combine that with the fact that most organizations attempt to control the platform used, computers used, monitor s…

Sometimes they are promises. To customers. Who've already paid for it. :S

Ohhh, my bad, I totally forgot that people like selling things that don't exist but telling everyone else they do exist.

Re: Why Can't Developers Estimate Time?

#113
Estimates are unimportant. Why? Because most conversations about estimates go thusly:

Client: "How long will it take?"

Dev: "Approximately three weeks."

Client: "We need a firm date."

Dev: "Fine, April 29th."

Client: "Unacceptable. We require this functionality by April 10th."

Dev: "I could only possibly do it by April 10th by having the entire team work day and night until then."

Client: "Excellent. We look forward to launching on the tenth."

And then, they're pissed off when you pull off the incredible and deliver a three week build in three days.

Fuck everything about this business.

Re: Why Can't Developers Estimate Time?

#114

A big part of the problem is that management often isn't interested in honest estimates. You can certainly find better practices in some organizations, but in many organizations, a certain team gets tasked with completing a certain assignment by an arbitrary deadline and no attempt is made to reconcile the triple constraints with reality. In a context like that, developers may not be asked to make estimates, and if t…

> The good news for both developers and managers is that estimation is a learnable skill. If you get in the habit of making estimates and testing them, you'll get better amazingly fast.

To an extent, though, the better you are at programming, the worse you'll be at estimating.

A bad programmer, given a one-week task similar to one he's done before (when it took him two and a half weeks), will estimate it at two weeks and do it in two weeks, plus or minus a bit.

A good programmer given the same task will try to apply the previous solution, or use a library that solves the problem, and usually get it done in two to four hours. But some of the time that won't work, and then they will spend three days doing what would have taken the bad programmer two weeks, and a fourth day generalizing it so that when they have to do a similar task the third time, they can do it in two to four hours.

The good programmer's estimate will, therefore, frequently be off by a factor of ten or more.

In short, the better you are at automating what you've previously done, the more time you spend doing things you haven't done before, and so the more uncertain your estimates are.

The central limit theorem says that if you add up enough independent random variables from whatever distribution, their sum will eventually start to look like a Gaussian normal distribution. Unfortunately, this isn't as useful as you might think for software project estimation, both because different tasks aren't independent and because when the underlying distribution is heavy-tailed (e.g. lognormal, exponential, etc.) "enough variables" can be much larger than the number of tasks in your project: in the hundreds or thousands.

Re: Why Can't Developers Estimate Time?

#115
post #108

Earlier quoted context omitted.

Sometimes they are promises. To customers. Who've already paid for it. :S

Ohhh, my bad, I totally forgot that people like selling things that don't exist but telling everyone else they do exist.

I suppose the epitome of this would be pre-orders for Duke Nukem Forever?

Re: Why Can't Developers Estimate Time?

#116
post #53

Pure coding is easy to estimate accurately. If you asked a developer to estimate how long it would take to hand write a class for every HTTP status code in v1.1 of the standard (and gave them a copy of the standard), they could probably give you an accurate figure. Of course, most development projects are not like that. The pure coding part of it is interspersed with countless decisions about how the app should work,…

> If you asked a developer to estimate how long it would take to hand write a class for every HTTP status code in v1.1 of the standard (and gave them a copy of the standard), they could probably give you an accurate figure.

Yes, but that's explicitly demanding that they write the software incompetently. Writing software incompetently, by mechanically carrying out actions that ought to be automated, is easy to estimate. But if I thought I needed a Java class for each HTTP/1.1 status code, I'd write a Perl script to generate them, be done in a tiny fraction of the time, and have a vastly more maintainable codebase.

Your other point about multiple stakeholders is well taken, of course. But even when it comes to solving a well-defined problem, it's easy to misestimate by orders of magnitude.

Re: Why Can't Developers Estimate Time?

#117
post #100

Accurate estimation is certainly possible and is practiced by professionals, I do it myself. It's a skill though and it requires ground work in advance. Those interested may find discussion of some methods in McConnell's "Software Estimation: Demystifying the Black Art". Humphrey's PSP materials are an earlier but useful source of information. The skill is irrelevant in most workplaces though. In most cases time to d…

What do you think of my points in http://news.ycombinator.com/item?id=2425838 about automation? It sounds like you disagree with them but I don't understand why.

Re: Why Can't Developers Estimate Time?

#118
post #76

I find that only bad managers ask "how long will this take you?" and idiot manager will take what ever time you give them and try to cut that short or judge time for the developers or engineers; like "this should be easy and will only take few day". Good manager that have "developed" before will ask "how much work is left?" and "What are some of the out standing problems that need to be resolved?" Look for the good o…

You're right that managers who understand your job can make life a lot easier. But this goes both ways. I find that understanding what constraints my management is under can help me to help them plan.

When you understand what their problem is (e.g. we promised X to the client and we have to make it work somehow), you might be able to rearrange things to make that possible. Of course, an ounce of prevention is worth a pound of cure: if you can help them avoid promising the impossible, you'll be a lot better off. Otherwise, you end up suffering due to arbitrary deadlines created for the sake of looking good. If you can find better ways for your boss to look good than impossible deadlines, you'll be way ahead. I grant, though, much of this is easier said than done.

Re: Why Can't Developers Estimate Time?

#119
post #108

Earlier quoted context omitted.

Sometimes they are promises. To customers. Who've already paid for it. :S

Ohhh, my bad, I totally forgot that people like selling things that don't exist but telling everyone else they do exist.

Or promises to customers for custom software. They don't pay except on acceptance, but they won't pay more than the estimate.

Of course, then you run into some of the same situations as described.

shrug

Re: Why Can't Developers Estimate Time?

#120

Time estimations is an industrial way of thinking applied to a post-industrial world. In the post industrial world time isn't the problem but rather project definition and scoping. In the industrial world the problem was already solved (machine was built, market often established and output depended on a few factors that could be adjusted. Need more output add more of X) In the post industrial world every project is…

What's needed may just be to solicit a wide confidence interval (e.g. "this task will take between 20 minutes and 1 month, and I'm right 90% of the time recently when making such estimates"). You can drop the lower-bound part, probably.

People absolutely should be able to provide a rough estimated amount of effort for a task. The trouble is in using a single point to describe the whole probability distribution. You may be right, in that nobody seems to have a great way of soliciting a probability distribution (or even a single probability) that makes sense. Something like a 70% confidence interval bracketing the amount of effort would be useful, but not sufficient.

I also agree that even if people could describe their beliefs about the required effort rigorously, you have to wonder how much planning/analysis they should spend trying to come up with a tight estimate. An 'outside view' - http://wiki.lesswrong.com/wiki/Outside_view - could give something reasonable in cases that aren't too novel.

I think estimates will never become useless. It's just that we may decide to replace them with "time by which we'll be late only 1/6 of the time", and provide feedback and incentives for people to correct this estimate so that it's, for someone who's experienced in the domain, eventually relatively unbiased.

Post reply on HN