Tag Archives: interviewing

2023 Year in Review: interviewing for jobs with a baby on the way

Our daughter set the pace for the entire year. Even before her birth! We needed to prepare for her arrival. It turns out that babies don’t take up much space, so our 1-bedroom apartment was fine for the year. But kids require lots of support items, so we needed to buy and install storage. This consumed much of my free time from January until her birth in May.

We bought a ton of furniture from Ikea, assembled the furniture over the course of a few weeks, got a bunch of freebies from “buy nothing” groups on Facebook, got some more donations from my sister-in-law, did a deep cleaning, read books, and I’m sure a ton of other things that I’m forgetting.

The actual birth went smoothly. We had already been a few days prior: my wife had contractions so we went to the hospital. They told us that she was having contractions but she wasn’t ready yet.

The day before the birth, my wife experienced discomfort and pain all day. She insisted up and down that she was not having contractions. Finally around 11pm, she was in pretty constant pain. I set up a Google Form with a single button, “I’m feeling it now,” and I had her click it whenever she felt the sensation. I looked through a few rows of the spreadsheet and saw that she was having contractions every 3-5 minutes and we called a car to take us to the hospital.

Birth went smoothly. Doctors were great. I’m embarrassed to admit that when I saw her little head for the first time, I thought to myself “Holy shit! There’s a PERSON in there.” Obviously I knew that! I saw all the scans. I saw my wife’s belly. But the reality of seeing a new human being screaming and crying on your wife’s chest in bewilderment really drives the point home.

And then they plopped her on my wife’s chest and the baby started screaming. I remember reaching my hand down and resting my hand against her little back to comfort her. She was so upset from the birth. I knew so little about her experience that I didn’t know what would help.

The beginning was a struggle. Feeding was a struggle, swaddling was a struggle. The sleep deprivation was abominable. She’d sleep soundly all day and then scream for 6 hours in a row. But it was my daughter, so I just loved her and rolled with it.

Recovery care is absolutely baffling to me. They encourage you to get as much sleep as possible. But your baby wants to be fed every 1 to 3 hours around the clock. She doesn’t know what day and night are. You also haven’t worked out feeding yet with your baby, so she’s angry and screaming around the clock because she’s hungry. So your sleep is already ruined. On top of that, a nonstop parade of nurses and doctors come into your room with no coordination, robbing you of what little sleep you might otherwise get. I’ve had problems with insomnia my whole life. I’m an extremely light sleeper and I have trouble getting back to sleep when I’m awoken. However I literally fell asleep in the middle of a conversation with a nurse.

At one point, I wanted my wife to get 3 consecutive hours of sleep for the first time in 3 days, so I coordinated with the nurses to put our child in the nursey for the first time and don’t send anyone into the room. Then I went for a walk and thought to myself, “I’ll just get coffee at the first place that I see.” And then I walked past a Blank Coffee and thought to myself, “I’ll just get coffee at the second place that I see.”

I do want to credit the nursing staff with showing us the fundamentals of taking care of a baby. Their tips on feeding were helpful, and walking through swaddling and dealing with diapers with nurses was really helpful. I just wish they either (a) cared whether you got sleep, or (b) stop suggesting that rest was important. Telling us that we should sleep and then preventing us from sleeping was infuriating.

My wife’s mother stayed at an AirBNB for over a month to help us, and her help was crucial. She arrived fresh between 6am and 7am and held the baby, which allowed us to get an extra hour or two of sleep a day that we otherwise would not have. This made a huge difference in our morale and effectiveness. Having healthy home-cooked meals every day was a tremendous help. My wife and I each got 2ish nights in the AirBNB so that we could try to catch up on sleep (but our sleep schedule was so obliterated by that point that we still didn’t sleep that well).

I took 6 weeks off in the beginning. I’m using the remainder of my parental leave now. I’m so grateful that I have the time to appropriately bond with my child. It’s wild that our laws don’t ensure some minimum time of parental leave. 6 weeks barely felt like enough, I can’t imagine the women that have to return after a few days (or even a few weeks) still healing from literal physical trauma of birth or c-section delivery.

