Someone once asked Napoleon how he decided where to assign soldiers. Napoleon’s reply was that it’s simple: soldiers are either smart or dumb, lazy or energetic.
- The smart and energetic I make field commanders. They know what to do and can rally the troops to do it.
- The smart and lazy I make generals. They also know what to do, but they’re not going to waste energy doing what doesn’t need to be done.
- The dumb and lazy I make foot soldiers.
But what about the dumb and energetic? “Those,” Napoleon replied, “I shoot.”
The Napoleon joke comes to mind when I hear praise for somebody because they can “get things done.” Should we make them a field commander or shoot them?
Joel Spolsky says that the ideal programmer is someone who is smart and gets things done. But what about people who are dumb and get things done?
When Ross Perot ran for president in 1992, his supporters exclaimed “He can get things done!” So I’d ask “What does he want to get done that you’d like to see happen?” I don’t recall ever getting an answer. What he wanted to get done didn’t matter. (I’m not saying that Perot’s platform was dumb. I’ll stay out of that discussion. I’m only saying that it could have been dumb and some people would not know or care.)
One time I heard someone praised as a good teacher. Not knowledgeable, but a good teacher. I objected that if someone is ignorant but a good teacher, does that mean they’re effective in conveying their ignorance? Wouldn’t that be a bad thing? No, all that mattered was that he was a good teacher.
Computer programs consists of lines of code, and lines of code consist of characters. So it’s good for a programmer to be proficient in producing lines of code and characters. Of course it’s more important that they produce lines of code that are correct, maintainable, and that accomplish something worthwhile.
Why would someone support a presidential candidate without knowing their positions? Why would someone want their children to have an ignorant but effective teacher? Why would someone want a programmer who is proficient at producing bad code?
I don’t think anyone wants these things, though they do lose sight of their goals. People like charismatic presidents, good teachers, and productive programmers. But it’s too easy to fall into reductionism, focusing on elemental components and losing sight of the big picture.
Leaders need to make things happen. Teachers need to teach. Programmers need to write code. These basic skills are necessary, but they are not enough.
There’s an active conversation here (59 comments currently, several of which arrived as I composed this post) on how much typing speed matters. I believe the discussion is lively in part because it touches on the issues in this post, basic skills versus larger goals. Participants are coming from varying levels of abstraction, from keystrokes to software engineering. Some are arguing bottom-up, some top-down. I find the dynamic of the discussion more interesting than its content.