Refactoring development

Ramblings from the trenches...

View on GitHub

No Estimates versus One Estimates

Detailed Estimation is Waste.

Why do we write tests? Because we want that instant feedback that we’ve done something right, it’s a vindication that we’ve made a step in the right direction. It gives us encouragement that all is well and we should push onwards.

If only we had that kind of feedback loop when commissioning hardware, getting the permissioning scheme right or deploying software. Maybe we just aren’t writing enough tests - ‘new machine works’ tests, ‘new team member has all the stuff they need’ tests?

By using tests we’re building up, growing our software and rewarding our selves every step of the way. We can ‘see’ progress and we know our velocity.

By starting with a goal and working towards it we badly manage expectations. We’re constantly over-optimistic on how the simplest tasks can get bogged down by either the corporate environment or just annoying gotchas. By ‘estimating’ we’re forced to build in time for the gotchas and that things won’t go as smoothly as you’d like.

I don’t think detailed estimates building up to large overall estimates work. I think they’re made to work with a lot of re-planning, fiddling and contingency such that the original ‘plan’ can still be seen to be working. In reality the plan is a smoke screen for the reality that lies underneath.

From what I’ve seen of estimation, it’s a lot quicker to identify similar sized projects in the past and use relative sizing from 40,000ft. I.e. roughly High Speed Rail 2 is about equal to CrossRail and the Channel Tunnel in cost / complexity. You could spend a lot of time and effort coming up with detailed plans on these projects that would be more precise, but no more accurate. Think back to common projects you’ve done before in your company and size things relative to those - it’s faster and just as accurate as any other method.

What I’ve experienced resonates a lot with Neil Killick’s words: