Wednesday, 10 July 2013

Google Logic - The Challenge of Agility

Here is an interesting Guardian article examining Google's management culture. It starts of by contrasting traditional long term business planning and culture with the more "agile" approach that is exemplified by Google.

The article correctly notes that this approach to product development requires a culture that is fundamentally different from the culture and practices found at traditional (long-term-plan oriented) organizations.

These traditional cultures struggle to deal with shifting goals and a quickly changing competitive landscape.

In addition to these criticisms, I would like to add another of my own:

I do not think that these prediction & planning-oriented approaches are any good at dealing with complexity. This is particularly clear when faced with the complexity involved in the development of modern software systems.
The reasons are forehead-slappingly obvious:

Long term planning or indeed, any planning at all, relies on making predictions. Making predictions is difficult. Traditional companies respond by trying harder, by limiting the scope of what they try to predict, or by deluding themselves that they are better at it than they are. The longer your time-frame and the more complex your plan/product, the worse your predictions become. Indeed, the difficulty of making predictions increases catastrophically quickly with the complexity of your product - making planning for all but the simplest product development nothing better than a wild and irresponsible gamble. Various cognitive biases compound this difficulty, making it difficult for us to measure or even acknowledge complexity that we cannot see.

This is a very real and very serious multi-billion-dollar crisis - and it's impact extends far beyond the field of software development - although this is where it's effects are most easily and most keenly felt. How to escape from this tar-pit? How to deal with an unpredictable, complex, and fundamentally "unmanageable" world?

This, it is not easy.

It is clear that "agile/reactive" approaches are going to be a key, important part of the solution - but experience has shown that implementing an agile culture and achieving success is far from easy - it remains a long way from the turn-key exercise that we might wish it to be. Even Google, who you claim champions this approach, is hardly the shining beacon that you suggest. Good enough, perhaps, but hardly exemplary.

The agile culture needs to be able to plan to reduce the impact of adverse events, without knowing in advance what they will be. Similarly, it needs to plan to increase the impact of favourable events, again without knowing in advance what they will be. At the same time, it needs to balance this with the need to keep on top of and maintain a complex and growing inventory of capabilities and skills; technical and human capital, all of which is susceptible to the forces of entropy and decay.

It has been said that developing software (in the large) is akin to growing a plant - it requires tending & guiding as it grows, rather than planning and "engineering" (in the bridge-building sense). I imagine very much that the senior leadership of Google feel the same way.