And I love my child so much. She’s so smiley and loves babbling with me and my wife. Her laugh heals me. Seeing her develop small new skills and capabilities makes me so proud of her. Sure there are bad parts. She cries sometimes, she gets sick sometimes, she sleeps badly sometimes, she’s destructive sometimes. But she calms down, gets better, learns how to sleep again, and things are just things. She’s wonderful. I’m truly in a new phase of life.

Learning how to interview and finding a new job

When I found out my wife was pregnant last year, I was at the end of a 2 year period of working for myself. I was having fun and the business had some income, but even without the baby I probably would have cut it off at that point. It was a no-brainer with the kid: I needed to find a real job again.

So at the end of the year I hit Leetcode, polished my interview skills, updated my resume, started applying for jobs, and found WOW THIS IS A REALLY BAD TIME TO APPLY FOR JOBS! It was at the same time that all of the FAANG companies were laying people off. So every company was flooded with more high-quality leads than they’ve had for a while. Or maybe ever had!

I also discovered that if you tell a recruiter that you have a child on the way, they don’t reply to your emails anymore. I wanted to be up-front about this, but quickly learned that I needed to wait until I had an offer letter in hand before mentioning it for the first time.

I still managed to get some interviews, and bombed a few interviews before I realized that my interview skills were out of date.

For a very long time, many companies copied how Google interviewed. Google likes hiring generalists (and when they say “generalist” they mean “people who know the specific skills that are taught in a 4 year undergrad computer science program”), so they set algorithmic coding challenges that you can complete in any language. I mainlined coding challenges when I was in college and got pretty good at them. Plus, I worked at Google for 4 years, and asked hundreds of interview questions in this style. So I’ve always interviewed on the assumption that the coding challenges were enough. This served me well from 2007 until 2016, when was the last time I had interviewed.

I was dismayed to discover that smaller companies in 2023 hire specialists! Maybe many did before this too. But most of the small companies I interviewed at before 2016 did the Google-style interview questions. They don’t want you to ramp up on their tech stack as a strong generalist. They want you to know their stack and hit the ground running as an expert. This is probably what they should have been doing all along (and again, I’m sure many companies did this all along). But I never ran into it, even interviewing for startups previously.

I had a few failed interviews. One was for a tech reason: I interviewed for an editor startup and did well on their generalist problems, but bombed the React coding exercise. I’ve never worked professionally with React in any meaningful way. Google Docs’ stack predates React and they wouldn’t have used it anyway, and Etsy forbade React on their buyer frontend until around 2020 because of the performance hit. I made some progress on the problem but didn’t get far enough, and they wanted their tech lead to come in as a React frontend expert. Fair enough!

I interviewed with Notion, and the guy asked me to design the database schema for a calendar app. Historically, I design database schemas using my patented 3 step process: first, I draw a few schemas that feel wrong. Then, I put the work aside for a bit and help teammates or go for a walk or go to lunch. Then, I come back to the problem a few hours later or the next day and discover that my subconscious made some progress on the problem. Maybe I need to iterate again but I’m much closer than I was a few hours ago.

This is an insanely bad approach for an interview, where you need to bang out a plausible schema within 45 minutes. Usually it took me at least 4 hours, sometimes over a day! I had some additional communication problems with this guy; to shortcut the discovery I asked if the app was like Google Calendar. I then probably burned 10 minutes of the interview designing with Google Calendar in mind only for the guy to keep telling me, “no, it’s simpler than that” until by the end of the interview I was ready to scream, “why didn’t you just say <<no, it’s not like Google Calendar, you’re basically designing a digital wall calendar with shareable meetings>>?” But I wouldn’t have gotten a good database design by the end of that interview anyways, so it’s not like the time made the difference.

After these 2 interviews, I regrouped and realized that I would need to pick the set of skills I wanted to work with and double down on them. I focused on polishing my interview skills for different types of technologies: pub/sub frameworks, different database technologies and their common design techniques and their tradeoffs, microservices vs monoliths, etc. For the previous few years I had mostly worked with Golang and cloud-managed Kubernetes, and was very API-heavy. So I looked for roles that satisfied that. When I got an interview with Hinge, I had no problem clearing their bar because I knew their stack and could talk comfortably about all layers of it.

