Friction in Software Development
Comparing war with anything less serious is pretty trite. There’s no lives at stake when I sit at a keyboard.
This is not meant to directly compare the horrors of warfare with the challenges of software development.
Carl von Clausewitz, a Prussian general, wrote Vom Kriege or "On War."
Imagine replacing the word "war" with "software development":
Everything is very simple in war, but the simplest thing is difficult. These difficulties accumulate and produce a friction, which no man can imagine exactly who has not seen war. Suppose now a traveller, who, towards evening, expects to accomplish the two stages at the end of his day’s journey, four or five leagues, with post horses, on the high road—it is nothing. He arrives now at the last station but one, finds no horses, or very bad ones; then a hilly country, bad roads; it is a dark night, and he is glad when, after a great deal of trouble, he reaches the next station, and finds there some miserable accommodation. So in war through the influence of an infinity of petty circumstances, which cannot properly be described on paper, things disappoint us, and we fall short of the mark.
And replace "war" with "project" here:
Further, every war is rich in particular facts; while, at the same time, each is an unexplored sea, full of rocks, which the general may have a suspicion of, but which he has never seen with his eye, and round which, moreover, he must steer in the night.
…to those who only look on from a distance, all seems to proceed with the utmost ease.
Imagine, again, replacing "war" with "software development":
It is, therefore, this friction, or what is so termed here, which makes that which appears easy in war difficult in reality.
Clausewitz’s "friction" is the modern military’s "suck" as in the expression, "embrace the suck." (Book author Austin Bay provides the connection.)
"Embrace the suck" is a pretty awesome motivating phrase.
It acknowledges that things will be bad in a refreshingly truthful way.
The death-by-a-thousand-cuts friction of commercial software development must be overcome before one can even begin on the main task. And the main task is the obvious and easy thing which is the only part an outsider will ever see or understand.
Certain perverse minds enjoy the puzzle and the sense of accomplishment so much that they’ll endure the mental pain to get to the payoff.
In commercial software development, you really do sometimes have to embrace the friction for your own good. Acknowledging that it will suck is important to keep your sanity. Do not attempt to fool yourself that maybe it won’t suck. It will suck. If anything, learn to laugh at it. Alacrity may (or may not) follow.