I Guess I’m an Expert, Maybe?
Recently at work I’ve had a brand new and strange experience reviewing applicants for a Web Developer position. It can be a little intimidating, to be completely honest, if you’re a person who typically falls victim to Impostor Syndrome.
If you’ve never heard of it, Impostor Syndrome is a psychological phenomenon wherein a person is unable to recognize or accurately gauge their own competence, so they see themselves as an impostor and worry about getting “found out.” Don’t think of it like a disorder, it’s not something that severe – think of it more like Confirmation Bias. It’s just a trick your brain can play on you sometimes.
If you fall for it then you already know where this is going – no matter how well I think I code, I always think that I’m missing something. There’s always a little bit of a voice in the back of my head second-guessing things:
“But you’ve never coded in a corporate environment. What if they’re on an entirely different level? Hell, you’ve never even used a source safe. You don’t even really know what Agile is.”
“Your boss is going to notice that they’re way more qualified to be here than you are. Once one of them gets hired, it’s only a matter of time before you’re cleared out to make room for them.”
My new boss, though, threw me a curveball – I had to write a test for the candidates to take. Because of the labyrinthine state hiring procedures, it took a while to figure out what form that would take, but we’d finally nailed it down.
The test was a zip file with instructions, a blank HTML page, enough CSS and JS to flesh out a basic responsive template, and two mostly empty CSS/JS files in which the respondents would write their code. I explained the parameters, the expected return value, and the expected behavior for a function – their job was to fill out that function and have it behave as described.
It was a basic college-level Computer Science 1 set up. I was doing what my professors were doing when I considered them expert enough to teach me to code – but I wasn’t throwing this question at a bunch of CS students. I was throwing it at professional programmers.
“Where do you get off? Isn’t it a little insulting to tell a bunch of professional adults to do a homework assignment?”
I didn’t know what I should expect back. The problem as described could be solved a few different ways, sure, but it was pretty straightforward. What if it was too easy, and there was no differentiating between the candidates?
What I got back, I assume, must be a very familiar sight to Computer Science professors. The first round of candidates had all solved the problem. The function did the thing I requested it do. There were points of differentiation, but they were all in the details.
How closely had they matched the design? Did they get the fonts and colors right? Does the function properly obey all of the passed parameters? What does it do when there’s invalid input? Are there comments? Is the code easy to read? Are there any performance issues?
“You’re reviewing showcase code written by professional coders. Do you really think you know better than them?”
I’ve evaluated 3 candidates’ code so far and, while all of them did solid work, I now know for certain that they’re not out of my league. They may feel comfortable calling themselves experts but they still miss error checks. They still forget to comment. They still format code in ways that make it hard to read. They still misinterpret the graphic designer’s documents.
The experts hadn’t failed – each one produced code that effectively solved the problem we put forth. But they weren’t perfect either. And what’s more – I know my stuff well enough to be able to call them out on it.
The voice in the back of my head still won’t let me comfortably call myself an expert, but maybe that’s not such a bad thing.
“You’re not an expert. Your code isn’t perfect. There’s plenty of room for improvement.”
“Well, what are you waiting for?”