Working for Hinge has been pretty great. It’s a growing company under Match Group, which is a little weird sometimes (I’m not always sure what to respond when I talk to vendors or insurers and they ask, “what company do you work for?” because the correct answer can be either). But my immediate team is full of sharp hard-working people. Our manager is really thoughtful about constructing good meetings, and he has warmed even my Grinch-like “we don’t need any meetings” heart. And they seem happy with my work; I’m going to be a tech lead next year even though I spent a good chunk of this year on parental leave.

And no time for anything else

Work and family take up almost all my time now! Sometimes I find some time to play video games, but not as much as I would like. I’m often too tired to read at the end of the day. My wife and I took like a 4 month break from watching any TV series together because the logistics and timing were just too complicated.

Part of that is the complications of living in a 1 bedroom apartment. Whenever the baby sleeps, we basically need to stop moving and be quiet. I bought it 7 years ago, so moving isn’t as easy as just renting a new place. Our building is getting heat pumps installed soon (“probably by November,” we were promised last year), and whenever that project is finished we will sell this place and buy a larger place. We thought about moving earlier, but babies don’t make a lot of space and I didn’t want to sell with a large construction project looming. Plus so few things are on the market right now because of interest rates. So this year, we will be going through the hell of selling this apartment, buying a new apartment, and moving into a larger space.

And that’s about all! For 2024 obviously parenting will continue to be my primary project. I want to shake off this dad bod that I’ve accumulated, and we will be moving into a larger space.

Seven steps to writing a better software engineering resume

Over the past few years, I’ve reviewed lots of resumes for friends and former coworkers. I’ve also reviewed resumes from strangers, like on Twitter, where I offered to do resume reviews. I’ve been told that my reviews are helpful, so I’m documenting my approach, which focuses on whether the resume is a good fit for the job that the candidate wants.

Software engineers can have their resume reviewed for free in a number of ways, such as by consulting Reddit, Discord and other forums, or by asking friends. From my observation, most online reviewers begin with the assumption that the candidate has provided all the necessary information. They then suggest tactics for strengthening that information. For example, they help candidates to rewrite each bullet point to fit frameworks like “Situation, Task, Action, Outcome.” They fix formatting, suggest rewrites, and highlight formatting inconsistencies. They’re really good at focusing on the tactics of writing a resume.

Peggy's Cove lighthouse in Nova Scotia

Tactics are fine. Everything I mentioned in the previous paragraph is important. But tactics are best supplemented with a good strategy. How do you know that your resume has the right information? You could describe work experience in an infinite number of ways. Demonstrate how your existing work experience makes you a good candidate for the job that you want.

Many reviewers ask, “How can you present this information in the best way possible?” I also ask, “How do you know that you included the right information?”

That might sound obvious, but it’s difficult to apply in practice. I know this from my own experience. When I review resumes, I ask candidates for the resume and job postings that interest them. In a vast majority of reviews, I demonstrate how candidates can include extra experience to more effectively show that they meet the criteria mentioned in the job description.

Discord message that says, "My first piece of feedback is that the first 3 paragraphs of that job posting talk about working with teams, and your resume does not hint, in the least, that you've ever worked with another person on a team"
Part of a “please tear my resume to shreds” review that I did for a friend

Resumes suck, but most jobs require one. Maximize the impact of your resume. Incorporate information from job postings, job descriptions, and any other relevant information, and use it all to produce a targeted resume.

A quick note: this is written for software engineers with previous work experience who want a new job in the field. If that doesn’t describe you, you might still find this useful but you should think about what’s different for your situation.

Here’s how I’d write my own resume if I had to write one today

The TL;DR of my strategy is to iterate from a generic resume to a specific one. Start with a baseline resume that reflects your experience to the best of your ability but is not tailored to a specific job. Then, find information about the jobs that you want. Take notes from the job postings. Rewrite your resume using the information in those notes.

And now, in more detail:

Step 1: Write a resume the way you normally would

Create a resume however you want. Modify an old resume or create a new one. I don’t care which. Don’t overthink it.

