Niklas on Spolsky (and it’s not gay porn)

I kid Joel Spolsky. He is fantastic. A phenomenon. Loved by children, small animals and women everywhere. A true renaissance man, an avid painter and personal friend to several presidents, he is the veritable epitome of success, both professionally and in his personal life. That said I don’t always agree with him. As those of you who know me know, this does not make him unique since I, for some odd reason, find it very easy to disagree. I guess I am simply disagreeable. Anyway. Joel has been updating his Guerrilla Guide To Interviewing every once in a while for the last couple of years. It’s actually quite good and useful in certain ways but there are a couple of things that are sorely lacking in there that really need to be addressed if you are hoping to hire the right people for your department, startup, harem, time travel or away team. He also has some serious old fart tendencies that I wanted to bring up. Seriously Joel, what’s your hangup with pointers? I am sincerely curious. Sure, things were better in dem good ole’ days when we had to manage our own garbage collection. But in reality there are more pressing issues that are far more important. Remember design? Remember concurrency? I have seen really, really good C programmers who could do all sorts of weird and wonderful low level magic completely botch design. You couldn’t leave them alone for five seconds without them doing something really stupid. I understand where he is coming from because sometimes you see some truly atrocious examples of people clearly having no business whatsoever doing programming but in reality I have seen more issues with old dogs refusing to learn how to sit than with younger dogs who can’t roll over. Errr… Ah whatever. Anyway, let’s move on to what I really wanted to say about the guide to interviewing.

1: Superstars can kill your company. In fact I would go so far as to say that superstars can be seriously toxic. I have seen more than one project blow up because superstar X got pissed off at superstar Y and decided to go sulk for a couple of months. Or that superstar X suddenly stopped answering his phone. Or left for another company in the middle of a project, neglecting to bother with a handover. You can only keep a stable environment with superstars if you give them an extraordinary workplace and you have really, REALLY good management. And even then you are taking a risk. Because sooner or later someone will have a serious case of ego and then you may well get your ass handed to you. Now, I understand that your company wants only the best of the best. The very brightest. The stars on the pitch black sky that is the underbelly of programming. (Actually the underbelly of programming is vast, wobbly and pale and not very starry at all but never mind, it’s a metaphor or something) But listen to me carefully now, if you want the very best then you are going to need an exceptional workplace. You probably don’t have it. Face it. The superstars are a very small group. Some of them end up at the Googles and Microsofts of this world, others at small startups that they tear to shreds. Don’t be that startup.

2: Pragmatic trumps pointers every time. You don’t necessarily need someone that understands pointers. It’s good and it makes for nice old-fart-coffee table-conversation but what you do need are people who are pragmatic. The customer is expecting delivery but the fancy object database doesn’t work. What do you do? You need to find a solution quick that will actually work. The ability to think quickly when it comes to implementing algorithms on a whiteboard is nice but it is by and large the equivalent of a party trick. I have seen people who could probably do a radix sort on a whiteboard if you asked them but totally froze or came up with unworkable solutions when the real world knocked on the door. This is neither a case of not being smart enough or not being able to get things done. It’s a question of being able to do what is needed, finding a workable solution and having the ability to think outside of the box.

3: Being smart and able to get things done doesn’t mean that you are God’s gift to an employer. In fact I think that far too many people focus too much on technical skills and far too little on the ability to do other things. I would personally never hire a developer that I wouldn’t feel comfortable putting in front of a customer. Never. Ever. Doesn’t matter how smart they are. If they can’t be a part of the process from start to finish then they are probably useless. “No, that sounds overly harsh”, I hear you say. No, it doesn’t. I think one of the biggest problems that software companies has today is the inane technology masturbation that is going on. Complaints about sales. Complaints about customers. Complaints about requirements. Screw that. Unless you are willing to talk to the customer, face to face, in a way that doesn’t risk the sale, about their needs, wants and pains then what use are you as a developer. Your ability to crank out code that support a certain requirement can be fantastic but I will rather have two guys that can manage a customer relationship and are willing to learn and appreciate the hard work that is being done by other people to ensure that they get their paycheck.

4: It’s the ability to understand business issues stupid. Well, it will never be a bumper sticker that’s for sure. But the meaning is simple, at least to me – far too few programmers, software architects, system managers and so on bother to actually try to understand the realities outside of their very limited view of the world. How will this product be sold? Who is going to buy it? Why will they buy it? This is not something that only the upper echelons of management should concern themselves with, it’s something everyone should be thinking about. Sure, passion is great. A way to shave off a couple of CPU cycles is really useful. But if I have to compare the ability to shave a couple of CPU cycles with the ability to think and argue around business issues then the latter will win hands down every single time.

Other than that I totally agree with Joel. You should read his guide and follow his blog. It’s really good and useful. Just remember that you are not Joel, your company does not have the same needs that his does and that a world that is moving ever faster is going to need teams with players that can cover more than one single position.


About this entry