More prep for Agile on The Beach: Reductio ad absurdem?
Divide and conquer. It is one of the best tools in the box for solving problems, especially on software projects. Simplify the complex, get a toe-hold of insight into the incomprehensible, handle the unmanageable. All by breaking things down into their component parts. If it is still too unwieldy then decompose those parts into their sub-parts. Keep on going until you have something you can represent with an integer, a date, a reference, a label. With the parts modelled we then have a host of containers for rounding them up: sets, arrays, lists, trees, stacks. With all our components modelled and reassembled we have our solution, our system. Yes, a problem modelled is a problem solved. Complexity tamed. How clever we are.
The problem with this kind of problem solving is that it concentrates on the parts. And it does not resist valuing those parts more than the whole. Indeed producing the parts by finding the fault lines through which we can cleave the problem is highly prized. It “cracks” the problem. The vocabulary, the spin, is telling us that the whole is the problem, whereas the parts are the solution. The means by which we find those parts turn problems into solutions. How valuable analysis is. Seeing any other way is difficult when you spend your formative years encouraged and trained by your parents and teachers in these techniques, you study and idolise the masters of the techniques and go on to earn your living through their mastery and application in a huge range of life’s trades and activities. And it is understandable then that it is the default way that we try to understand the world about us: by reducing it to its parts and valuing those parts above the whole. And if you are the kind of person who earns your living through application of those techniques then the world around you may well be the reality of software projects.
You won’t be surprised to know that there is a word for this kind of approach: reductionism. What might be more surprising is that it in philosophical circles it is generally considered a derogatory term. That is because the value, the magic, so often belongs in the whole, not the parts, especially when it comes to dealing with people, with life. Once we decompose it, the magic is gone. Take for example the simple pleasure of a joke:
“Standing in the park, I was wondering why a frisbee looks larger the closer it gets…then it hit me”
Thanks to Stewart Francis for this gem. So where is the humour? Which word or sub-phrase made us smile? Decomposing it only detracts from the humour. Indeed the humour seems to come from the whole sentence’s connection to an even greater whole, that of our collective experience, extending amongst us and into our shared past. Quite the opposite of decomposition. If you want to understand why that’s a funny line, or come up with a similarly funny line, decomposition is a problem not a solution.
What has this got to do with software projects? Reductionism may be a dirty word in comedy but it’s a universal solvent on software projects. Or is it? Is it reductionism that has beset these projects with plans, contracts, tools, legacy systems and siloed roles? I recently visited a large software organisation where management seemed to have looked at every conceivable role then analysed, categorised and labelled it. People were isolated into functional groups that were separately managed. All activity was codified in processes. Communication was reduced to the exchange documents via emails between anonymous email “front door” accounts. The managers claimed there was nothing that couldn’t be measured. And their measurements were telling them that their projects were taking longer and longer and costs were spiralling. Everything that was produced was unimaginative and regular. Several of the staff were on performance improvement plans that demanded, amongst other things, that they make estimates accurate to 10%. They had taken the magic of several hundred conscious, creative, free willed people collaborating and creating, looked through that to focus on the shadow cast on the wall behind, the objects, the processes, the categories and their labels, then turned that into reality. And that is the problem with reductionism in software projects.
This is not to say that analysis is bunk. What I am saying is that we need to complete the circle. Going from the messy, complicated, fuzzy, fluid real world to a crisp, clean, elegant, static model is only half the journey. We need to make the return trip, bring what the model taught us back to where it can inform the real world. Not in a container, or a joined-up policy, that is just more modelling. Nor an aping of the model. We need to bring the learning back to the world of people, relationships, creativity, empathy, intuition and emotion. Too often we are beguiled by our model, or the tool that holds it, prizing them above the reality from which they are derived. Even worse we try to make reality become the model, confine our activities to the process and let the tools operate us rather than the other way around.
In the Agile Manifesto we are presented with a series of couplets: individuals and interactions over processes and tools; working software over comprehensive documentation; customer collaboration over contract negotiation; responding to change over following a plan. At the start of each couplet is something in the real world. At the end of the couplet is a model, an artifact of reductionism. So Agile is valuing what happens in reality over what we can determine from reductionism. I couldn’t agree more.
Perhaps everything that Agile teaches us reduces to just one word: anti-reductionism. The irony is that this itself is reductionism. So if we are to take our own medicine we must not focus solely on the word and its abstract meaning but bring what it tells us back to reality and see if it can inform us in what happens there. Bear it in mind on your next software project.


