A few weeks ago I wrote about integrating information technology and business process management. This post from Steve Yegge is interesting and discusses one reason I find that a good strategy. Programmers, by and large, are good, practical systems thinkers (this is in the management context, thinking of inter-related systems, whatever those systems are – not to be confused with a computer system).
A programmer’s view of the Universe, part 1: The fish
The first thing you notice as a programmer is that it trains you — forces you, really — to think in a disciplined way about complex logic problems. It also gives you a big booster shot of confidence around problem-solving in general. Junior programmers tend to have very high opinions of themselves; I was no exception.
In time, though, programming eventually humbles you, because it shows you the limits of your reasoning ability in ways that few other activities can match. Eventually every programmer becomes entangled in a system that is overwhelming in its complexity. As we grow in our abilities as programmers we learn to tackle increasingly complex systems. But every human programmer has limits, and some systems are just too hard to grapple with.
When this happens, we usually don’t blame ourselves, nor think any less of ourselves. Instead we claim that it’s someone else’s fault, and it just needs a rewrite to help manage the complexity. In many cases this is even true.
Over time, our worldwide computer-programming community has discovered or invented better and better ways ways to organize programs and systems. We’ve managed to increase their functionality while keeping the complexity under control.
But even with such controls in place, systems can occasionally get out of hand. And sometimes they even need to be abandoned altogether, like a dog that’s gone rabid. No matter how much time and love you’ve put into such systems, there’s no fixing them.
Programmers also tend to be active life long learners. This isn’t to say programmers tendencies are all easy to manage. They also are more likely not to accept what most people are willing to accept and can therefore be annoying to some. Now, I happen to think it is good to question conventional wisdom and authority… (which might explain one reason I am annoying), but it also explains why often management find dealing with IT staff annoying. Programmers often refuse to accept management’s belief system, including that the programmers job is just to do whatever the manager tells them to.
Related: A programmer’s view of the Universe, part 2: Mario Kart – What Motivates Programmers? – Reddit, a live view of how software coders think – Explaining Managers to Programmers – A Career in Computer Programming – Programmers – cartoon form – Signs You Have a Great Job … or Not