Personally, I modify my old resumes. They’re always written in LaTeX because when I was in college, I hoped that I would get street cred by ignoring decades of word processor innovations. I don’t know if this worked, but I’m too lazy to change my approach at this point. If I had to make a resume today, I’d dust off this file and modify it to reflect my most recent experience and remove irrelevant information. Then I’d relearn how to run LaTeX in The Year of Our Lord 2021.

Anyways, include all of the usual sections in your resume: name, contact information, experience, any relevant schooling, maybe relevant/interesting projects, maybe publication experience if you’re a researcher, maybe other things like security clearance if you have it and it’s relevant.

Your resume should resemble other resumes in your field. If resumes in your field tend to be compact, then your resume should be compact.

Spell check and proofread it. Be prepared to have a conversation about every fact on your resume. Just like you shouldn’t build a house on an unstable foundation, you shouldn’t mention something on your resume if you can’t back it up.

Step 2: Collect three or four relevant job postings that intrigue you

Find job postings that appeal to you. If you want to work for a specific company, find the available listings in the “Jobs” or “Careers” section of its website. Otherwise, look for companies offering the role you want.

It’s OK if you don’t know what job you want yet. Look for listings that appeal to you. Spend some time researching different companies and fields until you have identified a few job postings that stand out to you.

It’s important to collect more than one job posting. If you’re starting with a job posting from a specific company that you’re interested in working for, supplement it with similar postings from that company, or other postings from similar companies. Why? You don’t want to assume that any single job posting is complete. You will be mining these postings for data, and a single posting might omit something relevant to the job. But the more postings that you examine, the less likely that an important qualification will go unmentioned in any of them.

Step 3: Create a spreadsheet and aggregate data from the job postings

Make a table in a spreadsheet with 3-5 columns. The columns should represent different, and mostly non-overlapping, competency areas. Then, read through the job postings sentence-by-sentence, and add information from the job postings to these columns.

I typically create categories like these:

TECHNICAL SKILLS: Any hard skills that are explicitly named. Programming languages, operating systems, third-party libraries, applications, etc. “Experience with Python in Unix operating systems a plus” or keyword soup kind of things.

DELIVERY: Anything related to execution. The types of projects that you’ve designed, implemented, or delivered. Whether you’re going to be on a pager rotation. The size and scope of the tasks that you’re expected to complete. The types of financial, product, or technical outcomes that you’re expected to achieve (or have already achieved).

LEADERSHIP: This can take a lot of different forms. Information in this category might call out specific leadership roles, like tech lead, project lead, or management. They may want you to be proactive about suggesting product or process improvements. They may want you to mentor more junior engineers. If you haven’t been in the industry for long, it’s okay to skip this category, or merge it with COMMUNICATION.

COMMUNICATION: Anything related to interacting with other people. There are a wide range of skills that could fit here. It could be project management practices, how you work day-to-day with teams, expected response times for answering support tickets, ability to be a point-person for your team or for external stakeholders.

Tailor these categories to your specific field. If you are applying for research jobs, then you’ll probably have a RESEARCH category. The category names don’t matter too much. You only need a few that capture different concepts.

Now that you’ve made the categories, the actual work begins. Read through every sentence of each job posting and incorporate each piece of information from the sentence into at least one of the categories. If you encounter a line like “Experience with Go a plus,” then put “Go” under TECHNICAL SKILLS. You don’t need to record duplicate information. If two job postings mention Go, put it once. If two job postings mention working as a tech lead, put it once. Make sure that the information in each sentence is captured in your spreadsheet.

This can be time-consuming. It takes a while to process all of the sentences in the job postings. Thankfully, processing each subsequent posting will take less time once the first posting is finished. Job postings will have duplicate information. You only need to record the differences.

If something doesn’t fit into one of the categories, try to include it somewhere, even if you need a MISCELLANEOUS category. You don’t want blind spots in your resume. For example, senior+ engineers often overemphasize their technical skills and project experience, and underemphasize their soft skills.

Step 4: Modify your resume to address as many of the relevant competencies as possible

Look at each item that you recorded in the previous step. Look through your resume and ask yourself, “Does my resume address this? If not, can I add a new bullet point, or can I add relevant information to an existing bullet point?”

