I feel like I need to maintain two skill sets nowdays. We drill down hard on DS&A in the interview then once you’re hired it’s like “alright forget about all that we actually need you to be good at something completely unrelated”
- For someone fresh out of college: Don't change anything, the current process is perfectly designed for college grads. So Leetcode it is and whatever the google's, facebook's, etc, are currently using to hire "the best of the bests".
- For someone with 2 to 5 years of experience: A candidate should have a choice between a full day onsite, working with the hiring team on a mini feature or a bug fix. Or, a 1 week project assignment with a shared/public repo between the hiring team and the candidate. In this case the candidate could work remotely on the evenings/weekend. Code should be reviewed and pushed into the repo at the end of the assignment period. Collaboration along the way is highly recommended for the candidate. The hiring team should be at least available to answer the candidate during the process. The onsite would include a lunch with the team to get to know each other. If the candidate chose the 1 week assignment, he or she would have to stop by for the last step if everything went well, which would also be a lunch with the team to get to know each other.
- For someone with 5 to 10 years of experience: Same as 2 to 5 years of experience, but would involve more technical choices from the candidate. This could also be a feature or a product optimization task, etc. Requirements have to be very high level and the candidate has to make design choices and define a scope as well as delivering a working prototype. If the candidate is closer to 10 years of experience, he or she should assign a coding task to at least one member of the hiring team and make sure to help and review the work. This process could also work for +10 years of experience as a Dev, or even a "Tech Lead".
- For an engineering manager: No Leetcode please! Stop now! :) The candidate should take over the current sprint from the hiring team, or part of it. This could also be a sprint exclusively designed for the interview process. Stories could be made up or could be real stories from the team backlog. This could be a 1 week project assignment. As a Hiring manager you should be able to keep track of stories and to host standup meetings remotely with the team (5-10 min conference calls all week for example). The team would simulate blocking issues and conflicts between peers and the descriptions of these problems would be sent to the candidate for review. You would have to show up onsite and host 1-1's with the related folks in order to go over these problems to try to fix them. This would also include a team meeting to share the status of the project with everyone. During this day onsite, they might also simulate a mini hiring process for a new Developer. Team members would be the actual candidates and you would be the interviewer (a quick 15 min interview for each candidate). Other hiring managers would be involved in this process as well where you would discuss about the candidates and make a final decision.
That's it. As you can tell, this would require companies to do a lot the work in order to set that up. Unfortunately, not enough energy is allocated to hiring new people. Companies rely on the existing and broken process started by Google in the late 90's... this was the only company asking academic and weird puzzles to candidates. Also, I cut a lot of corners because my post is already way too long, but you get the picture...
A few leetcode style whiteboarding interviews combined with some system design ones combined with meeting the team and having a casual conversation after the first part of thorough technical stuff.
4 comments
[ 20.0 ms ] story [ 53.4 ms ] threadI feel like I need to maintain two skill sets nowdays. We drill down hard on DS&A in the interview then once you’re hired it’s like “alright forget about all that we actually need you to be good at something completely unrelated”
- For someone with 2 to 5 years of experience: A candidate should have a choice between a full day onsite, working with the hiring team on a mini feature or a bug fix. Or, a 1 week project assignment with a shared/public repo between the hiring team and the candidate. In this case the candidate could work remotely on the evenings/weekend. Code should be reviewed and pushed into the repo at the end of the assignment period. Collaboration along the way is highly recommended for the candidate. The hiring team should be at least available to answer the candidate during the process. The onsite would include a lunch with the team to get to know each other. If the candidate chose the 1 week assignment, he or she would have to stop by for the last step if everything went well, which would also be a lunch with the team to get to know each other.
- For someone with 5 to 10 years of experience: Same as 2 to 5 years of experience, but would involve more technical choices from the candidate. This could also be a feature or a product optimization task, etc. Requirements have to be very high level and the candidate has to make design choices and define a scope as well as delivering a working prototype. If the candidate is closer to 10 years of experience, he or she should assign a coding task to at least one member of the hiring team and make sure to help and review the work. This process could also work for +10 years of experience as a Dev, or even a "Tech Lead".
- For an engineering manager: No Leetcode please! Stop now! :) The candidate should take over the current sprint from the hiring team, or part of it. This could also be a sprint exclusively designed for the interview process. Stories could be made up or could be real stories from the team backlog. This could be a 1 week project assignment. As a Hiring manager you should be able to keep track of stories and to host standup meetings remotely with the team (5-10 min conference calls all week for example). The team would simulate blocking issues and conflicts between peers and the descriptions of these problems would be sent to the candidate for review. You would have to show up onsite and host 1-1's with the related folks in order to go over these problems to try to fix them. This would also include a team meeting to share the status of the project with everyone. During this day onsite, they might also simulate a mini hiring process for a new Developer. Team members would be the actual candidates and you would be the interviewer (a quick 15 min interview for each candidate). Other hiring managers would be involved in this process as well where you would discuss about the candidates and make a final decision.
That's it. As you can tell, this would require companies to do a lot the work in order to set that up. Unfortunately, not enough energy is allocated to hiring new people. Companies rely on the existing and broken process started by Google in the late 90's... this was the only company asking academic and weird puzzles to candidates. Also, I cut a lot of corners because my post is already way too long, but you get the picture...