On Programming Warfare

“Do not repeat the tactics which have gained you one victory, but let your methods be regulated by the infinite variety of circumstances”

Sun Tzu

HumansThe father of modern strategic study, Carl von Clausewitz, defined military strategy as “the employment of battles to gain the end of war.” Hence, he gave the preeminence to political aims over military goals, ensuring civilian control of the military.
Of course, this applies also to the software development where any IT problem is human in its very core…

However as someone said, I’m fed up to the ears with old men dreaming up wars for young men to die in. That’s why I think that’s a failure to choose a war from an armchair, to provide a solution seeking its need. The shortest path to delusion is theory without practice. And a bad usage of your thoughts and ideas will have as consequence a misuse of reality. That’s why for us, the community is crucial because, as someone else said, battles are sometimes won by generals; wars are nearly always won by sergeants and privates.

But here, as someone else (Steve Jobs) said, “You can’t just ask a customer what they want and try to give that to them. By the time you get it built, they’ll want something new.”

Your customers don’t always know what they want. Yes they may say they want this or that, but once you give it to them, they may never use it. So instead of just taking your customers word for what they want, you have to get into their mind and understand why.
This will help you understand what problems your customers are facing and how you can solve them. If you can solve your customers’ problem, you’ll have something that they will use for a very long time as long it doesn’t require them to change their behavior.

So, in order to gain a war against a certain competitor is way better to gain peace with your community.

But for this, in our cubicle we must not forget about our scope of existence: the other’s pain relief. If we don’t help others why we are here? To make money? It won’t last, believe me.

But to achieve this scope we must keep the others in our minds, we must communicate in order to lower our response time while keeping our focus.

…at the beginning of 13th century the Mongol Emperor Genghis Khan and his descendants succeeded to conquer most of Eurasia, building the last big contiguous empire in the human history.

The building blocks of Genghis’ army and his strategy were his tribal levies of mounted archers and (just as important) the vast horse-herds of Mongolia. Each archer had at least one extra horse; (it was an average five horses per man) thus the entire army could move with incredible rapidity. Moreover since horse milk and horse blood were the staples of the Mongolian diet, Genghis’ horse-herds functioned not just as his means of movement but also as his logistical tail. All other necessities could be foraged and plundered. It was not until well into the 20th century that any army was able to match the rapidity of deployment of Genghis’ armies.

Compared to the armies of Genghis, all other armies were heavy and comparatively immobile. Through manoeuver and continuous assault, Chinese, Persian, Arab and Eastern European armies could be stressed until they broke, and then annihilated in pursuit.

Genghis Khan put absolute trust in his generals, such as Muqali, Jebe and Subutai, and regarded them as close advisors, often extending them the same privileges and trust normally reserved for close family members. He allowed them to make decisions on their own when they embarked on campaigns far from the Mongol Empire capital Karakorum. Genghis Khan expected unwavering loyalty from his generals, and granted them a great deal of autonomy in making command decisions.

In the military strategy we’ll find comparable results only after enough centuries, first during the times of Napoleon I of France and, after this, much more notable in the World War II in the Heinz Guderian’s Blitzkrieg.

Blitzkrieg (German, literally “Lightning war” or “flash war”) is a popular name for an offensive operational-level military doctrine which involves an initial bombardment followed by the employment of mobile forces attacking with speed and surprise to prevent an enemy from implementing a coherent defense. This operational speed is achieved by giving the local command to someone who is there “on the field” – who really understands which is the main focus of the concrete assault by having a seamless communications channel with all the members of the assault unit (Guderian insisted in 1933 to the high command that every tank in the German armored force must be equipped with radio). Directive control was a fast and flexible method of command. Rather than receiving an explicit order (or requirement), a commander would be told of his superior’s intent and the role which his unit was to fill in this concept. The exact method of execution was then a matter for the low-level commander to determine as best fit the situation.

This in-field extraordinary mobility using management by exception (as we would call it today) and having a continuous, seamless communications channel between all parties, led in the Battle of France (with subsidiary attacks of Belgium and Netherlands) to the collapse of the French army – which had a strict hierarchical organization and a fixed ‘on-premise’ ‘inexpugnable’ Maginot line – after barely two months of blitzkrieg operations, in contrast to the four years of trench warfare of the First World War.

I do think that today’s software development can be somewhat described by a quote from Guderian’s book ‘Panzer Leader’:

“In this year of 1929 I became convinced that Tanks working on their own or in conjunction with infantry could never achieve decisive importance. My historical studies, the exercises carried out in England and our own experience with mock-ups had persuaded me that the tanks would never be able to produce their full effect until weapons on whose support they must inevitably rely were brought up to their standard of speed and of cross country performance. In such formation of all arms, the tanks must play primary role, the other weapons beings subordinated to the requirements of the armor. It would be wrong to include tanks in infantry divisions: what was needed were armored divisions which would include all the supporting arms needed to fight with full effect”

Germany was defeated but this way of thinking (with some modifications) influenced decisively the way in which we see the strategy nowadays. And this doesn’t limits itself to warfare. In fact it stresses the power of cooperation in a networked, flexible organization vs a strictly hierarchical structure.

In our domain, already some companies empower these kinds of tactics: Apple, Canonical (for the ones who doesn’t know the company which backs the Ubuntu), Google, Mozilla, Automattic (the company behind WordPress), Balsamiq etc.

I do think that we need more flexibility, more freedom to innovate, more freedom to leverage the community skill. Yes, we’re going forward. But we need some adjustments. After all we try to build something, to do something good, not to destroy. And after all we are in the unique position in which ‘the customers’ are sometimes more skilled in their own programming specialty than the company. And this isn’t so odd, as it sounds. But will you cooperate? And ‘you’ means everyone who reads this. Yes, I mean YOU.

8 thoughts on “On Programming Warfare

  1. Apple does not use any tactics but a very old one: vanity and envy, dating back to Cain & Abel, much earlier than Sun Tzu & C.
    Helped by a bunch of nerds hoping to become fashionable geeks just because they can show something regard so, especially among the media guys, they made their products “status-symbols” and can sell overpriced computers, MP3 players and phones to people hoping to be noticed for that.

    • Or perhaps Apple are just selling well-designed consumer-devices that largely just work, for people who don’t want the technical minutae of computing to be their hobby. As someone who spends his days writing Windows programs in Delphi, it’s nice to have a box at home that works with a minimum of fuss and tweaking. Some of us are prepared to pay a premium for that.

      It’s not that different to people who would rather have a DVD player under their TV than coax Windows into playing a movie.

  2. Really good post, I totally agree. Innovation is the key, and also the best battle to fight.
    We all NEED Delphi to achieve NEW horizons, cant imagine a single developer not going to cooperate. Just let us know your idea!

  3. Pingback: On Programming Warfare « Wings of Wind Software

  4. Pingback: Posts about Programming from google blogs as of September 3, 2009 « tryfly.com

  5. I sometimes wonder if the engineers that produce mobile phones ever use their own products, or if the marketing guys have the final say. So many cool features, but the basic functionality you use every day is clunky.

    Apple seems to succeed in getting both sides of the equation right.

  6. Pingback: Circumstance and Warfare | myninjaplease

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s