Agile Methodologies and Social Engineering
As I was reading the chapter 9 of Open Society and Its Enemies by K. R. Popper, I became aware of the striking resemblence between his treatise of social engineering and agile methodologies.
Popper criticizes Plato’s demand for a totalitarian and racialist state. In doing so, he discusses Plato’s version of social engineering which he calls the Utopian engineering:
These principles, if applied to the realm of political activity, demand that we must determine our ultimate political aim, or the Ideal State, before taking any practical action. Only when this ultimate aim is determined, […] only when we are in possession of something like a blueprint of the society at which we aim, only then can we begin to consider the best ways and means for its realization, and to draw up a plan for practical action. […] It is convincing and attractive.
A bluprint! This is a bona fide waterfall model: First plan a multi-year (IT) project in every detail. Then, you just execute the blueprint. It is indeed a convincing and attractive model, but deceiving. The big blueprint gives you a false sense of safety. It does not work in most cases.
[…] the Utopian attempt to realize an ideal state, using a blueprint of society as a whole, is one which demands a strong centralized rule of a few, and which therefore is likely to lead to a dictatorship.
This is also typical for the waterfall model: Developers are not sufficiently involved in architecture and design despite of the fact it is them who actually build the software.
He proposes a different “methodologically sound” approach: The piecemeal engineering:
The politician who adopts this method may or may not have a blueprint of society before his mind, he may or may not hope that mankind will one day realize an ideal state, and achieve happiness and perfection on earth. But he will be aware that perfection, if at all attainable, is far distant, and that every generation of men, and therefore also the living, have a claim; […] The piecemeal engineer will, accordingly, adopt the method of searching for, and fighting against, the greatest and most urgent evils of society, rather than searching for, and fighting for, its greatest ultimate good.
Iterations (or Sprints)! Be able to adapt to the current situation fast. Proceed step by step without necessarily having laid out a complete plan. Also, you should implement features first that have the most business value.
In favour of his method, the piecemeal engineer can claim that a systematic fight against suffering and injustice and war is more likely to be supported by the approval and agreement of a great number of people than the fight for the establishment of some ideal.
In agile process like Scrum this directly translates to Sprint Plannings: The developers—not nobody else—commit to user stories in the first planning. In the second planning they reach an agreement on the architecture and the design.
They are blueprints for single institutions, for health and unemployed insurance, for instance, or arbitration courts, or anti-depression budgeting, or educational reform. If they go wrong, the damage is not very great, and a re-adjustment not very difficult. They are less risky,
Reasonably sized and well formulated user stories are very important ingredients for success.
But the piecemeal method permits repeated experiments and continuous readjustments.
Continous improvement; Kaizen! This is agile at its best!
To conclude: The chapter in question, “Aestheticism, Perfectionism, Utopianism”, is really to be recommended; especially for agile methodologists. Just replace “Utopian engineering” and “piecemeal engineering” by “waterfall model” and “agile methods”, respectively and you will get a beautifully written endorsement for agile practices.