Software Development Methods: A War-Strategy Perspective
This is the first part of a three part series where we will look at the similarities between war strategies and software development methods, making extended references to the Agile method and to one of the most renowned military treatises, Sun Tzu's The Art of War.
It is widely noted that war-strategies principles have applications in many different domains where foresight, organization, coordination and tactics are needed. Good examples are business and management, but we believe that software development is also worth consideration. This article is based on the author's theoretical and practical experience and readings, both in the software and in the military fields.
The Art of War is an ancient Chinese military treatise traditionally attributed to Sun Tzu, a high-ranking military general, strategist and philosopher. Written about 2,500 years ago, it had great influence on Eastern and Western military thinking from its first translation in Europe in the 18th century.
The treatise opens with the following:
Sun Tzu said:
1. The art of war is of vital importance to the state.
2. It is a matter of life and death, a road to either safety or ruin. Hence it is a subject of inquiry that can on no account be neglected.
In our times, software is of vital importance for one organization or for its customers. Building better and faster software will bring a serious advantage over the competition and will open the road to either success or failure. As in war, there is one enemy to be defeated: the complexity and the business problems, hidden in various forms.
In this article we will review some important ideas reflected in Sun Tzu's work and we will show some analogies and differences between war history, strategy, tactics and software development.
2. Waging war
2. When you engage in actual fighting, if victory is long in coming, then men's weapons will grow dull and their ardor will be damped. If you lay siege to a town, you will exhaust your strength.
3. Again, if the campaign is protracted, the resources of the state will not be equal to the strain.
6. There is no instance of a country having benefited from prolonged warfare.
There is little benefit from long-developed projects that delay showing their results. Showing incremental results after short periods of time will strengthen the confidence of customers and will keep the morale of the developers high.
19. In war, then, let your great object be victory, not lengthy campaigns.
The project focus should be on adding business value and getting to the business goals, not on spending a lot of time developing.
3. Attack by stratagem
3. Thus the highest form of generalship is to balk the enemy's plans; the next best is to prevent the junction of the enemy's forces; the next in order is to attack the enemy's army in the field; and the worst policy of all is to besiege walled cities.
4. The rule is, not to besiege walled cities if it can possibly be avoided.
The interpretation to be given here is that there may be features that, by their complexity, can be compared to the walls of a city. These should be carefully analyzed and prioritized. If possible, they should be delayed and some other less complex user stories within the same area should get higher priority and be implemented, so that developers gain experience.
This is not in the spirit of the Agile method, where the product owner decides how to prioritize the backlog content.
5. The general, unable to control his irritation, will launch his men to the assault like swarming ants, with the result that one-third of his men are slain, while the town still remains untaken. Such are the disastrous effects of a siege.
Wasting the forces and concentration of the developers on complex features will not necessarily mean that these features will be brought to a successful end.
4. Tactical dispositions
1. The good fighters of old first put themselves beyond the possibility of defeat, and then waited for an opportunity of defeating the enemy.
5. Security against defeat implies defensive tactics; ability to defeat the enemy means taking the offensive.
14. Hence the skillful fighter puts himself into a position which makes defeat impossible, and does not miss the moment for defeating the enemy.
In Agile, the defensive tactics imply analysis, planning, estimations and grooming sessions. Once these ones are accurately done, the team can take the offensive -- translated as implementing features.
In the second part of the article we will look at the role of the team manager, the business manager and the team as a whole in connection to Sun Tzuís The Art of War.
Software Development Specialist