#19, An Interview at ThoughtWorks – Experience to share
One of my colleagues mentioned about the “very different” recruitment process at ThoughtWorks. Something about writing code initially and further process based on modifications on the initial code. Well, that intrigued me! I’ve always wanted to be part of such innovative organizations. Hence, I took my first step of applying for the post Application Developer at their website.
As immediately as within two days, I get a call from HR at TW. Very pleasing gentleman, the call was pretty routine. From projects executed to my favourite pastimes, he inquired all. There was even a question on some of the awards I received. This went on for a while, and the HR on his part briefed about the recruitment process at TW. I vaguely had an idea, but I preferred to let him explain in detail. So here they were:
1.Logic Analytical thinking
2.Coding round for a problem provided
Fine! I was very eager to start with the process. I was asked to drop in at their office* at a day of my comfort.
The first was the Logic test. I was given 11 flowchart problems. It was pretty simple but required intense concentration. I had to go back few questions once I completed all 11, just to see I’ve made mistakes. But I believe, when I handed over the booklet, I got most of it right. The HR dropped in 10 minutes later informing the candidates who cleared this round. (There were more than a dozen who were part of the process) Those who didn’t clear were asked to leave, of course courteously.
We met around for the Coding round, after a sumptuous lunch – courtesy TW. I was offered two choices – A game of life problem, a Sales Tax Problem (Feel free to Google, the Internet is full of them) I picked Sales Tax Problem, for one simple reason – It was more practical. I had been reading up about Calisthenics, Design Patterns and OODP. Hence, I perfected my code with as much good design as possible.
I left home after this exercise. The immediate next weekday, I get a response from the HR that I’ve been selected to go through to the next round. And my next visit to TW office was fixed.
The third part of the process – Pair Programming session. One of a seasoned ThoughtWorker met me with his laptop. We started with explaining my code, the philosophy of my design, etc… He asked me a few questions/doubts, few – Why this way and Why not the other way. Since we spent a lot of time on this, he chose to discount me of the huge extension to the code that was planned.
We chose a small extension. He left the floor to me, so that I can start designing the extension. I took the white-board and illustrated the new classes/behaviours that needed to be added. Then took to the laptop and started coding. The behaviour was simply to say True or False based on the condition if the string conforms to few conditions. To clear out my mind, I went ahead with pseudo code form of the logic. The code executed fine. He pointed out that it can be simplified using Regular Expressions, which I too realized but confessed that since I couldn’t recollect the expression type I didn’t venture into that. He confessed to the same, but since this was just an exercise we completed with a simple regular expression. He left the room, after a customary QA session with me.
Few minutes later, the HR came in. Briefed me that, although my design and analytical thinking was pretty good – my language skills (Not English, but C#) was not at par with my total experience. And I needed to focus on improving the language skills by more self-interest projects, etc… I politely agreed. And the HR walked me out of the office.
Overall the whole process was a great learning experience. I completed a record 5 design patterns in less than two weeks. And now I have a sense of direction as to what I should aspire for in my coding skills. Not to mention, I’d try to get back to TW after 6 month stipulated break.
*Office – Being at an organization which looks like a whole city, TW office seemed petite and cute. But what struck my notice where – Cubicle-less rooms (only the HR had cubicles) , Casual dress-code on a weekday and surprisingly no desktops.