Appologies to Forrest Gump for the title of this post, but I want to talk a bit about a recent Steve Yegge post that I enjoyed reading. Steve is riffing on a Joel Spolsky quote, “Smart, and gets things done.”
Joel’s point is to hire people that are smart, and make sure they also can get things done, because there are a lot of smart people who can’t. He mentions PhD’s in large companies as one example. Yegge’s riff centers on the idea that it is nearly impossible to tell whether people are smart because “”smart” is a generic enough concept that pretty much everyone in the world thinks they’re smart. This is due to the Nobel-prize-winning Dunning-Kruger Effect, which says, in effect, that people don’t know when they’re not smart.” That’s an interesting appeal to ignore smart because of what some other smart people said, but we digress!
Steve spends a lot of words convincing us we are very unlikely to even be able to recognize someone smarter than ourselves, let alone hire them. This is a point I seriously disagree with, and my read of the Dunning-Kruger effect doesn’t contradict that. It doesn’t say people can’t recognize smart, it says they’ll tend to overestimate their own intelligence and underestimate that of others. What does that mean?
Generally, it means we can mostly recognize people who are a lot smarter than us, but not so much people a little smarter. Are we suprised at this? Did we need a Nobel Laureate to tell us? No, a pretty casual study of human nature would have predicted it. The problem is conflict and the tussle of ideas for supremacy by their backers. A person who is a little smarter may simply seem antagonistic. They keep beating us a little bit, but not always. That annoys us and polarizes us against such people. We start to think they aren’t so smart after all, just that they’re messing with us. Or perhaps the smart person is not articulate, or not extroverted. They’re conflict averse. Hard to decide they’re smarter if they won’t or can’t stand up for their ideas.
I can say with great certainty that I have met a great many people smarter than myself and I have also had the pleasure of having smarter people working for me. It’s a beautiful thing if you can arrange it. I read somewhere that a successful management structure is a Type B personality leader with a lot of Type A’s to sweat the details. I’m too Type A for that, but having a lot of smart (but get things done) people is nearly as good.
However, I think the problem I have with Yegge’s post is he spends an awful lot of time obsessing about making sure every last person is smarter. Let’s face some realities. Quite apart from the problem of even recognizing the smarters, why do they want to work for you? What do you bring to the table for them? Be sure to give that some serious thought and incorporate the results into your sales pitch when you go to hire those people.
I want to get back to Spolsky’s original aphorism, “Smart, and gets things done,” which Yegge has discarded as impractical, and point out that I agree with Joel that it conveys everything you need to know including how to decide “Smart”. Joel is saying smart is important, and do what you can about it, but the juxtaposition of “and gets things done” is there for a reason. And I believe it conveys the real secret sauce.
There will be those eliminated from the process as “not smart”. This is fine. My read of the Dunning-Kruger effect in no way implies a conclusion that “not smart” has a high error rate. So don’t hire any “not smarts!” Now you have a bunch of “smarts”. They are likely clustered around the interview decision maker’s collective IQ. This is where “gets things done” shines.
I have tended to view programming as a talent you are born with and that you cannot be taught to do well. Perhaps this is an indication I am unsuccessful at identifying smart and Yegge is right, but I don’t think so. I’ve seen very smart people who are lousy programmers. How do I know this? It starts out with they didn’t get things done! Curiously, I have seen folks with just a high school diploma code rings around MIT CS PhD’s. I’ve seen individuals with 5 years of experience code rings around those with 15. I’ve reached a point where despite the fact that I have a CS degree from a good school, I’ve stopped caring about where the person went to school. I’ve stopped caring about how old or how young they are to a great degree. These are factors that may or may not get you into the interview with me, and if they got you in, they won’t be anything we’ll talk about.
What I care about is whether you played an integral role on the dev team for some product I am impressed by. If you didn’t, I probably won’t talk to you for very long. If you did, my conversation will be about drawing that out, understanding the role you played, and getting you to tell me all about what you did and why you’re proud of it. As I talk to individuals, I also like to network and find out who they know that impressed them for having done something significant on a product they loved. The networking is good, but so is the chance to engage in further dialog about this central test. The right person can speak with great passion about their contribution, and you’ll leave the discussion with little doubt. You won’t be right in hiring them 100% of the time, but the success rate is pretty darned good.
I’m in the process of adding some new talent to my current team as our company is growing rapidly, so I thought it good to revisit these thoughts.
And remember, Smart is as Smart does.