Thursday, July 17, 2008

Cracking ThoughtWorks

On popular demand, I'm back to blogging ;) ... and with something tht i m sure will be of help to all the aspirants of ThoughtWorks (hereon mentioned as TW).... Hving been rejected twice, Hve got a good feel of how the process is and wat is expected of the candidate.. however although the title suggests otherwise, there is no perfect way of cracking TW .. (otherwise y wudnt i be there!!) ... So accordingly dont expect to get into TW by following this article... This will just help u to get as close to getting selected as possible (and then getting rejected ... :) ... lol ) ....

Will just brief wid the process :
1> Starts wid the aptitude
2> Code Review
3> Code pairing
4> HR+Technical Interview

Of the 4, the first is the easiest to clear , closely followed by code pairing. Code review and interviews shud require most of ur attention and effort.
So wat to expect in code review?? In this, u'll be sent 2-3 problems by mail of which u need to code one in ur choice of language and send them back within app. 3-4 days. I wont be able to disclose the problems as tht wud be unethical (i knw i hve used it wrongly !!) but if ne of hve participated in GCJ (for those who donot know Wat GCJ is ..... try to find out ....) , then u r definitely on the rite track. Others try to register for GCJ and see the practice problems . TW problems are more or less on the same lines (P.S. : i've used the code written for TW to solve one of the practice problems in GCJ) (Wat did people do when paranthesis werent invented!!! ) ... However there's more to Code Review than just coding... TW expects u to do Good Programming rather than mere coding... Which implies using OOP concepts like Inheritance, Polimorphism, Encapsulation, etc not just for the heck of it but to make ur code more robust, flexible and reusable!! (Dont worry u'll learn to use these concepts in ur programming.. but u 'll have to make a concious effort to shift ur mindset from POP to OOP) ... Also a bit of testing knowledge helps... Coz u mite be expected to write testcases for ur program ... again using ne framework of ur choice .. (I had used JUnit fr Java) .... Finally and mostly importantly, Write it on your own... U can take some help from online sources or ur friends to understand the problem or even bout some concepts but as far as possible write it yourself... If not in the code review , u 'll defnitely be dumped in the code pairing... coz u need to implement an addon to the problem then and there ...
Next Code Pairing... Very innovative and intersting activity... For MU students , we are used to it ... Its similar to coding in pairs as we used to do in pracs ... However wid a more professional touch... The reason to use code pairing is to reduce errors and thereby facilitate quick development... W/o getting into intricate details of wat it is, we did rather concetrate on wat u need to know or rather do. Firstly, Dont be nervous... Ur pair wud be a quite jolly person (since he wud be a THoughtWorker . ... ... ... . :) ....... Can i join on Monday? Is the TW HR listening? ) . So be relaxed... NExt and most important communicate wat is going in ur head ... As in if u need to implement an HashSet or ArrayList and are a bit confused then let him know . (Do Not try this @ home ).. Like " A Hashset wont allow me to add duplicates .. however arraylist will and i can refernce elemts quickly in arraylist.. This problem requires.... blah blah ". The benefit of this is tht u make him realize tht ur concepts are clear regardin Collections ... Also he mite be able to help u out if u get stuck.. since he wud know wat was goin thru ur head!!! So speak up... But again not for the heck of it (Bcoz some damn stupid blogger told u !!! ) wat u say shud also make sense!! Otherwise u are better off keeping quiet!! ... Lastly if he tells u to implement an addon to the problem, first discuss n clarify watever doubts u hve... then tell him wat ur POA is... then start programming (not coding)... with periodically letting him know of wat u r doing! (Time for a secret : My pair was so impressed wid me . he let him thru w/o even programming the addon!) ... Once u follow these guidelines be rest assyred u r sure to clear the code review **
** Subject to Terms and Conditions

Lastly the interview ... Cant help u a lot in this ... But again can give some tips ... Dont expect a routine "siitng on the other side of the desk" interview.. Its an actual interview... A whiteboard interview to use sophisticated terms ... So be prepared for it... Goin into a TW technical interview w/o reading DS properly and properly (ya no mistakes here .. used twice for more effect! ) is suicidal ... So dont attempt it... Next read bout the design patterns (important ones ) (Book update : Head First Design Patterns) ... also bit of Aspect Oriented Programming .. SQL ... OS COncepts (Concurrency) (was asked the dining philosophers problem! No its not easy! ) .. (A bit of caution : TW interviews can be really long! Mine was bout 100+ mins .. i ve heard of some crossing the 150 mark!! ) And last and Most immportly read :
Dont read this and u r in for the worst!

Hope this wud help ... Comments and queries welcome!

Comment (1)

Hi Puneet,

Can you tell me when will i come to know whether my code is accepted or rejected? I have already submitted it and dont know whether it is under review or rejected?

You are commenting as a Guest. You may