Estimates. Laying pipe or talking about poetry?
We recently experienced a development team that really could not see how it was going to deliver its backlog in anything like the available budget. Emotions ran high, lists of features were pored over, prioritisation meetings dragged on, numbers were queried and defended. The atmosphere was adversarial, pressured, verging on desperate. Developers were questioning the way the team was being run and what was being ‘promised’ to customers. The philosophy and purpose of the company was even questioned. And in the eyes of sales and management doubts about the capability of the developers could be seen. Delivery, we concluded, was next to impossible. We will return to this team shortly.
How long will it take to deliver an as yet unwritten piece of software? It is a question that all of us in software are used to either asking or being asked. Of course much has been written about how to answer it and most of it takes an analytical, objective, scientifically inspired approach: break the problem down, use data from previous deliveries to size the pieces, adjust for current circumstances perhaps with some metrics for complexity and risk mixed in and sum it all up. All very sensible, reasonable, logical and objective. Why then doesn’t it work? Or at least why are the results of that kind of process so susceptible to deterioration and give only superficial, short-lived confidence? It is my contention that the intended objectivity of these processes removes the most important factor from the calculation, namely the people actually doing the work and their attitude to it.
The underlying metaphor in these approaches is measurement of physical quantities or counting tangible things. Need to know how much timber is needed to build a frame? Take measurements from the design and apply the scale on the drawing. Estimating the number of marbles in a jar? Count the top layer then multiply by the number of layers. The trouble is that for software development the task in hand is not physical it is mental and mental activity is not measured or counted. Imagining the deliveries and visualising web pages, data, tests and documentation brings to mind tangible products that are therefore measureable or countable and so surely we just let the arithmetic do the work. But that overlooks what is harder to visualise: all the mental activity that has to happen along the way. That activity can be a delicate, elusive thing. It is also subjective not objective. Anxiety, doubt, misunderstanding, confusion and countless other emotions and situations will keep it at bay, no matter what the estimates say. Why then do we ignore it when estimating the work and subsequently when it is underway?
In the film Dead Poets Society the English teacher played by Robin Williams shows his class the book Understanding Poetry by Dr J. Evans Pritchard, according to which “By plotting a poem’s importance on the vertical axis and its perfection on the horizontal axis the resulting area will yield a score for its greatness”. “Excrement” exclaims Williams, “We’re not laying pipe, we’re talking about poetry.” and he enjoins the class to “Rip out that page!”. There are times when I feel the same way about estimating procedures based on metrics. How long will it take you solve today’s Times Crossword? Or plan what you are doing next week? Or write a blog posting? It is so easy to reach for tools like ‘past data’, ‘averages’ or ‘rules of thumb’ but we kid ourselves about their power to predict. We’re not laying pipe and although we are rarely talking about poetry either, we are talking about immeasurable, uncountable mental activity even though it yields tangible end products. And that is not to say that The Dead Poets Society stopped understanding or at least trying to understand poetry, quite the opposite, they just avoided using the wrong tools and metaphors from the outset. Robin Williams’ character mocked armies of academics marching forth to measure poetry. Is analytical estimation the equivalent in software? We estimate to increase our confidence in what is achievable and I believe there are effective, non-analytical approaches to doing that.
Back to our development team. It is two weeks later and the mood has changed. The lead developer is skimming through the list of features, nodding and smiling, not even looking at the estimates and the developers are sitting back, smiling and saying there’s nothing on the list that can’t be done in the next few weeks. The delivery in three months looks laughably far off. One of them seriously asks how they will fill the spare time. The conversation is creative and excited, talking about neat things we could do for the customer that they hadn’t even contemplated. Everyone is confident that the project will be delivered. What has changed? The feature list is the same, there have been no intervening conversations with customers and the same people are in the room. The way the team feel about the work ahead has changed. That change has come through a series of experiences such as collectively agreeing on an overall approach, finding a tool that they were excited about using, seeing new members of the team working, doing some successful spikes, discussing areas of uncertainty and many more. They now know, or rather feel, that the project is deliverable. Now everything about the project stems from that feeling. If we were estimating numerically the numbers would simply be selected to reflect that feeling. Previously the feeling was that we didn’t know and that nasty surprises were about to be unearthed and that all progress would be a struggle. Estimates were numbers selected to reflect that feeling. When the feeling changes, so do the estimates.
I am not 100% sure it will be delivered within budget, nobody can be. But I am as confident as I can at this stage and certainly more confident than I would be if the numbers said Yes but the team, or their body language, said No. Not basing my confidence on estimates might seem specious but we’re not laying pipe, we’re talking about software.


