Brief thoughts on getting hired as a senior coder
So, I’ve recently gone through a job search as a senior engineer and landed a new position.Each one of these points could be a separate post, but just wanted to give some quick thoughts out there, for people in the process!
#1) I was pretty selective about applications and interviews. I liked my job and while I was looking for a new challenge and growth opportunity, I wanted an actual good fit since I had the luxury of time. Even still, it took /a lot/ of applications and time. Basically about a year. I don’t have the actual numbers, and I think I actually fared better than many job seekers, but I ended up going wire-to-wire (all rounds of interviews through to reference checks) with four companies, and was offered a job from one of them, but I probably either dropped out of or was cut from about 20 interviews after we decided no mutual fit, and I didn’t hear back from at least 50% of applications, so maybe another 20–30 applications that were radio silence.
#2) Tech interviews are just stupid broken. Each of those four wire-to-wire interview processes took between 40 and 60 hours, maybe more if you include company research in the first place. Take-home projects, phone screens, round after round of video interviews, maybe a day long on-site, etc.
Other interview processes where there was a bailout took less, but still maybe 4 hours, maybe 10 hours, etc. Asking people to do this around a full-time job is really difficult. You’re talking hundreds of unpaid hours job searching and interviewing.
I’ve been on the hiring side, and I’m 100% sure that there is not much I need to know beyond an hour long free-form discussion about tech stuff and maybe an hour or two of pairing (actual pairing, not just watching…) In fact, I am way sure that I can get a better sense of how someone’s code brain works by talking about actual day-to-day tradeoffs than in seeing whether they can build a CRUD app. (That being said, some programming /together/ super good signal. Have seen many people that look great on paper and when it comes down to coding, there are some clear red flags for sure, but a giant take-home? Prob not so nec…)
Even if it increases signal-to-noise a tiny bit, it is so expensive to have your engineers spending hundreds of hours per hire doing interview stuff and there will always be uncertainty! Maybe they are actually a jerk, maybe they find a better job after a month, etc etc. Another whole post, but can’t think of any other area other than academia that demands so much time from interviewees.
Don’t know exactly how to fix, but I think if companies /want/ to do 40 hours of interview work, then pay their interviewees. Aligns incentives better in terms of not screening too many people, and a reminder that this process is costing time+money, while making sure interviewees get something for their time.
#3) I was /never/ offered feedback. Not once! Not for not getting invited for a first round interview, not for not getting called back to a second round interview, and not by the team where I literally had days worth of conversations with their entire team and founders, despite asking for it.
This sucks.
There’s no way to know what to improve on as a candidate and it basically feels like a slap in the face to talk to people for many hours, think everything is going great, and sometime after even reference checks get a one line email from someone in HR that you’ve never met that they’ve gone with another candidate.
Your job applicants are people, and they are people that honestly have less power than you — even in a job market like programming where there are way more positions than good programmers. They jump through your hoops. They do unpaid take home work to prove themselves. They research your company. They deserve actionable feedback, or in the absence of actionable feedback, at least a personal note thanking them deeply for their time.
(And note — I was applying mostly to “tech for good” jobs — jobs that openly talk about their dedication to their team and their people, jobs working for social change. Not one line of feedback from a /single company/ on something they thought I could do better or something their were looking for, not even the company that is supposedly dedicated to making work deeply human again and building work for the 21st century that I spent over a full-time week with!)
#4) Recruiters are absolutely useless, unless they are good, and then they are gold. Not much to be said here, general recruiter model seems to be throw all your jobs at every applicant, see if any bite. Throw all your applicants at any job, see if it anyone gets hired. Keep commissions if it works.
That being said, I worked with two recruiters (for jobs I didn’t end up taking) and they were gems. You can be /way/ more honest about what you are truly looking for, and they have access to opportunities that are not advertised, and if they are good, they want both you and the company to be wildly happy with the match because they are playing the long game. Ignore 95% of recruiters, but if you find a good one, keep those bridges built cause who knows when you will need them!
#5) Not publishing salary information sucks. Asking someone what they expect to make without publishing salary information double sucks. All it does is advertise that you are hoping to take advantage of an information disparity and pay someone less than you would be willing to because they didn’t ask for enough or didn’t make enough in their last job. Publish your salary. Let people opt-in or opt-out of applying. Don’t negotiate cause that sucks for people that don’t like to haggle. Here’s our position and here’s what we pay, that accomplishes everything that needs to be accomplished.
#6) Weed out the jerks early. I had one company that looked amazing on paper and as part of their initial interview they asked me to send over some code that I was proud of and explain why. I sent over some horrible code in a language I can barely write that I was really proud of and explained why. I stand by my pride in this particular ugly code because of how and why I wrote it, and if you want to see “good code” we can go through some gems I’ve written or something.
CTO wrote back and said verbatim, “I honestly wouldn’t have written you back, because the code you sent over is terrible. But my team liked some other things about your resume so I want to give you a second chance to impress me. Can you send over some different code?”
I sent over some different code, it was a 5 line code change that halved the average response time of an API. But I also said you know, I’m not interested in auditioning for you. Either we’re a good match or we’re not, but I’m not particularly interested in being “grateful for the opportunity to apply”, frankly I think you should be grateful that I took a few hours out of my day to explore whether we want to build something together…
And he wrote back and said basically oh I’m sorry, I thought I was clear, I have 50 resumes on my desk from the best CS schools in the country, you went to a boot camp, you /are/ lucky if I decide to interview you. And I was like, no thanks! Can you imagine for working for that guy if that’s how he treats candidates? And I told him straight up that he tripped all my red flags and I wouldn’t come near a manager that thought I should be grateful to have an opportunity to impress him. Gotta use that hiring privilege to at least tell jerks they are jerks. May not land the first time, but maybe after 25 or 30.
#7) You don’t know what happens behind the scenes. Another one of the wire-to-wire interviews went all the way to reference checks. I loved most people I talked to and they seemed to love me. I had inklings of a verbal offer. It was a non-profit using tech to improve health equity. I was slow-rolled for a few weeks. Got the one line rejection from HR. Got no feedback despite asking and a promise they would give some. About 6 months later I was able to go through backchannels and find out that my hire was over-ridden by a bean counter who demanded that they hire a non US based coder so they could pay less and not pay health care costs. (I get the irony, Silicon Valley is one giant dumpster fire sometimes, and mission driven orgs can be even more so). Also found out that their engineers were overworked, regularly berated for going over time estimates, and the codebase was basically unworkable because of technical debt. I cried over not getting that job because it seemed so good on paper and I loved the people I talked to and it seemed like a sure fit! Founder interview after reference checks, we are in the “already a done deal” stage, right? Nope…and boy did I dodge a bullet!
#8) Last one — always trust your intuition and get in there and really talk to people. That interview process in #7. HUGE red flags in the technical interviews (despite great culture interviews with many other people on the team. I ignored them cause other things sounded great) The job I took — on paper not nec a match for me and glassdoor reviews were also not encouraging to me. But every time I talked to the engineering manager I was like hmmm, I kinda feel like this is a good fit for me. I’m not sure why yet, but my spidey senses say lots of green flags. Did the whole onsite process and every person I met I was like oh, all signs say go! And I never would have known that from any research I could have done online, just actual in-person conversations. (And maybe I’m wrong or right, we’ll see in 6 months to a year, but it was only intuition that led the way)
Okay #8b I guess) Trust that there’s a mutual match out there. Everyone says it’s like dating, and it’s true. And if you are currently unemployed, I get that it’s way harder, cause it’s like yeah, great, but I need to eat. And even in a field with so much hiring privilege as being a good programmer with many years of experience, it can be hard to trust that. It’s all a shitshow of putting on your best face and information assymetry and weird rejection and the truth that even as a coder, you don’t really have any power in the hiring process itself so it makes plain what the power differential is between “employer” and “employee”. BUT, honestly, when I decided to take a position, the people hiring me were /clearly/ just as exicted to hire me as I was for the opportunity to go work for them. Both sides should feel lucky and excited about the match, shouldn’t be a big differential there.
Look, human life is short. For better or worse, we spend a lot of it working. Many of us don’t have the privilege, quite, to dictate the terms of that. But some of us have more than others. So if you have some, don’t settle. Go find kind and intelligent and empathic people that are humans first and employees second that you want to build something with. Be happy that you all have pieces of the puzzle to try to build it and don’t settle for less than someone being excited about what you are bringing to the table!