Nobody Codes in Multiple Choice

by cosmo

I was recently referred to an online testing site to demonstrate my “skill” at PHP. I did well enough—any potential test-takers for the PHP 5.3 test can find a good primmer here—but the test really highlighted something that I think a lot of people misunderstand about programming: it is, at its heart, a creative discipline.

No, seriously.

Think of it this way: imagine a great grammarian. Dude knows all the rules, complete mastery of the subjunctive. Protasis. Apodosis. Even has rhetorical flourishes memorized, from anastrophe to zeugma. He could ace any multiple choice test you gave him. But would you want to read his novel? Probably not.

Programming works the same way. It’s not so much memorizing the intricacies of various rules as it is the ability to craft solutions from them. Sure, a deep knowledge of a programming language’s minutiae is an asset for a programmer, same as a solid grasp of English grammar is for a writer, but in both cases, the quality of the product produced is what really matters.

Obviously, the writer has far more leeway in what his or her audience can parse—human beings excel at type juggling—but just like the written word, there is no universal “best” way to code something—purpose and audience matter. If a code is designed as a framework to be built upon, it sacrifices efficiency for portability, in the same way that a corporate form letters seldom make good Tweets.

But when it comes to assessing someone’s ability to code—especially for job candidates—this creative aspect causes problems. While a multiple-choice test can give a non-technical person a numeric value to put on someone’s rote knowledge, as an assessment, it really misses the point.

I think the best solution is to use places like Github (which, coincidentally, just recently added verified accounts) that provide a sort of digital portfolio for coders. You can see how they approach problems, how they describe their solutions, and you can even download their work to see how it runs.

Granted, this sort of analysis is less useful to the non-technical, but frankly, if you’re hiring for a technical position, you should have an expert help you out. Now if only professional writers were hired this way as well.