1. Recruiter screen
2. Take-home assessment through a GitHub private repo + PR submission.
3. Onsite rounds: one pair-programming session, one code review session + some system design questions around the code under review, two separate behavioral interviews with EMs.
Leveling is reached along the process.
Overall, the process itself seems good. I was really excited with that. The take-home assessment seemed really practical and was fun to do (even though it can easily take more than the suggested 2 hours). I also liked the structure of mixing take-home test, with a pair-programming session, and a code review one.
The behaviorals with the EMs are pretty standard.
The real problems were the following:
1. The live pair-programming session was really badly set up on their side. The recruiter gave wrong instructions on how to set up the enviroment. The interviewer told me they had dropped Docker and are running differently now. So, guess what, I spend most of the interview time just setting up the environment and trying out different things with the interviewer on the call until the "plan B" was finally ready. I was already distracted by all that and didn't perform well. Actually, the plan B environment didn't allow me to properly test my code (since it was relying on a public and unstable endpoint).
2. The code review session was in Ruby/Rails even though I answered their question multiple times on my language preferences. The PR under review didn't have any context at all, so basically I had only 10 minutes to read through the PR code in Ruby on Rails, guess all the context, and make code review comments, all on top of a language and opinionated framework I never programmed with (and no, the position was not a specific a Ruby position). So, obviously I did not perform well.
3. And finally, the recruiter sends me this "Thank you for speaking with *INTERVIEWER NAME(S)* about GitHub’s..."
All in all, very unprofessional and sloppy process from GitHub.