How To Get A Job As A Programmer
We’re always on the hunt for talent. I think that almost everyone is these days. That doesn’t mean that we aren’t picky though. Sourcetoad has grown out of the tiny-dev-shop phase, but we’re still too small to be able to afford anyone sucking at his or her job.
This article really should be entitled “How to get a job as a programmer at Sourcetoad”. Mainly because we only really know the kind of people and skills that WE look for. I’ve interviewed a ton of programmers—at least two or three a month—so I’ve seen a lot of the good and a lot of the bad. Hopefully this guide can be used if you’re a recruiter or manager looking to interview programmers, as well as if you’re a programmer looking for a job—whether it be here or somewhere else.
I’ve listed a few items and skills that I look for when interviewing potential developers. It should be noted that I do take into account the experience of the interviewee, their potential pay level, and career goals when I evaluate each of the criteria. I would hope that most of these would be obvious, however, time and time again I meet developers—both young and old—missing even the basics in my list. My hope would be that someone would read this list and know what the basic requirements a dev shop like ours is looking for.
These rules apply to everyone from our interns to our senior developers.
Have a résumé
I know this sounds like a stupid thing to say, but you won’t believe how many people have come in for interviews without one. You’re out of the running right then and there for me. It’s not so much that I can see where you went to school, but it’s a cheat sheet for me to have a conversation with you about. “So tell me about what it was like to work at…” allows me to hear you talk about something, describe details, etc. It’s also just expected and professional, not having one is weird.
Have one. This is pretty close to the résumé. If you don’t have one you’re probably not serious about programming. Step three in the interview process is coming in for a practical interview, but step one is having a look at the way you code. It doesn’t have to be Github, hell it doesn’t even have to be Git, but if you’re not using a version control system, I’m sure you’ll make a great junior IT intern somewhere.
Programming is part art, part science. A cliché I know, but it works. Like any art, you need to bring a portfolio, or better yet, send a link to it before the interview, along with your repo link and résumé pdf. If you don’t have anything to show me, how will I believe you are what you say you are. It doesn’t matter if you’re a high school student or a PhD with 20 years of coding experience – I need to see something cool, and I want to hear you talk about it. If you don’t have a portfolio (even one project yet) to show, the interview is pretty much over.
Wow, interpersonal skills at the top of a list of skills for developers? What am I doing, this is nuts! No, not really. You don’t have to be a ball of pure charm, but showing the ability for some warm, some humor, and the ability to communicate is vital. We work on projects that are bigger than one developer, so being able to respect another person’s space, understand what they want, and keep a friendly team atmosphere is vital.
Know at least one front-end and one back-end framework. If you’re just a front-end person, I’d take Angular right now (even though React is the new hotness, Angular makes the point fine.) If you’re not familiar with a design pattern, you might make a decent technical project manager, but you’re not cut out for a day-to-day development job.
If you’re a back-end or full stack developer, the main thing I like to see that hasn’t already been covered is a good understanding of databases. As much as NoSQL stuff is cool, I probably wouldn’t hire anyone above an intern position without SQL experience. A more senior role would have to get my attention with talk of optimizing stored procedures or something equally nerdy.
A college degree
About two thirds of the people who work here have a college degree. I don’t think that they’re requirements, but they do help in some ways. College grads tend to structure their planning and communications slightly better, and those with Computer Science backgrounds tend to think through code and data architecture design slightly better than those who don’t have degrees. However, these are fairly small differences, and none are deal breakers.
Beyond the Basics
These are the little things that might take a potential hire to a slam dunk. These are much more subjective, and harder to quantify, but I’ve tried to list a few out.
We don’t work in Silicone Valley, but we do think our culture is important. I wouldn’t hire anyone I wouldn’t want to go out and have a drink with. If you have to work with someone eight hours a day, five days a week, you better be able to get along with them. Our tent is very big, but we generally look for smart, nerdy people, who like to laugh. The smart and nerdy part is not very hard to find amongst coders, but a sense of humor is a must have to work here.
This is just a “nice to have”, but it makes me think that you’re the kind of person who is trying to be more than just the average programmer. If you have a giant portfolio or repo with tons of community project commits, or games you’ve made, or something similar, that’d also show some dedication to the art. But a blog makes a nice addition. Something I can read shows communication skills, dedication, and thoughtfulness. Not having a blog is not a deal breaker.
What would be really nice to see in a portfolio or a Git repo would be contributions to community projects. It doesn’t have to be anything huge, but the significance behind it is telling. It shows that you are looking at projects beyond your normal scope (I’m a go getter, I go above and beyond), it shows an interest in learning, and some level of team work (even though you probably don’t know the team!)
Finally, be Happy
I won’t fire people for too many things. However, no one wants to work with an asshole, or someone who makes them feel crappy. Programmers are often smart, confident people, who can wear a little arrogance on their backs, and can be cruel in the name of “being honest”. This isn’t acceptable. Positivity breads positivity and a happy workplace is a productive workplace. Don’t be a grouchy ass.