“For centuries, theologians have been explaining the unknowable in terms of the-not-worth-knowing.”
:: H.L. Mencken
Ode to the Software Developer
Fingers fly across the keyboard. The greenscreen letters and numbers, looking more like an eruption of alphabet soup than anything else, cascade down the screen. The moovees show the letters and numbers projected onto the gifted hacker’s face, as if that has ever happened.
I hope everyone accepts this as dramatic license, if not a pure lie from the pit of abaddon. Unfortunately, the professional managerial class does not. I’m convinced that many consider this an accurate depiction of what software developers do.
Why?
They believe this despite there being nothing in the professional manager’s history, education, exposure, or level of expertise that could ever bring them to an understanding of software development. Now, I’m not about to upbraid them for this oversight. In fact, unless someone spends a serious amount of time and effort to become a software developer, they’ll never know the rudimentary facts about it. Managers took a different course of study, and if they stayed within their realm of expertise, I would have no quarrel. However, some insist on encroaching on the professional software developer’s province, usurping an authority for which they are not prepared to govern.
Much of this results from the organizational hierarchy typical in today’s enterprise where, by placement on the org chart, the manager insists on overseeing the unique world of software development. When this happens (and it happens all day, every day, everywhere) the software suffers; the software developers suffer; the organization suffers; and the end-user suffers.
In an all-too-familiar pattern of both arrogance and ignorance, people who may or may not have ever crested the professional summit in any technical capacity declare themselves preternaturally adroit at either leading software developers, designing software, or judging the quality of either because their name occupies a box in the org chart that’s higher than the one that reads “Developers.” It’s a sad reenactment of the Emperor’s New Clothes that we have, eons ago, assumed ourselves all the wiser.
Dumbing Down
Many people think software development just involves clicking the mouse and typing on the keyboard. This is the equivalent of John Cleese’s description of How To Play the Flute in a Monty Python sketch.
After getting the equivalent of such a complete lifetime experience of playing flute, how can anyone fail to perform brilliantly at the next Carnegie Hall?
You laugh. But that’s what all the non-technical managers have implied when they raise their voices in defense of their in-depth knowledge of software development. They say it’s like:
- Bridge building
- Running an assembly line
- Overseeing a manufacturing plant
- Learning to play sports
- Engineering
- Science (a real one, not sociology)
- Art
- Craft
- Music
Anyone who ever believes that, promotes such malinformation, or declares such an analogy for software development is wrong. Terribly wrong. Embarrassingly wrong. Destructively wrong. Arrogantly wrong. Laughingly wrong.
But I ain’t laughin’.
I know managers didn’t come up with these farie tales. Someone lied to them and they believed the lie. Maybe the first person to tell the lie was a manager. (I doubt it.) It was probably a software developer, decades ago, who wanted their manager to have some sense of what their job was like.
We software developers understand that managers don’t have the patience, inclination, background, desire, or maybe not even the capability to learn to develop software. Maybe some poor, tired, and burdened software developer wanted to argue a case for doing things the way we software developers know how to do things and came up with the half-truth. But nobody should have taken it for gospel.
Software development is like none of those things. None. But all of those half-truths sound pretty good because each has an air of familiarity to the way software development must appear from the outside.
To be honest, software development is about as complex an undertaking as a human will ever endeavor. It has scores, hundreds, maybe even thousands of facets. Domain by domain, platform by platform, challenge by challenge, it gets more complex. Depending on the side from which you look and what your eyes will understand, software development can appear to look exactly like the thing in which a person believes themselves an expert. It is a cunning trickster.
Show Me You Know It
People who don’t understand software development get angry if a software developer says “You don’t understand software development.“
They’ll get all defensive and declare that the reason they may not understand software development sufficiently is that we didn’t explain it well enough. The fault for the comprehension failure of our non-technical peers is ours, you see, not theirs. They’ll pull out one of their favorite deflections and expect that name-dropping will quiet our complaints and humble our criticism.
“If you can’t explain it simply, you don’t understand it well enough.”
Albert Einstein
I accept the challenge. But first, accept mine.
Explain this equation:
You’d like to think you understand it because you’ve seen it so many times and had so many people, even ol’ Albert, explain it to you. But you don’t understand it. You’d have to also understand this term of this equation as well as hundreds nearly as opaque.
“Okay,” the manager demands, “explain that to me in language I can understand”
No.
Even if every symbol, every term, and every derivative were explained so you could parrot it back, only a life of eight or twelve years in advanced mathematics and physics would prepare you to fully understand that equation.
And thus – not to such a degree, thankfully – is software development.
The Monkey King
The problem with software development is that it is a court jester: a fool. Software development is a mimic, a chimera. Software development is the Monkey King. It becomes whatever you want it to become. But you will not understand it unless you become a software developer.
Software development works especially nimbly on the simple-minded. (Beware anyone who claims superiority over software development.)
My old college professor began the new semester of Chem 102 with the following quote.
“I love the teaching of chemistry. Over several years, I simply tell my students fewer and fewer lies.”
Dr. Stephen L. Razniak, Chemistry Department Head and Organic Professor at ETSU (1982)
Only those seven of us remaining from that class of over 90, three years later, really understood what he was saying. Most didn’t stick around long enough to hear the truth.
When dealing with the very complex, you have to be willing to accept a lot of misinformation, dumbed-down, distilled as it were, to the level of your own understanding so you can build on that tomorrow… and tomorrow… and tomorrow…
And that twenty years from now, or thirty, or forty, you will still be accepting a lot of misinformation – lies – dumbed-down, distilled as it were, to the level of your own understanding so you can keep building.
YOU WILL NEVER KNOW IT. YOU WILL ONLY KNOW ENOUGH TO LEARN MORE.
Management needs a shortcut. And such a shortcut undermines the integrity of the whole. Managers cling to the bullet list of what software development is not in order for them to falsely believe they understand what it is.
They have truly fallen for the con. They think they know the unknowable because they have duped themselves into believing the not-worth-knowing.
###