Seeing this article about Google and their recruiting and hiring practices reminds me of an observation that has been backed up by experience over the years. That observation is that intelligence does not lead to effectiveness. In fact, it can lead to some of the more misguided actions and conclusions that I have ever seen.
The seed of this observation came when I was working at a small consulting firm that had an external consultant as it’s chief technology person. This guy was incredibly bright, but had created a system for merging and reporting on data using flat files that was very nearly unmaintainable. Since the task of maintaining this train wreck was passed onto me when I was hired, I immediately started looking at ways to make the process more automated. It seemed a natural fit for importing the data into a database and driving the transformations and reporting from there. Here is where the fun started, I mentioned my plan to bright-guy and he launches into this red faced tirade about how it will never scale and database b-tree algorithms were too inefficient, he knew because he had written his own b-tree algorithms, etc. This rant went on for at least ten minutes. While he was ranting away (and in between mildly disagreeing with him) I was typing away in r:base (of all things) and knocked together a prototype that basically proved, well, he was demonstrably, dead wrong. He poked and prodded on the prototype for about a half hour, then finally conceded that ‘things had changed with data algorithms in the last few years’. Indeed.
Intelligence is great, but it needs to be pragmatic and relevant. When I discuss this with others, I usually take it to a non-technical domain, just to remove any of the techno-zealotry that surrounds most of software and technology. For the pragmatic developer, if you ask them to make mashed potatoes, they will either know how to do it or consult a cookbook for some reasonable guidance on how to achieve the desired outcome. The bright-guy, will likely produce some studies around the required crushing force of a potato, white papers on starch combinations, argue that beans are more appropriate for mashing and possibly even conclude that mashing potatoes is not possible. I’ll take the pragmatic guy and his results any day. He will achieve a quality result in the amount time the bright guy spends on arrogant tirades and irrelevant research whose aim is to refute your request rather than respond to it.
Another great example, is then I was hired into a financial services company that up until my arrival were utilizing high priced consultants from Microsoft. Nine months before, there were given a somewhat simple task — to take a set of financial formulas and create a DLL that would allow a suite of financial planning tools to use a common implementation of these formulas. Three guys (1 PhD and 2 MS degreed bright guys) worked on this for nine months. Nine months. What they came back with was the proclamation that it was impossible to implement all of the calculations in a single function call. Not only was this not what they were asked to do, how they could have ever reasonably conceived that implementing calculations in that manner was a good idea was beyond me. When I gently pointed out the problem with their approach, the response was an unapologetic ‘you think you can do a better job, fine…but just look at our stock price!’ No mashed potatoes for that company. The good news was that after a few more months of my mopping up their crap and making much more progress than they had in nearly a year, they were (finally) shown the door. They were even ethically challenged enough to try to recruit me before they left. No thanks.
On another occasion, I was the tech lead at a consumer electronics manufacturer. I successfully migrated them from a load of mini computers to a client server based environment, got them connected to the Internet and built a web site for them back in the days when Mosaic was THE browser and Mozilla (soon to be the Netscape browser) was a rumor being discussed on Usenet. I digress. When I left, the CEO of the company proclaimed that he was going to get a real bright guy ‘to take them to the next level’. So he went to Carnegie-Mellon and hired a MSc grad. What an unmitigated disaster.  I kept hearing from people who where still there that this guy would do things like reboot production servers, power off network hubs and other clueless activity. After less than six months, they let this bright guy go (apparently with a lavish severance package to keep him quiet and avoid embarrassing the company and the CEO any further).
I have also had occasion over the years to interview Computer Science PhD grads for various tech positions in business. Inevitably, I’ll ask what their thesis topic was and then ask how that it could be applied in business or industry. It is frightening the number of blank stares that simple question receives. It is always a bit telling when the answer is that it has no application in business. It is even more telling when I suggest a few applications that make them sit up in their chair and an sheepishly admit that they never thought of applying their work in that manner.
Lack of relevance is also the problem with asking cute little problem solving questions in what are supposed to be technical interviews. This seems to be a cliquish thing that really has no bearing on software engineering-type problem solving. I don’t solve word puzzles for fun, because frankly, at the end there is no result (the term ‘mental masturbation’ comes to mind here). However, solving a technical or business problem is enormously satisfying because in the end there is a tangible, relevant achievement.
technorati tags: intelligence, hiring, jobs, problemsolving