An Interview with Thoughtworks

Recently I had been in a job search mode, got interviewed by Thoughtworks and Microsoft(when I was in US). I was keen in focusing on the “fundu” companies if you know what I mean. Lots of people know how Microsoft Seattle interview process goes, I would certainly like to belabor on Thoughtworks India process. I would say it was a fascinating experience where I learnt quite a few things like test driven development, pair programming and no cubicle culture. Also it did refreshed my old school problem solving techniques, white boarding etc.

So it all started by receiving an email from an HR person about an opportunity at Thoughtworks. Since I already followed Martin Fowler’s blog I knew quite a bit about them. They set up a informal like conversation with a HR person that week. We discussed a lot about what I do, I want to do, about my blog, projects on my resume. It was really a conversation about me marketing myself and the HR person doing his part for Thoughtworks. It went for about one and half hour which ended with he asking about my salary expectations.

After about 2-3 days I got a call from the same person explaining me the next step. He sent me an email which consisted of 2 problem statements Mars Rover problem and Sales Tax problem. You could certainly find these statements by surfing on the net. Here is a link to the sales tax statement I found http://www.experts-exchange.com/Programming/Languages/Java/Q-23985207-SALES-TAX-Java-problem-solution.html. I chose the Mars Rover problem just thinking it was more interesting to solve. It is important to that this stage really decides many things about your onsite interview. They do not just need a working solution, anyone could write one in less than an hour. What makes a good solution is how well the objects are designed, the naming convention and an overall decent to good OOPS knowledge implementation. I mean how well encapsulated your objects are, do you program too much to the implementation rather than to an interface, is your solution extensible because in an onsite interview you would be asked to extend this solution with a more complex requirement. I would suggest you to get a design patterns book just to improve the object design strategy in your solution, I do not say that design patterns must be used but they do help in achieving good object oriented code most of the times :).

After this, I got a call in 3-4 days for an onsite interview in their Pune office. The office, as I expected after reading few blogs, was different than my earlier offices. No cubicles, just one big room with round tables surrounded by chairs, people working on their laptops, a ping pong table at one side and nice lunch room. It was a really innovative idea to have such an office structure. I reached there a little early and I asked for restroom just to get my bearings! I asked a person working there,whether the restroom had cubicles atleast, thank god he took it lightly. The onsite process was designed as follows –:

- A self assessment test – 50 super easy questions in 12 minutes. These consists question like Miner and Minor, are they 1) same meaning, 2) contradictory, 3) Neither.

- A logic test – 11 flowchart questions in 1 hour 15 min. These problems are like following a flowchart, executing the instruction at each step and writing a final output. You just need utter concentration for this one but its fun.

These tests are by no means show stoppers, I think everyone gets through these unless you are really dumb. So no worries until now.

- Pair programming – Here a well seasoned person for Thoughtworks would pair with you and go about refactoring your code submission. This has to be an interactive session where we have to put our own ideas in improving the design and that person would do his part. Make sure you think about some improvements in your design if possible before getting in this stage. You should not be really adamant on your idea if you have any about solving some issue, pair programming is about good interactive programming. At the same time you should not be too submissive and agree to everything for obvious reasons.

- 1st technical interview – This involves 2 Thoughtworkers interviewing you at the same time. There would be discussion about technical expertise you possess, for me lots of questions on .NET were asked. I had to white board some of them to explain some code. There is OOPS design problem to be solved, here they see your capability of creating a decent high level design on the fly within the time span given. The problem could be something like design a video store library application or something on those lines. I kinda screwed up during this stage, my solution for the problem was not really good as far as I know. White boards do make me uncomfortable sometimes :) This interview lasted for like more than 1 and half hour.

- 2nd technical interview – This is a similar interview like the earlier one. I guess its another chance to see if a candidate can show better performance this time. By the way I left my home in Mumbai at 6 in morning and it was 7 in the evening for this interview. I was fucked up pretty much talking all day but I did experience such a day with Microsoft too. There is nothing really different to talk about this interview since it basically is targeted again on OOPS concepts and some problem solving techniques like creating a XOR gate from AND and OR gate.

