Robert Heaton

Skeptical advice for programming jobseekers

28 Apr 2019

I was recently interviewed for an article about how to get a job as a programmer. I had written a long and popular piece in 2014 about looking for a job in Silicon Valley, and the author of this new article was wondering if I had any updated wisdom for the modern age. Having recently held more than 40 office hours with a wide range of people looking to begin or develop their careers, I actually thought that I did have a new conjecture or two. However, I’m rather less eloquent in person than in writing, so everything came out rather garbled. Here’s what I wanted to say in ungarbled form.

What should you do? It all depends. What is your experience? Where do you live? Did you go to a well-known college? Did you go to any college? How traditional is your CV? What do you want? What could you live with? What other constraints are you operating under?

“You could solve this problem using Ruby’s build-in Array#map method.”

“My m key is broken.”

Do you think you should try to work within or break out of these constraints?

“You might want to get a new keyboard. If that’s not an option then I suppose arr.send(:"#{109.chr}ap", & { |el| parse(el) }) isn’t so bad.”

It all depends.

Advice comes in at least two flavors - strategy and mechanics. Strategy is your high-level plan. It mostly happens at home, before you find yourself in a mid-sized conference room with an interviewer. How do you present yourself? Who do you present yourself to? How do you show off your skills, and disguise your weaknesses as even more skills? Mechanics, on the other hand are low-level, individual actions that mostly come in to play once you’ve made it inside the aforementioned conference room. Mechanics often only matter if your strategy is working.

I’ve become relatively confident in my ability to give advice on mechanics. I’ve simultaneously become extremely skeptical about my ability to say anything useful about strategy to anyone not exactly like me. However, having set up a dichotomy I’ve got no choice but to give both halves of it a go. Let’s get strategy out of the way first.

Your ideal strategy is to have spent the last few years accumulating impressive professional experience. Failing that, hopefully you at least had the good sense to have been born into a family with a lot of money, connections, and great hair. Or perhaps you were in fact born into a wealthy and beautiful family, but your money and good looks stunted your development as a fully-rounded person and Python programmer. In this case you might have actually been better off if you’d had a crooked nose and a mortgage, but if you don’t have a separated-at-birth working class twin then I’m afraid that we’ll never know for sure.

A rule of thumb - be skeptical of strategy that doesn’t come from someone with first- or second-hand experience of the challenges you’re facing, or at least a statistically significant sample of directly relevant data. What works in Menlo Park may not have any relevance in Mumbai, or even in Memphis, and 5 years in marketing at Citibank is not the same as 4 years in CS at Stanford. What’s good for the goose might be useless for the gander, if I’m corrupting the idiom correctly.

Find people who have faced, and ideally overcome, the specific problems and pressures that you are facing, and ask them how they did it. Someone else who recently graduated from a bootcamp, didn’t go to a fancy (or any) college, or who got out of a rut in a sysadmin job they felt trapped in. Maybe they’ll know how to get into open source, how best to present a portfolio, or how to network. There’s no harm in listening to what other people have to say too; just be prepared to do some adjusting and interpolating, and be prepared to do it wrong. Expect to incorrectly identify the underlying reason for someone’s success just as much as they do. Remember that it’s all partly a crap shoot. Good people get rejected by bad companies.

Experiment. You may be your own worst enemy, but you’re also your own best test subject. Start with the cheapest, easiest, and most plausible ideas you can find or think of. Are careers fairs a good way for someone in their mid-twenties to find a job in Sweden? I have no idea, but I suspect that they’re free for jobseekers to attend, and that if the first one is a bust then you’re not contractually obliged to go to any more. What about meetups? Are they a good use of your time? Depends on the meetup, and on whether that’s the kind of thing you usually enjoy.

I can and will keep reflecting your own questions back at you forever.

I’m probably over-sensitized to the universality (or lack therefore) of things that I say, even though all it takes is some caveats - “here’s something that worked for me”, “my friend had success with this approach” - and it’s not ignorant any more. So if you think I might have ideas with some external validity for you then I’d love to talk. If not then I can still listen.

Now to mechanics. Mechanics are far from sufficient for success on their own:

“It’s mostly just a numbers game, how many applications have you sent out?”

“Literally, without exaggeration, more than 500, and I haven’t heard back from any of them.”

