Programming Interviews For Dummies.
I know it’s a horrible world out there, and there’s so much more bad than this. Still, it saddens me, on several vectors at once.
Okay, well, I’ve had four people ask me about this, and I happen to have this soapbox sitting right here, so what the hell.
Before anything else, there’s the series titles, and I’m going to make a joke: I always wanted to write "Low Self-Esteem For Dummies!" and see how many copies I could sell.
There’s a serious thought behind the joke. I don’t like "…For Dummies", and I never buy one or recommend one. I am not a dummy. People who are asking for info aren’t dummies. People who are learning to do a thing aren’t dummies.
People who ask dumb questions aren’t dummies. When I was a kid, I asked one. A grownup said to Mom, "He sure asks a lot of dumb questions." Mom replied, "He sure as hell does, all day long." Then she said, , bless her heart, "You notice, tho, he never asks the same one twice."
Every great thinker you know, every philosopher, every scientist, every writer, every artist, everyone whose mind you respect? Every single one of them got there by asking dumb questions. They weren’t dummies, they were curious and thoughtful and courageous.
So yeah, I don’t like "…For Dummies". But put that aside, because that was only part of my issue. The rest of it had to do with the whole supporting structure that calls for "programming interviews" and then sells books to help someone get past them.
The trade’s weak understanding of professional programming, coupled w/ insane demand-driven desperation, takes a perfectly ordinary job interview — an essential but minor hurdle — and makes it special, urgent, scary, and simultaneously even less useful than its archetype.
Easily two-thirds of what makes a person a good professional programmer for your team is exactly the same as what would make them a good employee of any kind for any team. So right from the get-go, the programming interview is only programming-custom to a third.
And the other third? This is where the weirdly demand-malformed trade really shows itself, by how it sorts the features it looks for. It prioritizes many of the things that are in fact a significant cause of their desperate need for new hires in the first place.
Professional software development is absolutely and fundamentally a collaborative enterprise. When I interview a programmer, the first thing I need to know is what kind of collaborative experience and skills they have.
(Remember, interviews in any trade are about prima facie discovery. They only provide proof out at the fringes. Their whole purpose is to cheaply decide “reject or go further”. I’m not faulting the programming interview for not proving suitability.)
I want to know whether a candidate has adequate skills & experience in *any* programming language. I don’t care what language. I need that sort: happy experience working comfortably with high-structure high-detail low-tolerance imperative text is something not everyone can do.
Honestly, if you’ve seen one stupid annoying punctuation-laden meaning-hiding bundle of program text, you’ve seen’em all. (Maybe the OO/FP split is different, but I’ve yet to see that proven.)
I want to know whether a candidate knows what to do when she doesn’t know the answer. In spite of the pedagogy, not to mention the purveyors of brilliant-asshole theory, most of professional programming is *not* knowing the answer before you start.
A particular talent I’m looking for: do they ask questions. A massive amount of a working programmer’s time is the careful extraction of information from people. It requires courage and curiosity, and every junior programmer needs both, in spades.
So, what do these programming interviews do? Every single such I’ve ever seen or read about emphasizes knowledge over learning, solo over collaborative, greenfield over brown.
*And*, they do it in a way that emphasizes how big, scary, and important the interview is, and frame it all as if the would-be hirer weren’t as desperately searching for a hire as the would-be employee is desperately searching for a gig.
(Of course, that means the people who pass such interviews are exactly the people who function well on the surface under very high pressure. We have a name for that: “hero”, and hero programming is just one of the many things broken about our trade.)
So. Fine. I’ll step back now. The original remark was a more-or-less half-assed crack at something I haven’t even read. The lurking monster, well, you see what happens to me when I talk about it.
The trade is broken, badly so. All the pieces of its brokenness support each other, just as the broken programmer’s interview yields broken programming-teams working in a broken way to brokenly fail to deliver value.
I believe that un-breaking it is possible. But I don’t believe it’s possible as long as we all buy in to nonsense like this.
Let’s change things!!
The GeePaw Podcast
If you love the GeePaw Podcast, show your support with a monthly donation to help keep the content flowing. Support GeePaw Here. You can also show your support by sending in voice messages to be included in the podcasts. These can be questions, comments, etc. Submit Voice Message Here.