Unsettling thought
Among the ranks of people with computer science degrees, there are an awful lot of people who are not actually very good at computer science or any of the things that might imply: programming, systems design, or any form of algorithmic problem solving.
Why do I say this? I’ve seen a lot of them. I got my CS degree from one of the best undergrad CS programs in the country and probably the world (Carnegie Mellon), and during that time, I was a TA for several courses. A lot of CS students passed through those courses who really didn’t Get It. They never seemed to get to an intuitive understanding of the concepts, whether those were finite state machines or x86 assembly. Thanks to the miracle of grade inflation, they passed the classes despite a thoroughly mediocre performance, and presumably they’ll graduate and a lot of them will enter the industry.
Or they’ll try to, anyway. I’ve seen this kind of person (not specifically from my college) from another perspective: they interview at my company. Of the interviews I’ve given, most have been total washouts. The candidate and I will chat for a little while about their interests, their previous experience, why they want to work for us. Then I ask them a question that requires them to write some code, and this is often where it goes wrong. I’ve interviewed people with a good deal of experience in industry, with degrees from prestigious universities, who have founded startups or done any number of impressive things, who just melt down when asked to write a simple piece of code. I know that part of this is attributable to the high-pressure environment of an interview, where the two of us are in a cramped room and they’re standing at a whiteboard while I sit there watching and determining if they should be given a job. I can’t understand the disparity between these people’s accomplishments on their résumé and their inability to demonstrate any competence at the most basic, fundamental skill required to create software. I wonder, “What did this person do day-to-day at their previous job as a software engineer? Did they write code? If they’re this bad at writing code, how did anything ever get produced?”
And you know what? These people are the ones who write the software that is actually really important in the world. They are the ones who write the software that transfers money between banks, or that controls electricity distribution, or that flies commercial aircraft autonomously.
Think about it. When was the last time you met a soon-to-be or recent CS grad who really wanted to go and work for a bank? All the top talent wants to go work for Google, or Microsoft, or Apple, or some similarly big-name company whose primary business is writing software. Or they want to found or join a startup whose business is writing software. That’s the big thing. None of the top talent wants to be a programmer for a company that is not a software company. Do you even know what company you’d have to join to work on electricity distribution software?
These positions, writing software that is really important, where malfunctions would cause either major disaster or widespread grinding-to-a-halt of things, are populated by people who didn’t enter the software industry, usually because they are not talented enough at writing software. Food for thought.
It’s not much better over here at Pitt, sadly. I’d only hire 7 of my classmates.
Steve Klabnik
May 2, 2010 at 23:01
I think the answer is obvious. Interviews are not good ways to figure out if someone is good at writing code.
A ton of people who write code that runs important stuff would probably do really terribly in an interview. “Write me an inorder traversal of a b-tree” or something like that doesn’t apply to many situations in day-to-day corporate-code-monkey environments.
Lots of hackish code runs the world. And that’s okay.
Dave
May 3, 2010 at 00:17
Unless you are looking for teachers or public speakers – totally wrong approach. Also – it is a bit puzzling how much you draw from your school experience. School is school and then there is real work – big difference.
Anyway – algorithmic thinking exists at a different level than mere repertoire. Ever seem a teacher stumped when a base premise is rightfully challenged? They just went from “muscle-memory” repertoire to real thinking ; ) Also – many programmers are fairly inept in social situations which is why they became programmers.
It sounds like there is an adversarial and somewhat arrogant kind of undertone which maybe expresses a hidden desire to fail many candidates in order to feel better about yourself. You probably should stay away from interviewing with this current perspective, as you certainly missed out on a bunch of good programmers.
stan
May 3, 2010 at 04:16
Some very good points there. Really liked the point that some computer sciences just don’t get it. Saw that in my graduating class. Would say around 50% just couldn’t code, really scary.
Liked the point about where this computer scientists end up. (fired over to a mate whos working in a bank =])
steve
May 3, 2010 at 08:21
This conclusion seems somewhat elitist. It’s very easy, as a teacher, to think that students are divided into two big groups of “smarts” and “dumbs” because those are the student profiles that stand out. In reality, the majority of students are average and have an average understanding of the course material.
I’d imagine the majority of people don’t necessarily want to relocate to Silicon Valley/Redmond/California/USA/whatever and many may already have networking connections into specific industries (family, friends, etc).
With that being said, I do notice that there are more inept “programmers” looking for jobs than able programmers. I assume the able ones simply get jobs quicker.
Leo
May 3, 2010 at 09:45
Programmers want to work for software companies because at software companies they are the heart of the company, and generally treated well. Programmers don’t want to work for banks, where they aren’t given all that much respect. If non-programming companies treated programmers as well as Google treats programmers, they’d find good employees too.
Peter
May 3, 2010 at 17:44
Oh hey, this got on Hacker News, that explains the traffic.
I realize the normal interview process is pretty flawed. Most software companies do; it’s just that there isn’t a much better substitute. In fact, when I interview people I strive to give problems that someone might actually have to solve. One of my criteria for a good interview question is, “If a candidate asks me, ‘Why are you asking me this? Might I find myself actually implementing this if I worked here?’ I must be able to say ‘yes’.”
I’m painfully aware of how elitist this post sounds. And it is true that the world is not divided into “good” and “bad” programmers. My point was more about how, generally, the skill of the programmer does not correlate with the importance of the software the programmer writes, and when you think about what we rely on the most important software in the world to do, this is a little disconcerting.
thinkdifferent767
May 4, 2010 at 04:01