Interviews
Some interesting job boards I have come across over the years:
- Code for America
- Tech Jobs for Good
- All Tech is Human - Responsible Tech Job Board
- More than code
- NumFocus Jobs
- Jobs for new Data Scientists
- NoWhiteboard.org
- Climate Tech List
- Key Values
- Breakout List
Sadly, plenty of tech companies still rely on obscure coding puzzles in interviews. These puzzles are perhaps fun to solve in your free time, but I have yet to hear of anyone whose job actually resembles such tasks. This makes it more likely to get people hired that are not actually suited for the tasks the position really requires, and more people who are actually suited for the position do not get hired because they just so happened not to solve the puzzle as well. Having done many such puzzles myself (via interview prep and actual interviews) there is always some luck involved. You might get a puzzle you have solved before. That is why I would always recommend scheduling several interviews. While there is a decent chance you will get some tricky question in every interview loop, with enough interviews you will increase your chances of having an entire loop with mostly favorable questions, too.
What to do about this? Well, you basically have three options:
- Study on your own using one of the many books or online interview training services.
- Leetcode
- Cracking the Coding Interview by Gayle Laakmann McDowell, and the corresponding Python solutions to Cracking the Coding Interview
- De-Coding the Technical Interview Process by Emma Bostian
- Collection of interview questions broken down into many categories - keep in mind most of these are not the kind you would actually be asked in an interview. It is typically more "here is a problem, please solve it" and less "look at this contrived example program, what is the output?"
- Vanquish whiteboard interview puzzles with test-driven development by Itamar Turner-Trauring
- This thread by Jaana Dogan
- Orr Sella's Software Engineering Interview Preparation
- Take the help of a service like interviewing.io, or ask your friends to interview you (assuming you have friends with corresponding experience who you feel comfortable asking)!
- Avoid coding puzzle interviews altogether. This means ruling out a lot of companies, perhaps some you definitely had on your list (including most big tech companies). To find such companies you can consult one of the following websites:
Of course, these puzzles are not the only thing being asked in a technical interview. The other main category of questions is about system design, particularly for any roles that are more senior than entry-level, and also particularly for the interviews where they don't ask about puzzles. These questions can be quite hard, too, but they are often open-ended and allow for a lot more creativity. Additionally, this is a lot closer to actual engineering tasks and most people agree that it is highly relevant for the job. Luckily, there are many resources to prep for this type of question, too:
- System Design Primer
- Acing AI is specific for ML-focused roles
Finally, you should certainly be interviewing the company as well! One of the most important things to check is whether they are aligned with your values. This guide written by Varoon Mathur and Meredith Whittaker is a great example. The questions may vary depending on your own values and priorities, of course.