Live data from Hacker News

Software Development Estimates: Where Do I Start?

diegobasch.com

21–30 of 100 posts

Re: Software Development Estimates: Where Do I Start?

#21

> The gist of why estimates are hard: every new piece of software is a machine that has never been built before. I am tired of the argument that we unique snowflakes amongst all professions and that consequently we deserve special treatment. We aren't. All professions deal with uncertainty and most of them deal with it deliberately[1]. Throwing your hands in the air because a perfect prediction is impossible is just…

If you go into a gymnastics club and you can't do a backflip, that doesn't mean backflips are impossible in principle. It means you can't do it. Estimation is a skill too. Cute metaphor, but I'm calling bullshit. Fundamentally, if something is completely new, sometimes nobody knows if it's even possible. Granted, that's almost never the case for software algorithms. But holistically speaking, in real software-centric…

The Manhattan Project was authorised because it could be shown that an atomic weapon was possible. Nobody had any idea how to build one or how it would work -- they just knew that a calculation based on runaway radioactive breakdown implied a large release of energy.

But how often are we doing a Manhattan Project, where research is a major initial output? Not very often at all. Throwing out estimation for all projects because some of them contain genuine, irreducible novelty is an example of the Nirvana Fallacy.

> But holistically speaking, in real software-centric systems, it happens: particularly when hardware, external system integration, some form of regulation, unique knowledge individuals, or any kind of third party are involved.

These are examples of uncertainty, not novelty. They exist in real non-software-centric systems too. The way you deal with them is to widen the ranges on your early estimates and then look for ways to reduce the uncertainty.

Edit for your edits:

> In the real world, people truck on anyway with relative confidence and frequently reform an informal estimate along the way.

Nothing about having a deliberate estimations process means "we will only do it once" (I suppose that's why you said it's a waterfall thing to do). In fact you should be re-estimating as you go to narrow the cone of uncertainty. One of the nice thing about agile methods is that this tends to be built into the overall loop.

> Perhaps with the 'agile' trend we're finally shifting beyond that.

Agile estimation works by frequently re-estimating. Traditional estimation works from size and then derives other measures. Agile holds other measures constant and then takes the integral of current velocity, which is ... size!

Even the word velocity correctly points out that both of these are two sides of the same bit of conceptual calculus.

> without wasting time hiring a project manager to estimate

Where did I suggest this? In software estimating the consensus is that the developers should be the ones who create estimates. They know the most about software development in this particular environment, after all.

Re: Software Development Estimates: Where Do I Start?

#22

My favourite book on software estimation is McConnell's Software Estimation: Demystifying the Black Art . As usual he takes a vast body of literature and boils it down into a chatty, usable book. The tables and checklists are worth the sticker price on their own.

"As usual" for what - a book, the author, a book series called Demystifying the Black Art ?

As is usual for McConnell. All his books are excellent.

Re: Software Development Estimates: Where Do I Start?

#24
There is a way to get a perfect estimate - and that is to build it and see how long it takes.

Everything else is using an abridged model is short-cut the process. However, I think this is an important point. Estimating is somewhat akin to actually building the end-product.

The reason I find this important is that the most common spiral of death I see is re-estimation. You take on something unrealistic, plough on regardless, realise too late, then you re-estimate. The re-estimation causes a project stall and takes time. The end result being you have less time.. Few months later you're in the same boat again (repeat).. Big organisations are really prone to this.

Re: Software Development Estimates: Where Do I Start?

#25

There is a way to get a perfect estimate - and that is to build it and see how long it takes. Everything else is using an abridged model is short-cut the process. However, I think this is an important point. Estimating is somewhat akin to actually building the end-product. The reason I find this important is that the most common spiral of death I see is re-estimation. You take on something unrealistic, plough on rega…

> There is a way to get a perfect estimate - and that is to build it and see how long it takes.

The concept of a "perfect estimate" is tautological, isn't it? Estimates are by their definition uncertain statements.

Re: Software Development Estimates: Where Do I Start?

#26

> The gist of why estimates are hard: every new piece of software is a machine that has never been built before. I am tired of the argument that we unique snowflakes amongst all professions and that consequently we deserve special treatment. We aren't. All professions deal with uncertainty and most of them deal with it deliberately[1]. Throwing your hands in the air because a perfect prediction is impossible is just…

> I am tired of the argument that we unique snowflakes amongst all professions

Aren't we, though? Zero marginal cost of production is at least very rare. It basically means that to the extent that our projects aren't novel, then we're wasting time duplicating something that ideally would have been copied from elsewhere.

And that not even getting into the very high rate of change in tools, techniques, and materials (e.g., http://www.jcmit.com/mem2013.htm), which, if not completely unique, is certainly unusually high.

> But when you see very wide ranges on an estimate, it's a signal that the problem is poorly understood.

That is occasionally a sign of idiocy. But at least on the projects I see, it's much more often a sign that it's an interesting problem. Indeed, if you're delivering software in a competitive market, it's guaranteed the problem will remain poorly understood, because your competitors will be doing their best to create changes in the landscape.

Re: Software Development Estimates: Where Do I Start?

#27

There is a way to get a perfect estimate - and that is to build it and see how long it takes. Everything else is using an abridged model is short-cut the process. However, I think this is an important point. Estimating is somewhat akin to actually building the end-product. The reason I find this important is that the most common spiral of death I see is re-estimation. You take on something unrealistic, plough on rega…

> There is a way to get a perfect estimate - and that is to build it and see how long it takes. The concept of a "perfect estimate" is tautological, isn't it? Estimates are by their definition uncertain statements.

I believe that's his point.

Re: Software Development Estimates: Where Do I Start?

#28
My main trick these days for this problem is to discourage estimation by pointing out the costs of it and putting the burden on the requesters.

One great way to do that is to release early and often, allowing stakeholders to change plans in response to what they've learned. Instead of doing the work of (re-)estimating a bunch of stuff every week, their focus on what's actually going on lets them stop obsessing about arbitrary dates and semi-fictional plans.

People very rarely need estimates. They want a sense of control. They want to manage risk. They want to convince people that money is being well spent. They want to avoid looking like fools. If you solve those problems without using estimates, people generally stop caring.

Re: Software Development Estimates: Where Do I Start?

#30

"...The gist of why estimates are hard: every new piece of software is a machine that has never been built before..." Yes, and that's why a lightweight, repeatable estimation process beats every other way of doing it. As you continue to estimate, you create and refine a mental model of the project's complexity. For some projects, you're able to create a mental model that has high fidelity quite easily. For others, it…

I agree that the estimation process needs to be tuned to fit the local context. There's no point building a 50-parameter statistical model for building a 3-page website. But likewise, SWAGs aren't appropriate for megaprojects. A more involved process is called for.

Or one can just not do megaprojects.

An instructive example comes from one of Mary Poppendieck's books. The Empire State Building was never planned and estimated in the traditional sense. They picked a deadline and used a flow-based approach to make it happen. They were already building the lower floors before the upper floors were designed.

One of the problems they faced was that nobody had designed an electrical system nearly that size. So they split the building down the middle vertically and in three slices horizontally. That gave them 6 30-story buildings to wire, an understood problem.

Another good example is the Internet: a globe-spanning network that connects a large fraction of humanity. There is no central control, no central design, no plan. Much larger than any megaproject, but done without a megaproject's methods.

I agree that megaprojects use more involved methods, but I think "called for" is, as yet, unproven. I think it's more about the people and the social structures making the decisions than it is about what's being created. When all you have is primates, everything looks like a primate dominance hierarchy.

Post reply on HN