Well, Super Tuesday has come and gone, and we’re happy to note that once again LinuxInsider was right out there on the forefront of the trends and the conversation.
No sooner did we publish our cutting-edge expose of geeks and their political views — “Why Should (or Shouldn’t) Geeks Vote for Obama?” — in fact, than Lawrence Lessig himself came out with the news that he, too, is an Obama supporter.
It is gratifying, indeed, to have such a profound impact on the world’s thinking.
At a Loss for Words
Yet it is a heavy responsibility, too, which is why this week we’d like to direct our readers’ attention to a recent post by Red Hat blogger Havoc Pennington pointing out a very excellent article by blogger Daniel Tenner titled “How to recognize a good programmer.”
While Pennington’s post was from Tuesday, the article itself dates back to a blog post from November. Given the timeless importance of the article’s topic, we wouldn’t even point out its publication date were it not for the shocked reaction we got from certain Slashdot founders, who went only so far as to say, “My only comment is that you should try to be more punctual :).”
We can only assume the topic’s profound importance and magnitude rendered those unnamed Slashdot founders at a loss for words.
Other bloggers, fortunately, were much more forthcoming on the topic, which is so central to the daily lives of so many of us.
Tenner writes that good programmers are not always easy to recognize, particularly for those who are not programmers themselves.
“It’s not as easy as it sounds,” writes Tenner, who has worked both in programming and on the business side.
“CV experience is only of limited use here, because great programmers don’t always have the ‘official’ experience to demonstrate that they’re great. In fact, a lot of that CV experience can be misleading,” he adds. “Yet there are a number of subtle cues that you can get, even from the CV, to figure out whether someone’s a great programmer.”
You’re Good If…
Among Tenner’s list of positive indicators suggesting someone is a good programmer are:
- Passionate about technology
- Programs as a hobby
- Will talk your ear off on a technical subject if encouraged
- Significant (and often numerous) personal side-projects over the years
- Learns new technologies on his/her own
- Opinionated about which technologies are better for various usages
- Very uncomfortable about the idea of working with a technology he doesn’t believe to be “right”
- Clearly smart, can have great conversations on a variety of topics
- Started programming long before university/work
- Has some hidden “icebergs,” large personal projects under the CV radar
- Knowledge of a large variety of unrelated technologies (may not be on CV)
Do these technologies describe you or someone you know? If so, you may be in the midst of greatness, according to Tenner.
Passion Is Key
“I don’t consider myself a good programmer yet (but a TON of those things applied to me), and I have no experience in hiring programmers,” Monochrome Mentality blogger Kevin Dean told LinuxInsider.
Passion, however, may in fact be one of the unsung heroes of the open source development model’s success, Dean asserted.
“As a general statement, I’ve often disagreed with Eric S. Raymond and Linus Torvalds about the open source development model producing ‘better’ code,” Dean said. “A topic not really discussed by either of those guys was the number of people passionate about the code they were writing.”
Free software allows people to choose the projects that interest them, Dean added. “I’ve always thought this factor was the single MOST important reason for ‘better code,’ rather than ‘more people looking at it,'” he said.
Nice Guys First
Traditional experience and certifications may be less indicative of programming skill than other characteristics, agreed Slashdot blogger yagu.
“There’s a lot of conventional wisdom that good programmers come with exceptional brilliance, and lots of certifications proving their mastery (read ‘certifications’),” yagu told LinuxInsider. “While I’d expect a good programmer to be smart, I couldn’t care one lick for their paper trail, short of ground-breaking doctorates awarded on research in the industry.”
One trait characteristic of good programmers is friendliness, yagu asserted.
“Contrary to the classic, mysterious and cranky genius in a dark back room, a good programmer does have social skills and should be friendly and easy to communicate with,” he said. “If you can’t talk with a programmer, you’ll never communicate needs efficiently. This is a cornerstone of creating useful software.”
Along similar lines, good programmers are generous in spending time helping others use applications and understanding technology, yagu said, and they are empathetic. “He doesn’t judge or criticize a user as ‘stupid,’ but tries to see their problem as they experience it and then works with the user to come up with a solution,” yagu explained.
Mystery and arcane jargon are not things good programmers promote or hide behind, he added.
Did We Mention Passion?
Good programmers don’t have to be geniuses, yagu added, but they should be smart and they should have a creative approach. “A good sign of smart would be a programmer who has mastered several, if not many, programming languages,” he said.
Indeed, good programmers are well-rounded, yagu added. “Find me a programmer who also loves to bicycle, attend theater, read a good book,” he said. “A programmer with external and various interests is going to look at the universe without the distortions of a ‘technology-only’ lens.”
Finally, passion is another key characteristic of good programmers, yagu agreed. “A good programmer loves to describe the intricacies and nuances of technology, often beyond your need to know or capacity to understand,” he said.
And on that timely note — passion, that is — we here at LinuxInsider would like to remind our readers that Valentine’s Day rapidly approaches. Don’t forget the human factors!
Right. I’m not programmer but I’d say the same about engineers and scientists. 😉 I guess this text is universal for any professions.