“OK nice one, just checking.”

That doesn’t mean they aren’t important sometimes.

Get a good night’s sleep before interviews. Keep a spreadsheet of where you’ve applied, whether you like them and whether they like you. Apply to a lot of companies. Apply to a range of companies. When I was last looking for a job, for some reason I thought that I wanted to work at a startup, 20 people at the absolute most. On a gamble I also applied to a couple of companies in the 100-200 people range, and it turned out that I liked them and that they were willing to pay me more. Nowadays my considered opinion is that you’d have to be faintly mad to want to work at a startup for anything like the standard terms. Don’t let that stop you though. Get breadth.

Do a couple of dry-runs. Either get a friend to role-play with you, or make nervous jokes and mumble to yourself while implementing a bubble sort. If you have the luxury, try to start by practice-interviewing at 1 or 2 places you don’t think you care much about. No matter how good you are to start with, you’ll be 25% better once you get warmed up.

Have a couple of good questions for your interviewers in your pocket. I like “what would you change about working here?” and “what’s been the best project that you’ve worked on?” Even if the interviewer’s rubric doesn’t include “asked >=2 good questions” they still can’t fail to be subconsciously impressed by such cutting, insightful inquiries.

In theory the answers to these questions will also help you decide which company you want to work at, although I don’t really know how you’re meant to incorporate the information into your calculations. Suppose that company A offers you $70k a year, and company B offers you $65k. But apparently company B does really great code review and has a “good culture”. Culture and code review are lovely and all, but do you really want to spend $5k a year on them? That’s enough to buy a $15 sandwich every day of every year, although when you phrase it in terms of expensive sandwiches it doesn’t sound like quite as much any more. I suppose you might have already foregone much more moolah when you decided you would never work at Google or Facebook or etc because of your preferred set of ethical snafus, so there is some precedent. Maybe these are all just tie-breakers in the event of a financial dead heat.

Let’s talk about negotiation some more. From the other side of the table, how does a company first decide that it would like to hire you, then decide that that extra $5k you’re trying to wangle is the straw that breaks its back, even though it probably wouldn’t notice if it lost that amount down the side of the sofa every day forever? I don’t mean this with incredulity, I really don’t understand the mechanism. I guess that you don’t accumulate a sofa-full of money by paying people more than you have to. There’s likely a significant surplus between the minimum you would accept and the maximum the company would pay you, and no rules for how to share these spoils. That might just be another way of describing market forces. In any case, a trade that contains enough surplus to make both sides feel happy is a sure sign that Jeff “Your margin is my opportunity” Bezos is going to come and fuck both of you up, just as soon as he gets around to it.

It’s sometimes said by the overtrusting and naive that a salary negotiation is actually a co-operative process and that no one’s out to screw you. This is sometimes partially true, if only because if you ever realize that you’ve been screwed by more than an acceptable delta then you’ll probably write an uncomplimentary Glassdoor review and leave. It’s typically not a hiring manager’s job to diddle you out of a full half of your salary, but it absolutely is their job to not give you that final $5k if they can avoid it. It’s kind of like how your hypothetical future boss’s job will be to both nurture your professional development and to fire you if you consistently underperform.

Overall, I get tied up in existential knots when I think about what’s really going on in a salary negotiation. I dread to think how it works in the non-profit sector, or in any other sector that falls outside of the self-interested, asset-based bargaining framework that we typically use for this kind of thing. But I do know that if you ask for an extra $N or $2*N then it could be the easiest annually recurring $N or $2*N that you’ll ever make. Remember, if that money doesn’t go to you then it will only go to the company’s CEO in the event of an IPO, or to its creditors in the event of a bankruptcy.

Finally, if you get offered stock options in a private company, make sure you understand their headline value. If this number is small then A) bummer, but B) at least you don’t have to spend any energy working out what you think they’re really worth. If the number is big then 1) congratulations, but 2) now you have to make a calculation/guess at how much less than that they’re really worth. Here’s one place to start.

What should you do? It all depends. Listen to everyone. Be careful who you pay attention to.

No matter how things are going in your career, proto-career, or life overall, I’d love to talk.

Subscribe to my new work on programming, security, and a few other topics. Published a few times a month.

More on Office Hours