I knew a senior consultant at ThoughtWorks offering to submit a referral on my behalf. After sending him my resume, I received an email from the recruiter to complete a coding assessment to be completed in Java as well as a 16 part questionnaire.
The questionnaire consisted of questions such as "How did you hear about TW?", etc. I would recommend reviewing your response to those questions and possibly running them by someone else for grammar and syntax. I decided to do the Sales Tax problem, which gives you a basket of items and prices expecting you to parse a data structure of your choice for prices and item names to output sales tax, total, etc.
After submitting these two assignments, I had a 1 hour phone interview with my recruiter. The interview was behavioral in focus. We spoke about past experiences, projects, how I felt about pair programming, salary expectations (they do not negotiate) as well as to describe 2 oppressed in the United States as well as why I would call them oppressed. Toward the end of the call, the recruiter passed me feedback on my coding assessment. My feedback was pretty positive and is listed below:
The good
ReadMe is a plus (documentation is always appreciated even if not looked at)
Solution completed and runs (obvious why this is good. I also allowed the the user to test different things through the terminal line)
Good job structuring solution to OO solutions (created two classes Items & Basket to work together for output)
Good use of public and private variables (Displayed a good grasp on encapsulation)
Areas of Improvement
Incorporate JUnit tests
Long Main Class with long try catches (I had to read files to get the basket information. The try catch was what to do in the instance the user input the wrong file name)
I could tell based on my feedback that I would move forward.
They got back to me at the end of the week to schedule a 2 day in-person interview in Chicago (even though I was interviewing for the SF office). They also asked me to complete a Predictive Index test before I came to this interview.
The first day of the interview in Chicago, we just did a Wonderlic test as well as the logic-flow test. These two tests do not determine your candidacy, rather they are just another data-point to consider your hiring. The Wonderlic is meh. If you do not know the answer right away go on to the next question and revisit the ones you left. You probably will not finish all of them but it's a good thing to get as many right as possible. I found the logic-flow test online and practiced for it a little bit. It's really cool because it tests how you follow directions and includes many programming concepts such as loops and manipulating variables. I would recommend taking your time on both of these and checking your answers if possible.
The next day I had three interviews.
The first was non-technical. They just asked me questions about how I view the world, why software development, where I see myself in 5 years, why ThoughtWorks, etc. They dis a phenomenal job giving me insight into expectations as well the company culture.
Next, was technical and I had two women-identifying developers. They asked me OOD questions. I told them I was unfamiliar with a few of the technical terms but we went on asides where they explained the concepts to me. Next, they asked me questions about ReactJs and then about my role on different projects and why I chose those roles. They asked me about databases since I had that on my resume. Neither of my interviewers had experience with document based databases outside of conferences, so I had the chance to teach them some things. This was a fun interview and I think by being placed in the position to supply so many examples for the concepts and the nature of the interview allowed my personality to shine. Toward the end I asked the two developers two questions: Could they speak about their growth as developers at TW? What are some of the unique challenges they face as women developers?
The last interview was the other technical interview where I refactored my Sales Tax solution with two developers. This was kind of harder because I was not as comfortable with Java. We started coding as soon as I explained the problem to them, then we reworked my classes from top to bottom. They made me defend my many of design choices and then change them! Toward the end we started to work on JUnit tests, however, we did not have time to implement them.
After this interview, my recruiter followed up with me to discuss how the interviews went as well as my timeline. She told me they would get back to me Monday-Tuesday at the latest. On Wednesday I received an email to schedule a time to speak with the recruiter either that day or the next. I thought I was getting rejected based on the neutral tone of the email and decided to schedule my conversation ASAP in order to rip off the band-aid. I ended up receiving an offer on this call.