Agility, and being agile has become the new definition of goodness – the new religion – in systems and software development of today, everybody and every organization wants to be agile, and claims being agile.
But my experience is that although many if not most organizations today more or less successfully use the various “techniques” of agility, such as Scrum, sprints, iterative and incremental, Pair Programming, Cross Functional Teams etc, very few organizations, at least the larger ones, have understood, even less embraced the “philosophical” difference between true agility and traditional hierarchical command and control organizational and communication patterns. I.e most organizations today claiming being agile have really missed the point of what agility is really about, and what true agility really means and demands, in terms of organizational culture, structure and behaviors.
The philosophical framework underlying traditional organization can be traced back to the reductionist view of the world, where a system is nothing more – and nothing less – than the sum of its parts. Thus, if you take the reductionist viewpoint, any system, even a very complex one, such as a development organization, can be fully analysed, understood and optimized by looking at the individual parts, the properties and behaviors of each of the elements of the system, and if you understand all the parts of the system, you can understand the overall system and its behavior.
Furthermore, given a complete understanding of the system by means of understanding its parts, e.g. by metrics and measurement, you can also perfectly predict any future state and behavior of the system, and thus you can govern the system with perfect precision, the only things you need are complete transparency (“metrics & measurements”) into the inner workings of the system, a number of fail-proof human automations, and “the perfect process”. That is, the system is fully deterministic, and complete certainty, in plans and predictions, is possible. Fixed release/delivery dates and release content written to stone, 18 months ahead of planned delivery is one example of this reductionist view. Business forecasting is another.
But as someone wise once said, prediction is difficult, particularly about the future.
Modern science has since quite some time known that socio-economic systems, i.e. systems where human beings are a key part, rarely if ever behave according to this reductionist view. Instead, these types of systems, e.g. a software development organization – or for that matter, an entire business organization – are much better understood by using Systems Theory as the fundamental framework for analysis. In systems theory, complex systems such as a business organization are not seen as static, mechanical, deterministic things exhibiting predictable linear behavior, instead, systems in this domain are dynamic and non-linear, with high level of communication between many interacting agents, with many levels of feedback loops, with a high degree of uncertainty and non-determinism, resulting in very unpredictable, and non-analyzable emergent behavior.
Until the business mgmt and financial bean counters of our major organizations understand the difference between reductionism and systems theory, these organizations will remain “pseudo-agile”, strictly following the canned agile techniques given in their new “corporate agile process description document”, with business controls closely monitoring adherence to the liturgical demands of the new religion.
So to summarize: organizations with a reductionistic mindset might be doing Agile, but they are not Agile!