Live data from Hacker News

Why Can't Developers Estimate Time?

blog.patchspace.co.uk

51–60 of 134 posts

Re: Why Can't Developers Estimate Time?

#51
It is always a mistake to ask: "how long will this take you?"

I've spent my career as a lawyer dealing with this problem.

The solution is to choose a price that represents the value proposition of the output (whether it's code or contracts). As part of that price, you will bring a comprehensive process to the table – one that is very clear about what the client is expected to provide.

I have gathered a huge amount of timekeeping data from lawyers, and crunched it up, down, left, right and center over the years. Here is what I learned:

1. If a task can be defined, it has a predictable price.

2. Tasks should not be measured by how long they take start to finish, but rather by how much time is actually required to complete them.

3. A clearly defined task always takes just about the same amount of time. The start to finish time is variable because:

(a) the client is faster or slower at providing resources or information; and

(b) your other client work is causing bottlenecks in your own availability.

4. You can solve for (a) and (b) above. I'll leave it to your imagination how. That's my secret. ;)

Re: Why Can't Developers Estimate Time?

#52
Because estimates are not committments.

http://cwd.dhemery.com/2003/08/estimates_are_not_commitments...

"If you ask Fred, “When will you be done?” have you asked for an estimate or a commitment? What does Fred think you asked for? If Fred says, “Two weeks from today,” has he given an estimate or a commitment? What might happen if you want a commitment and Fred thinks you want an estimate? What might happen if you want an estimate and Fred thinks you want a commitment? How could you make it crystal clear whether you’re asking for an estimate or for a commitment? How could you make it crystal clear whether Fred is giving an estimate or a commitment?"

Re: Why Can't Developers Estimate Time?

#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, with each decision requiring input from lots of people, plus a bit of experimentation and rework. The process of getting to a decision is hard to estimate and the amount of development that each decision will create is impossible to know until the decision has been made.

Estimating a software project is like estimating the length of time it takes to get a law passed. It's not a computer science or even an engineering matter, its a political/ psychological one.

Re: Why Can't Developers Estimate Time?

#54
post #42

Earlier quoted context omitted.

What could replace it?

A serious attempt to provide a precise, correct answer to the ? "What do I really want done?"

So things like prototyping, UML, use cases, and Agile were not a "serious attempt" to answer that? I think it's also unwise to tell your manager "it'll be done when it's done."

Re: Why Can't Developers Estimate Time?

#55
Once a developer has done a project, he can give a good estimate of how long it would take for him to do that project again!

Really, it's easy for developers to estimate time much the same way plumbers, carpenters, auto body shop workers, general contractors, dentists, etc. do: When a developer has done a very similar project more than 10 times recently, they can give a good estimate for how long it will take to do the project once more.

This situation is quite general in engineering and other work of wide variety.

Similarly, in general, when some project is being done for the first time, with no prior experience with comparable projects, then time estimates are tough to give.

In particular, for 'developers', now they work heavily with 'parts, pieces, and tools' from others, and working with these for the first time encounters standard problems: (A) How to use the parts, etc., needs good documentation rarely available. (B) Newer parts, etc. commonly have strange behavior or actual bugs that have to be encountered, diagnosed, and worked around. So a developer does not know how much time will be spent mud wrestling with (A) and (B).

Re: Why Can't Developers Estimate Time?

#56

Earlier quoted context omitted.

What you describe is, in essence, iterative development: Producing quick prototype and then fix it until it satisfies production needs.

Well, yes, but too often "soft" requirements get lost, like performance or the ability to be supported by anyone who wasn't the author. I'm not IN support, but I've been there and man I feel for those guys. Getting crap dumped on them that has no documentation, architectural designs that were pulled from someones backside in the heat of the moment of getting it done quickly, inconsistent standards being applied, whee…

On the bright site, budgets for support are much higher, because application is in production and generates real money. So even though it's hard to support messy code, there is no risk that all these efforts will be wasted on something useless.

Re: Why Can't Developers Estimate Time?

#57
post #18

There are human timescale factors involved. If you give an estimate that's too far out, it'll be outside your client's planning scale. That means it's so far out, she doesn't know what will happen by then, she won't do the project. In my experience, this is scale is roughly 9-12 months, unless you're dealing with a MegaCorp. So most estimates end up at 6-9 months, which then slip into 9-12 territory, and hopefully no…

she genuinely believes that it can be done in 2 weeks

This is where having good historical records is useful. If I have done 2 similar tasks before and they took a month each, then a 2-week estimate has no validity.

As far as general code estimation goes, lines of code and complexity taken together form a pretty good metric. If I estimate I have to write 50 lines of high-performance multithreading code, I might say it will take 8 hours. If it's 50 lines of fizzbuzz, estimate drops to 1 hour.

But like you say, that's just coding (and unit test). The full task probably requires (1) getting or understanding requirements, (2) at least some cursory thought about design and (2a) having a hallway review with somene if you're not sure. Then when we're done with code, unit test (don't forget to estimate how long it will take to create, debug and run the tests) and Code Review (how many reviewers do you need, how long will it take them to get around to inspecting your code, etc), someone has to estimate (4) how long the test team will take to write test cases and do the system test of the new feature, (5) tech docs has to update the user manuals, (6) sysadmin or the Release Master estimates how long deployment will take.

In short, at least in the environment I work in, that 50 lines of code that took eight hours to write, will easily require an entire week before any customer can see it. In my experience, it's often not so much that the developer didn't estimate accurately how long coding would take, it's that the developer never thought about all the ancillary tasks that have to be done (code review, unit test, documenting the design changes, etc), so they were not in the estimate.

Re: Why Can't Developers Estimate Time?

#58
post #54

Earlier quoted context omitted.

A serious attempt to provide a precise, correct answer to the ? "What do I really want done?"

So things like prototyping, UML, use cases, and Agile were not a "serious attempt" to answer that? I think it's also unwise to tell your manager "it'll be done when it's done."

[deleted]

Re: Why Can't Developers Estimate Time?

#59
post #42

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 could replace it?

That is hard to say and it would be a book worthy to explain what could come next. All I know is that it is unsustainable.

The complexity is simply too high and it's not getting better. One of the reasons I think why you see the fail fast movement be so successful.

Once you accept that failure is part of the process, once you abandon the "zero mistake" policy that many large organizations instill internally and externally you will begin to approach projects differently.

The truth is that "zero mistake" organizations make as many mistakes as everyone else, they just have the financial strength to ignore them as long as economy of scale works in their favor.

I could write forever about projects that went wrong not because the developers where bad but because the premise that fuels product development is broken.

I blame primarily business schools and large parts of academia for this. But it could extend all the way into the way the stock market is structured.

If you buy my premise that post-industrial is different than industrial age. That project definition is primary and time is secondary today. Then it does put some doubt at least in me about whether the stock markets focus on growth and Q's is sustainable.

Nature seems to be doing a good job as pacing various processes. It takes nine months to give birth to a child. One cell at a time. But the process is ongoing.

Nature is the ultimate continues deployment strategy.

Edit: Fixed lame false modesty in the end!

Re: Why Can't Developers Estimate Time?

#60
post #54

Earlier quoted context omitted.

A serious attempt to provide a precise, correct answer to the ? "What do I really want done?"

So things like prototyping, UML, use cases, and Agile were not a "serious attempt" to answer that? I think it's also unwise to tell your manager "it'll be done when it's done."

You know there is a saying in the creative industry when project managers come knocking on your door.

"You want it know, or when it's done?"

My personal experience is that most deadlines are primarily perceptual.

Post reply on HN