(TL;DR: I made a survey to find out. Take it here.)

It seems like every week another article comes out on software engineering hiring practices: how to find qualified candidates, how to interview them, and what the bar should be to hire them. These articles always generate tons of comments from people with their own ideas, which makes sense! This is something that affects us all, so obviously everyone has an opinion.

I find these articles (and comments) fascinating, not only because I care about my continued employability, but because of how much they disagree.

One person will say, always do take-home problems, they let candidates show their best work; and another will say, no, take-home problems are inconsiderate of candidates’ time. Whiteboarding is efficient; no, whiteboarding is intimidating and artificial. Always phone screen first; no, do a take-home problem and then phone screen; no, take-home problem and then bring them onsite. And so on and so on. I swear every topic in hiring is like this.

I wonder if we’re asking the wrong questions.

Is there One True Way to Interview, and we disagree because we haven’t found it yet? Or do we disagree because there is no true way? If I were to write an article with my own opinion, I would say we’re a bunch of disparate groups under one title, and “software engineer” means something different to Google than it does to a startup of three. We can’t agree because we aren’t alike.

But I don’t know that for sure.

Neither do you.

And neither does anyone else, because as far as I can tell, no one has tried to study this. And I find this the most fascinating thing of all, that an industry so tied to data, observability, and metrics knows so little about itself.

So, I want ask a different, much more basic question: what does being a competent, professional software engineer mean? Am I right and we all define the term a different way? If so, are there any traits we do agree on? How does your background and career history influence this, if they do? Or, maybe I’m wrong and there’s a clear set of skills everybody generally agrees on. Maybe there’s other interesting patterns we don’t know about because nobody’s asked this question before.

I’m real curious to know, and if you’ve made it this far, I hope you are too. So, like good scientists, let’s run an experiment.

This is a survey: http://www.surveygizmo.com/s3/2693369/what-makes-a-competent-software-engineer You don’t have to be a working software engineer to take it. If you care about this subject (maybe you’re a student, or someone who hires software engineers) I’m curious to know what you think.

You can choose to include your responses in a public data set that I’ll release along with my results. There’s plenty of folk with more statistics knowledge than me, and maybe you can find patterns that I can’t.

I’m excited to see what comes out of this experiment. You can follow along on the project Github page, or follow me on Twitter.