The hiring process consisted of five steps.
1) A short online application form which asks for your details as well as two short and simple technical essay questions.
2) A thirty-minute chat with a member of the GitLab HR team so that I could better understand the company and role and GitLab could get more information on my background.
3) A 90-minute technical interview. A few days before the interview I was asked to review a merge request written in Ruby for a project on GitLab, and then the interview it's self revolved around my comments on the MR. The first half of the interview we worked through my comments, discussing each one and expanding on my solutions or any other possible solutions. The conversation didn't feel like an interview but more like a technical chat with a colleague to find workable solutions to the problems we were faced with. The second part of the technical interview was live coding. I was asked to implement the changes I had suggested in the first part.
4) This stage was a 45-minute STAR interview with the manager of the team I hoped to join. I was asked a number of questions including, "Give an example of a time you disagreed with a colleague and how you resolved it", and "Tell me about a project you're proud of". The conversation was casual and it was fun to give more detail on my background than in the HR interview.
5) The final interview was with the director of the department I hoped to join at GitLab. The interview itself was similar to the fourth interview in that during the first half we covered a few more STAR questions. This time the questions were focused on my values as a software engineer, for example, I was asked: "How would you describe MVP and why is it important?". In the second part of the interview, the interviewer took the time to answer any questions I had about the company or the role. Having researched GitLab in great detail and being a user of the product I had lots of questions prepared and all of them were answered with open and honest answers.