First, I want to say that I walked into this interview *very* intimidated! I was told TW has one of the hardest interview processes in North America, and I am by no means a programming whiz. I think what got me though the process was my interest in writing quality, maintainable code (again, not to say that I'm an expert in it, but good enough to have a sense of where my code looked wrong), and my moral compass being aligned with theirs.
- Applied online, received an email a few days later asking me to complete one of three little programming assignments, and a questionnaire asking a bunch of 'random' questions (non-technical). The programming assignments aren't hard, but I think showing knowledge of OOP concepts and having rigorous testing is important.
Just a note, for me, after submitting the above assignments, I waited about a month before the next step. I sent a follow-up email 2 weeks in, and they responded to it, but yeah, it took a while for the next step, so I wouldn't worry too much if it takes a long time for you, too!
- The next step was a phone screen (non-technical). Pretty standard behavioural questions, as well as questions about social issues (ThoughtWorks cares about this things, it's important to have opinions on these issues that are aligned with ThoughtWorks').
After that was an in-person interview. This process took two days.
Day 1 (besides the logic tests, everything here was done in a group with 5 other interviewees):
- General info about ThoughtWorks
- Logic test (answer 50 questions in 13 minutes, I got around 39 questions before I ran out of time and started putting random numbers for the rest)
- Logic test #2 (13 flow chart questions, these questions made me feel like I was debugging a C-array, I think I got all of these correct)
- We were asked to prepare a little speech about a topic, then revise it based on a video they showed us.
- Finally, we were split into groups of 3 and asked to design a house for 'pugs.' The requirements were split amongst us, and we were supposed to communicate the important requirements as they came up. My group BOMBED this one as we didn't communicate an extremely important requirement properly and ended up with a non-functional design. That being said, we were able to communicate to the interviewers what our flaw was and how that impacted our design, and how we would fix it.
Day 2 (2 different ThoughtWorkers interviewed me for each stage)
- Pair-programming! (1.5hrs). I explained my programming assignment, and as I explained, talked about some of the design flaws that I noticed and how I'd change them. They showed me some TDD concepts and helped me refactor some of the code.
- Technical interview (1 hr). Prepared a 5 min presentation on a STEM topic of my choice. Got asked about some OOP concepts, design patterns, and was given a simple tic tac toe problem to solve.
- Values interview (1 hr). Very similar to the phone screen. Standard behavioural questions, and then questions about social issues and my opinions on them. This interview was the most intimidating for me, the only one where I felt like I was being "grilled"