So that was my experience and I guess it resonates with any other person who went until the final stage. I think it was a good experience knowing a different culture in the software field. Also to be honest it did help me to improve my coding skills by coding for some fun problem statement and getting it reviewed by a coding ninja, getting their insight on improving the design. So let me know if any of you guys need any more “up close” insight on the interview process.

Best of Luck!

Abhang Rane


50 comments :

Reader's Comments

  1. can you please explain bit more about what kind of enhancement they wanted you to do in pair programming , in Mars rover problem?

    ReplyDelete
  2. Well to be honest my discussion went only on refactoring my code to be more flexible. The extension he had in mind was about what if rover goes out of bounds. My code avoided that in the first place so that extension did not make it much useful for me. So it depends on that interviewer to either focus more on refactoring or leave that half way and go for an extension.

    ReplyDelete
  3. thanks for the reply. its quite informative.

    ReplyDelete
  4. Hi Abhang,
    Can you share that code in C# net?Here the solutions are not free they are charging for that.My id is sulagna12@gmail.com

    Thanks

    ReplyDelete
  5. Hi Sulagna,
    May I know what you mean by "Here the solutions are not free"? If you mean experts exchange then probably if you scroll down to bottom the answers can be seen. But frankly you would not find solution to these problems anywhere. Its in the best interest to try yourself. If you are aware of design patterns, I used State pattern for my Mars Rover problem. I am not a proponent of sharing source code, but I can help you if you are absolutely blank.

    Thanks
    Abhang

    ReplyDelete
  6. Hi, can you please share what types of .net quetions they ask in 1st technical interview ...

    ReplyDelete
  7. Well, the questions range from designing an object model for some scenario on white board and explaining while doing it, Later they move on to the topics on your resume. Since I had mostly .NET, they asked pretty deep questions on core .NET functionalities, I had LINQ on resume so asked about query operators and their working behind the scenes. Iterators, Generics etc. IT went for more than an hour I think. Make sure you know .NET kind of in depth rather than just terms.

    ReplyDelete
  8. I tried to view solution@expert-exchange but couldn't locate it. If you can see it can you please mail it to me on rewa.dev@gmail.com. I know you must be having a tight schedule, but this would be great help for me...
    Thanks Ahead.

    ReplyDelete
  9. Hey Abhang,

    Did u get an offer from them? How long did it take for TW to notify u about the decision?

    thanks,
    mark

    ReplyDelete
  10. Nope I did not. I knew I kind of screwed up in one of the white boarding sessions :). Although the decision is pretty quick I guess,one would be notified within a day or two. (Well, I knew it on the same day :))))Best of Luck to you!

    ReplyDelete
  11. Hi Abhang,

    I am having 1st technical interview in next week. So will you please help me regarding the interview questions. As I am not much aware of .Net, I think they will ask me about Basics of Java. So do you have any idea, which types of questions they can ask?

    ReplyDelete
  12. Hi Abhang,
    I have a techinal interview at thier office next week.What kind of extensions are generally expected to the submitted code.I presently dont work on JAVA, though i have submitted the code in JAVA .My expertise are in BPEL & BPMN .So would i have to face the questions in JAVA in theinterview rounds or in my domain.

    ReplyDelete
  13. hi Abhang,
    Do graduates with an electronics background also have enough chances of making it into this co,with the only programming knowledge being that of C and C++?

    ReplyDelete
  14. I think so. Software is for everyone :). Most of the work at Thoughtworks is on .NET and Java. C++ should be good enough though.

    ReplyDelete
  15. Hi Abhang,

    Its very informative, Thank you :)

    Regards
    Shashank

    ReplyDelete
  16. Hello Abhang , Today i got mail from ThoughtWorks , US for phone interview . I read ur blog and ur explanation was very informative , i am fresh grad student ,would u recommend me anything special preparation and also within how much time u have to solve the coding problem ?

    ReplyDelete
  17. For the offsite coding problem, I guess we have 2 days. So you have lots of time to work on your code and submit them.

    ReplyDelete
  18. Hello Abhang,

    Nice.
    Just got to the code stage.
    Sounds like a grilling and intense experience.
    Close to google grilling.

    Any inputs will help.

    Will be based in Melbourne.

    Cheers!
    Adi.

    ReplyDelete
  19. Aditi,
    Great that you made it :). So you said you cleared the initial Mars Rover/SalesTax problem submission round? If yes, then you will be called onsite where the fun starts you know. I guess my post explains what happens there but overall, make sure you are crisp clear about object oriented design since that is where they chew on for a long time :).

    ReplyDelete
  20. Nice coincidence

    Have a look
    http://nikunjsoni.com/interview-at-thoughtWorks

    ReplyDelete
  21. Hey, one question abt State design pattern u used.

    I'm thinking abt the state design pattern for the Mars Rover problem and concluded that there is only one "state" which is in X, Y coord with DIRECTION. Right ??

    Just correct me If I was wrong.

    ReplyDelete
  22. Not sure why you say "one state". There are 4 possible directions N, S, E, W. So there are 4 states in which a rover can be at a particular instance of time. Does that make sense?

    ReplyDelete
  23. hmm, after a much thought, I think ur right. Directions(N, S, E, W) are the only things that eat up my whole logic(if..else and switch) statement. Putting them into the separate class I think removes those switch and if..else statement :D Right ??

    ReplyDelete
  24. Thats right. Best of luck for your interview.

    ReplyDelete
  25. Thanks but I don't have any interview with TW, just practicing.

    ReplyDelete
  26. The following is one of the problems I got from Thoughtworks.

    http://www.technicalypto.com/2010/02/thoughtworks-mass-rovers-coding-problem.html

    ReplyDelete
  27. Hai i solve and sent salse tax problem before a week but there is no respose till,TW consider only mars rover program or they also consider ST program, How long i have wait for their next move.

    ReplyDelete
  28. I'd sent ST program and got the response within 2-3 days.

    ReplyDelete
  29. Hey Abhang,
    I am from chennai and got a call from thought works 2 weeks back and i designed the Mars rovers problem, sent it and got through the first round. Waitin for the second round to happen... Your blog was quite informative about the next level of interviews. I will be prepared for that.

    Thanks,

    Prabakaran Srinivasan.

    ReplyDelete
  30. Hi. Rakesh here.from chennai. I solved Tax calculation and got through. gonna attend second round on saturday.
    Thanks a lot Abhang for the info here.

    ReplyDelete
  31. can u share the code
    rituk_15@rediffmail.com

    ReplyDelete
  32. Advise that by submitting a copied/pasted code it is very likelly you will get caught in the pair programming part of the interview, if not in the first code review.

    ReplyDelete
  33. Can anyone help me about ThoughtWorks interview process for Quality Analyst role?

    ReplyDelete
  34. Sir,
    i need to know of we can develop the solution for sales tax problem as windows application form rather than console application.....please do reply as soon as possible.....its vry urgent
    Regards,
    Ritima.

    ReplyDelete
  35. becoz i have done most of the programming on windows form applications...n i can develop d solution in a betr way using dat platform

    ReplyDelete
  36. I am very sure you can. They want to see your coding style. How is your approach, how clean your code is, how scalable it is etc. WinForm, WPF, Console are all secondary things as I see this.

    ReplyDelete
  37. I actually enjoyed reading through this posting.Many thanks.


    Interview Questions India

    ReplyDelete
  38. hi i m Shameer, an Msc student need to face thoughtwork interview next week. pls help me what they ask to a fresher. (mainly in coding section) my id is shammupvr@gmail.com

    ReplyDelete
  39. hi i am b.tech student.selected in written test(flow hart qs which was held in our college.do u know what r the next procedures.They have asked to come to their cjhennai branch.plz tell me what r the next procedures in TW offcampus

    ReplyDelete
  40. Hey Abhang

    I submitted my code and got an email the next day itself asking me to visit their office and to provide them 2 interview date options. I first replied back asking them if it was possible to conduct the next rounds on a weekend. I did not get a reply for a day so I sent them an email with some dates I could make it for the interview. It's been 2 days since I sent them this email but no reply yet. What do you suggest I do next? Send another email or call the recruiter directly?

    ReplyDelete
  41. Hi Abhang,
    Will they also ask these kind of questions for the testing ppl,As i have in interview with thoughtworks for QA position

    ReplyDelete
  42. Have any one of you got the Conference Track Management problem?

    ReplyDelete
  43. Which type of interview thoughtworks will ask for QA position?

    ReplyDelete
  44. 1) Applied on their site. Within not much days got a call back from HR. Asked for a call interview to be scheduled.

    2) On call interview went about who I am, what I do at work and what do I do other than my work. Why I am looking for change and why thoughtworks. Any open source contributions I have done? What do I know about their company? It went all well and HR was satisfied. I was moved to next step and told to submit code solution they will be mailing.

    3) Got two problems, I answered one of my choice, spent a weekend to designing and decorating the solution with all my OOP strengths.

    4) The INTERVIEW – As I reached their office around 10:30 A.M. HR greeted and received me, took for a coffee. You could see all what you hear mostly no cubicles, sticky notes all around for various tasks.

    Code Refactoring Round (The Good Part) – In this round you will sit with senior developer and refactor the code which you submitted.
    It went quite smooth and was real fun, main reason being I really liked attitude of the guy and he was very interactive. The guy was courteous enough to get me a windows keyboard when I was struggling with his mac keyboard.

    1st Technical Interview (Not so good part) – Here two thought workers came to interview with 5 and 7 years of experience respectively. As they came senior guy asked me some questions straight ahead, like tell me about you. What do you do in spare time? Then junior interrupted and gave his introduction told what he does in the company and what all he works on.

    Then first question was “Why Thoughtworks, What are you expectations from Thoughtworks”, as I replied things being Agile, Test Drive Development and how lack of these practices have in my current company is has driven me on quest of such a company. Also I have heard its different experience with no cubicles etc.

    Then second question was “What you can contribute to Thoughtworks, what your vision is and what you bring to the table”. Not so good with self-praise, I could only get few items here. I told my vision of becoming a good architect and build good solutions.

    Then came “Give a OOP design of Library Management System”. I went ahead and approached the board and explained my thoughts on how would go about approaching the problem, starting with chalking down some requirements. As I was writing down requirements and things what I thought it should do, I was interrupted to tell that they need DESIGN and I can skip these things. In my head I was going with already such a vague statement such as “Library Management System” which can cover so many things, I didn’t have clue what they were expecting to hear or see. Anyways I continued to draw some UML of some interface and sure shot classes such as Book and put in some attributes. Then Also drew Library class and established has a relationship. Then as I was moving in the direction of getting more items under common interface like magazines, cd’s etc. I was stopped and told how you would search in this system.
    I was also told that LMS is large system I should focus on a part of it. Getting rid of such vagueness I felt relieved. Discussion went around from being how will be attributes stored to performance of this thing that trying to match each book would be performance intensive to not exposing internal attributes book to any outside class.

    Then we went onto some balance parenthesis question. I suggested all time famous stack then , I was told to do with recursion which I could. Other than that small discussion on how hibernate works and maps RDBMS tables took place.

    So in summary out of an 1.5 hour interview. Majority time (around an hour) went where I blabbered around LMS. I saw most of the time went NEGOTIATING requirements with them rather than focus on design. I don’t know if they were trained but they will give very little signs on if they agree with you or not leave alone the answer even on the Question.

    HR Guys: In all my experience the people who consistently I admired were HR Guys

    ReplyDelete
  45. hi your blog Article is very nice & thanks for sharing the information.
    video interview software solutions
    employee hiring services

    ReplyDelete