Finding a job as a software engineer is a lottery. You will find lots of contradicting advice online, and what I’m doing here is adding my grain of salt to this big cacophony that is the world of technical recruiting.
Younger engineers sometimes contact me on Twitter and ask me for advice about how to find a (first, second, nth) job. Let’s analyze some common factors considered crucial to recruiting, one by one.
Open Source Portfolio
Some people say your open-source software contributions are a key factor to get a job in the software industry; your pull requests and number of followers on GitHub will get you the job, not your resume.
Bullshit, I say, and Marcin agrees.
There is no single recipe to landing a job; there is no single factor that will consistently make a difference in your job search. Open Source is not one of them.
Let’s make this clear:
Every. Single. Company. And. Their. Recruitment. Processes. Are. Different. And. Equally. Flawed.
Write that down and memorize it. Done? Good, because it’s a lottery. Every single interview process will be different.
Back to the subject of code, some companies might care about your FOSS code contributions; but they won’t probably do so for the reason you think. They might be more interested in your capacity to work for free; if you contributed so many pull requests for nothing, imagine all the code you’re going to write for us for this meager salary. That’s what they call passion at work™®©.
Other companies might look at the actual code you’ve written, cloning the repos and seeing your coding style, the number of tests you’ve written (or not), the documentation you might have written (or not), stuff like that. I did that when hiring a while back, and it is an interesting indicator, but beware, lots of people game recruiters with useless code they’ve copied from somewhere else, just to get the foot in the door.
Dear reader: don’t be that candidate.
So I would review the FOSS code as a criterion, but would not consider it the definitive one. In particular, it does not work with engineers who have worked in corporations not sharing code (they are the majority, still), like banks, finance, healthcare, or other industries where trade secrets are never disclosed. Not all companies are into open-sourcing their stuff. What? Shocker!
Don’t dismiss an otherwise excellent engineer because they don’t have projects on GitHub. And gosh, don’t expect or pretend that they do that in their free time, either. People have a life to live, and that goes beyond writing code, geez.
Anyway, it’s a lottery.
Resumes
Some companies don’t give a shit about your code and will be exclusively drilling your resume during interviews. This is another category with two very distinct subcategories.
The first subcategory is the one that looks at what you’ve done and judges you for that. That’s usually fine, I guess.
The second subcategory judges you for your gaps, that is, for what you haven’t done. There’s a big swath in the recruiting population that simply does not want to see gaps on resumes.
I’m serious, some get angry. Imagine a person you don’t know and you’ve never seen (and hopefully, you’ll never meet again, like, ever) starts belittling you because you took a year to travel around Patagonia 20 years ago.
I have a few gaps on my resume, so these people have always been easy to spot. I don’t want to work with such people. So all in all, yeah, I’d recommend you take a sabbatical, just for the sake of having a gap or two in your resume. Believe me, it helps to spot assholes. And it’s awesome, you get to travel the world and see stuff and meet people. Sabbaticals are a win-win-win.
Regarding the cover letter; some companies just wouldn’t even consider your application without one, some others just don’t even read them, and I knew a few that downright dismissed candidates because they wrote one.
So, again, it’s a lottery.
Tech Questionnaires and Assignments
Some companies are going to drill you down with technical questions. This is, I admit, the point where I wrap up the interview and leave. I mean, I leave the room at that point.
Judging a person for the amount of stuff they can memorize is ridiculous. Particularly when they can find that information immediately with a DuckDuckGo or Google search.
What is the point of being happy about a candidate who could reply to your questions correctly? What if you had the wrong answer and the candidate gave you the correct one? (Been there, experienced that, and not only once.) Are you going to ditch them because of your ignorance? Really?
Particularly in Switzerland, the exercise in futility of technical interviews makes no sense. You know what? Because there’s a trial period of three months at the beginning of every employment contract. You have three months to get rid of a person in just a week if it doesn’t work. So what is then the point of going through an exhausting process of weeks and weeks and judgments and ghostings that makes everybody unhappy and that has a higher noise-to-signal ratio than expected?
Memorizing stuff means nothing. Reversing the proverbial linked list on the proverbial whiteboard means nothing.
People can (should) offer much more to an organization than just raw knowledge. Like teamwork; empathy; respect; proactivity; insight; experience; context; and so on. Don’t get me wrong; I do understand the need to gauge people’s knowledge, to a certain extent. But questionnaires are simply the wrong approach.
For that reason, if all else fails, I would recommend doing a paid exercise. If you, as a business, are so keen to find the best of the best, then hire them as freelancers for 2 or 3 hours, give them an exercise, and then pay them for that (yes, pay them, a decent hourly rate). Instead of a series of stupid questions whose answers can be found in books, just ask them to do something. Not on their time, and not for free; invite them to your office, or work with them on a Zoom call, and see them at work. Even better, have one of their future colleagues with them, and see how they react and interact. Do they ask questions? Do they propose “out-of-the-box solutions”? If they do, maybe you’ve found a gem.
And even if you didn’t, pay them for the time, say thank you, and please, please, please: whatever the result of this process, don’t ghost them. Just don’t.
But since I doubt recruiters are reading this post, this is my message to you, dear candidate: it’s a lottery. Don’t do coding exercises for free; if a company gives you a “4 hours assignment” to complete, tell them your hourly rate and send them an invoice at the end.
As Ray Liotta and later Mike Monteiro both said, “Fuck you. Pay me.”
Yes, I think that candidates should be compensated for their time spent fulfilling exercises which, in many cases, end up being used by the very businesses they applied for. Unethical businesses? What? Shocker!
I tell ya, it’s a lottery.
Process
Some companies are going to tell you upfront everything about the hiring process; the length, the number of interviews, the number of people to talk to, and also the budget for the position. This is how it should be.
But even if all seems (or seemed) to be going well during the recruitment process, it doesn’t mean anything!
Right after the 3rd interview of a series of 7, you could get an e-mail that says that the position has been filled internally, or that you’re not a good “culture fit” (whatever that means), or that the position has just been canceled altogether, or that the company moved into a hiring freeze (which is, by the way, happening a lot these days.) This could even happen after you passed all the interviews and received an offer!
In my case, I even had the experience of arriving on my first day of work and realize that the job I had applied for did not exist anymore in the company. I wrote about that experience 12 years ago.
Oh, and if you hear the words “we are family” run away for dear life. You can find more information about that in this blog. There is always a hidden agenda in those words. Ask yourself this question: who do you want to work with? Remember that programming is a clerk’s job.
If you decide to go kick off the interview process, here are a few interview tips for you from yours truly.
But again, I insist; it’s a lottery.
Money
If you are not told the salary of the position or the complete details of the upcoming interview process in the first interaction with your prospective employer (or its deputy recruiter), just walk away. It does not make any sense to embark on a journey of 5 or 6 or 4 or 10 interviews (yes, you read right) if you don’t know how much money we’re talking about at the end.
On the other hand, if they have the courage of asking you if you know how much you will cost them as an employee, again, run away for dear life redux. Read more about this particular case on this blog.
And if you ask and they are offended or surprised because of your materialistic views, walk away. Keep in mind that a job, it’s a job, that is, a job; in other words, it’s a business relationship. You give your brain CPU time in exchange for cash. That is all. There’s no “passion” in there, there are no “ninjas” in there. The whole idea of you working somewhere is to be able to make cash. If we didn’t need to make cash to live, very few people would work, or at least not according to the rules of the current broken state of modern capitalism.
So, whatever company you’d like to interview for, please make sure to get the following 2 pieces of information at the first interview (actually, you shouldn’t ask for them, and they should tell you; and if they don’t, write that down and remember it):
- Length and description of all steps in the recruiting process.
- Amount of yearly salary, and eventual bonuses, for the position.
Remember that it’s a lottery and that some companies might not provide this information; to the first question, because it’s confidential (why would that be the case, that’s beyond me), and to the second, because they argue it demonstrates “a lack of passion in you”, dear candidate aware of the realities of our modern economy.
Lottery
Once again, répétez avec moi: the recruiting process is a lottery. Every company is different, yet they all believe they got the best process. All of them suck equally, none has it completely right, and given this reality, I’d pick a company that is upfront and humble and even a bit messy anytime.
An upfront and humble company will be respectful and clear with you and your candidacy from day one. They will get back to you when they say they will. They will even provide some useful feedback if the answer is negative. They will value your time and patience, and retribute it to you if they ask for a practical exercise. They will not reply to you with dry copy-pasted templated texts.
I pondered in this blog the need to rethink the corporate world 15 years ago (!), yet here we are, still.
So, remember: as in any lottery, you have more chances of losing than winning.
PS: if you would like to read some personal interview anecdotes, you will find them in this De Programmatica Ipsum article written in April 2019.