At this point, your resume might get longer as you add information to address criteria from the previous step. If this makes your resume longer, then rewrite the bullet points for brevity. Avoid making your resume significantly longer than when you started.

It’s okay if you don’t address every item in the categories that you produced. Again, you should feel confident in every item on your resume. Don’t add something if you can’t talk about it for 10 minutes in an interview. If a job asks for PHP experience and you’ve only written 50 lines of PHP in your life, leave it off your resume.

Step 5: Make the hiring manager want to hire you

People will look at each line of your resume and say, “So what?” To counter this, make sure that you explain the impact of your experience.

Think about the people making the hiring decision. This will differ per company. At a megacorp, the people hiring you might be a collective of managers or senior (or above) engineers. If you’re applying to work for medium-sized companies, the hiring manager will probably be in your management chain; either your manager or a boss of theirs. At a small startup, the founders might hire you themselves.

Make people want to work with you. The people at the megacorp want to prove that they consistently hire high performers. Your manager wants to know that you can function effectively in a team environment. A startup founder wants to know that you can ship.

Explaining your impact allows them to imagine how you would function on their team. Let’s look at an example that I made up:

A bullet point without impact: “Tech lead for a 3 developer team. Worked with design and product to implement customer-facing features in addition to tech lead duties.”

A bullet point with impact: “Tech lead for a 3 developer team. Worked with design and product to implement customer-facing features in addition to tech lead duties. Increased revenue $n million while maintaining a low defect rate.”

When you refer to a responsibility without describing the impact that you had, you’re just claiming that you did something. The impact helps you argue that you did it well. An engineer will think, “It sounds like they can ship code, and I can talk to them about why they had a low error rate.” A manager will think, “OK, they can function on a team.” A director will think, “OK, they help produce business results.” A founder will think, “OK, they get code out the door that gets results.” Either way, you’re telling them that you’re going to make them look good. “One additional strong developer! A team player! More money!”

Step 6 [optional]: Find a relevant career ladder

Find a career ladder that describes the job that you want. Then, look through your resume and see if you would hire yourself for the level that you want. If there are gaps, could you add any relevant experience to your resume to help fill these gaps?

This is optional, because it’s uncommon for career ladders to be published. But there are a few. For example, Etsy open sourced their career ladder. If you find a career ladder that covers your desired job, look at your resume through the lens of this ladder. Is your resume missing anything?

I understand that these ladders are mostly used for internal promotions, but hiring managers sometimes look at resumes and ask themselves questions like, “If this person were working for me, would I promote them to the job they’re interviewing for?” Don’t worry if you can’t find something. But if you can, use it.

Step 7: Proofread, spellcheck, and get feedback from real people

People reject resumes for the dumbest reasons you can imagine. There’s the apocryphal story/joke of the hiring manager who shuffled resumes, grabbed a handful, and threw them out, “because I don’t want to hire anyone that’s unlucky.” This is only untrue in the sense that these exact circumstances didn’t happen, but it’s depressingly easy to find forums where people say they would never hire someone, based on their resume, with arbitrary criteria that have literally nothing to do with job performance.

Strive to eliminate as many mistakes from your resume as possible. If you do literally nothing else, please run a spell check. Copy/paste your resume into Google Docs if your text editor doesn’t have a built-in spell checker. Spelling mistakes are easily avoidable, so you don’t have any excuse for allowing them to slip through. Don’t make someone second-guess you because you wrote your resume in Visual Studio Code without spell check.

Read your resume out loud. Ask people to review it. Look for inconsistencies, for example in the use of periods at the end of bulleted sentences, and in the formatting of dates.

Ask people to give you feedback; the more, the better.

Even if you disagree with your reviewers, ask yourself whether you could restate something to make it clearer, or improve your resume such that they wouldn’t have needed to give you feedback. If a reviewer raises an issue, then someone reading your resume at a company might think the same thing.

So, there you have it!

You can produce a resume that is tailored to the job that you want. Incorporate information from job postings and career ladders, explain your impact, and correct mistakes. It’s not difficult, but it requires some grinding. But it’s worth the time investment. It won’t magically get you a job, but it brings you closer to getting a hiring manager to consider your application and think, “We need someone like this.” You’ll be more likely to get to the next step.