To the world at large, computers are scary machines that are impossible to understand, and programmers are the mysterious geniuses who know how to manipulate them even if they are never able to fix yours for whatever reason.
Anyone who has worked with the machines knows that programmers aren't just one undifferentiated group, but a club with a wide variety of subspecies. From those who will go to any length to avoid documentation to those who deploy code like duct tape, refuse to use libraries, or can't help but rewrite their apps in the latest experimental programming language, programmers are a colorful lot -- particularly in their perspectives and habits -- though collectively comrades in code.
[ Find out which 11 programming trends are on the rise, verse yourself in the 12 programming mistakes to avoid, and test your programming smarts with our programming IQ test: Round 1 and Round 2. | Keep up on key application development insights with the Fatal Exception blog and Developer World newsletter. ]
Here we've compiled the 13 classic programming personality types you're likely to find in almost any IT or development shop. Together, they keep the machines feature-rich, despite steadfast differences in their approaches to programming.
Programming Personality Type No. 1: The Underdocumenter
They offer plenty of rationalizations, some of which may even sound reasonable. Comments take longer to read than good code, they might say. Or they will claim that Lisp or Java or whatever is self-documenting by the very nature of its structure. Or that the search capabilities of modern IDEs can parse the code itself. After all, human-written text requires artificial intelligence to discover its semantic meaning, whereas good code is immediately understandable to the parser. Whatever the reason, shirking documentation sounds perfectly good to them because they read and write programming languages with more ease than they do English.
The Underdocumenter will go to any length to avoid being shackled by management's foolish requirement to write text about that function. The droll ones will create functions like queryDatabase, then add a comment that says, "Queries database."
The cleverest Underdocumenters will even write their own code to save them the trouble of writing English. I know someone who hooked up a version of Eliza to Emacs so that he could add Eliza-grade comments to his code with the push of a button. No one noticed, he said, because even his manager had written scripts to count the words in the comments of the developers he managed. Eliza always had him near the top of the documentation pecking order in his department.
Relationship status: Living with the same person for 15 years without getting married because they don't want to fill out the forms
Household chore: Rewiring the house without labeling the breakers
Role model: Guy who hid the Ark of the Covenant before "Raiders of the Lost Ark"
Pet: "Around here somewhere."
Favorite programming construct: Lambda
Drink: Anything with an "XXX" on the bottle
Programming Personality Type No. 2: The CYA Specialist
For some programmers, documentation is a talisman for warding off middle-management evil. They write paragraphs and paragraphs about mundane routines like queryDatabase. Did you know that the routine will work for Oracle and Postgres 8.5 but not MySQL or Postgres 9.0+? It doesn't matter if you're running only one database, the CYA Specialist has you covered.
If you're lucky, your CYA Specialist will be a frustrated novelist who is happy to inject a pun or two into a boring pile of code. But the worst kind is the one who lords their documentation over others during code reviews. If a bug appears, the CYA Specialist says it was a limitation that was "well-documented in the 17th paragraph of the method's comment."
Some CYA Specialists perform job security by obscurity, handing over a binder full of printed-out code, as if you're going to leaf through 700 pages of monospaced, unsearchable type. They know that if you measure the work product in pounds, there can't be any debate over what they've done.
Car: Stack of Chilton manuals
Relationship status: Married to a 48-page prenuptial agreement
Household chore: Relabeling the spice rack
Role model: Wikipedia editor of the year
Pet: "Come over to see the photo montage of Scrappy that used to be just a wall."
Favorite programming construct: The comment block
Drink: Triple-filtered water