I have often thought whenever I meet a programmer who is obviously grossly incompetent that there needs to be some sort of certification board for software engineering that can help enforce some minimal skills to help weed out the riff-raff.Obviously, this is completely impossible. The tools and community change so fast that individuals are barely able to stay on top; good luck getting a standards committee to completely revise every few months. Who would be on the committee? And what would they agree on to enforce? Regex? Recursion, OO, testability, and functional programming? Proof of understanding in the half-dozen "mind expanding" languages? Not going to happen. Not while my Joomla-site maintaining friend and my Android 3D game authoring cohort are both lumped under the title "software developer". The field is too vast, the content too broad, and the jobs too diverse. So, we are doomed to wallow. Or are we? What is the one thing we all have to do? Get hired.I used to be a big sissy about interviewing for jobs. Especially interviews full of the nit-picky details I can never remember, yeah, I really hate those. I would moan and groan about how the interviewer could only answer those questions because they had to look them up the other day. "MySQL index implementations, what am I, a DBA?!", I would screech to anyone who would listen, "They must have misunderstood, I am a developer, when would I ever need to know that?!" But.Interview prep gets me to cram stuff into my head I would otherwise skim or avoid if just sitting at home programming for fun. I get a great refresher on all the stuff I am fully able to do at work, but maybe I haven't needed in a while. Like linked-lists. In four years of fairly diverse programming jobs, I have yet to need a linked list for anything, but man, when that day comes, I have linked-lists in a quick-draw holster. I used to say the same thing about trees, then last year, I had a problem that surely needed a tree, and hear you me, I had that data being in-order traversed before you could say: "tree". Would I have even remembered what trees are good for without my semi-annual refresher? My wife is a commercial pilot, and every so often she is required to skim over all those little details about being a pilot, refreshing everything, double-checking her knowledge so she can keep her licenses, even if she hasn't needed a certain technique since the last test. Huh. Sounds like me, every so often, cramming for an interview. We don't need certifications for being a programmer. We already have the tools in hand, and just need to learn to use them better. Interviews are our certifications.
This is a double-edged sword, because this means that, "what you sow, you will also reap". The responsibility to keep standards high falls on the interviewer. If you interview a candidate for tricky puzzle questions, or in-depth knowledge of C++ libraries, you will find someone who knows those things, and possibly ONLY knows those things. I have seen developers hired who couldn't handle VCS merging or shipping actual software, but were absolute geniuses when it came to programming language trivia and puzzle questions.
A few months ago, I read of a guy with no programming experience who did like 100 interviews in a few weeks, till he was a master interviewee. By the end, he was able to pick his choice of companies, and yet he couldn't ship software. He gamed a system intended to sort out good developers by asking questions that are ancillary to development, without actually having the candidate prove any real ability. And now that company has a developer who is great at gaming systems, but unskilled at development: I hope they have a good training program.
No offense intended to the man who did this, I really admire his tenacity and clever thinking, and I think he will do well regardless of the task. But it speaks volumes to the brokenness of the interview system for those companies that would hire a completely unskilled developer based on the correct answers to trivia questions about programming.
Parting question to consider for interviewers: if interviews are our certifications, what should a candidate be able to do to be "certified" to be able to do the job in question?