Saturday, February 25, 2012

8 Months at ThoughtWorks Pune

I joined ThoughtWorks, Pune in June 2011. 8 months ago. Previously I had worked with Persistent Systems, IBM Software Labs and Performix (a start-up). I would like to pen down my ThoughtWorks journey so far. Correction. Incredible journey.

For sake of readability, let's list down the things I feel are awesome and different about ThoughtWorks, and why I catch myself wondering why the hell did I not apply to ThoughtWorks earlier. For the record, I joined ThoughtWorks as a Senior Consultant, and my role here is Programming, Programming and yeah Programming. :) Lets see.. what this means.

1. People: The most awesome thing about working here is definitely the People. Each and everyone has a special talent. Everything else that follows is just a nice side effect of smart people doing things they love. If you are looking for a UI guru -- there are many, if you are looking for a Linux guru -- again there are many, if you are looking for someone with experience in Mongo DB -- turn around and go to the 3rd table, if you are looking for someone with experience or interests in Statistical data modelling -- drop him an email -- he should be visiting us next week for one of the many technical meetups at ThoughtWorks, if you are looking for someone with awesome drumming capability (yes music!), well you can find him too. Talent seems to be a complementary feature of all great programmers. I guess, you can't hone just one skill. Perfectionism and curiosity become a habit. At ThoughtWorks, the recruitment process is stringent, and we are careful about selecting folks who can build, fit and contribute to the ThoughtWorks culture of excellence, fun, and social responsibility.

2. Pairing: Now, this one is very interesting. We pair for all our development work. That means, every code that is written is written by two people sitting side by side, connected to a huge monitor and a pair of keyboards/mouse. Sounds unbelievable to most folks. Its true for ThoughtWorks worldwide. What this means is that obviously silly bugs are caught while programming, it also means I can't get lazy. If I skip a unit test -- or write code that is sub-optimal, the other guy will be like - Dude!! Then I'd go.. you know what.. why don't you drive (means type). The other awesome benefit of Pairing are the little tidbits you pick up from your pair. For instance, I used to use :wq for saving a file in vim. Well one day my pair said.. hey try using "Shift zz". Its faster. And since then its been a bye bye to ":wq". The net output of pairing is -- both folks learn the best from each. That's quite something! If you are weak in Javasript, your pair can help.. and in the end you know stuff you didn't know 10 mins ago. Next time you can teach that to someone else. Also, its bye bye to gtalk, facebook and twitter while pairing.. which means hours of solid productivity, with no distractions --- and to top it, you don't really feel exhausted because you have a pair and a friend to keep chatting with the whole time! And, then there is the concept of Pair Rotation. What this means is that every 2-3 days, you rotate pairs. This helps in ensuring everyone learns from everyone, and everyone learns mostly everything about the code base -- so there are no bottlenecks and module-owners. Everyone owns the code, and everyone can fix anything. Of course needless to say, we still have our strengths in certain areas, but we still know sufficient about other areas as well.  If you feel Gym membership is costly, try open heart surgery instead. Same is the case with Pairing. Its totally worth it!

Note: Even if you just read this post till here, and have never done Pair Programming, I suggest, for now you leave this post alone, and hurry along finding out more about Pair Programming because that's the single most beneficial decision you can take (other than choosing to join ThoughtWorks of course).

3. Linux (a.l.a Unix): Well, I spent 9+ years of my life with a Windows Laptop, thinking - well, Linux is for the die-hard geek, hacker, or for running mission critical server applications. I was familiar with Linux, and tons of its avatars -- thanks to multi-platform testing at IBM. Guess what --- if you are a developer in ThoughtWorks, and you don't work on a Unix/Linux  machine --- something is wrong with you, or you must be writing Windows all over again. In the 3rd week at ThoughtWorks, I wiped Windows off my 8GB Dell Latitude laptop, and installed Ubuntu. All our development happens on Linux machines. And believe me, for a developer, Linux is God-sent. The amount of tweaking, customization, productivity enhancers, and shortcuts you can enable in Linux.. makes Windows feel like crutches. And, yeah -- it helps having folks around you who have mastered such tools. Makes it way easier for you to hop on for the ride.

4. Transparency and Feedback: These words take on their real meaning at ThoughtWorks. There are no walls in ThoughtWorks Pune office. Just one big hall, with large tables (one for each team). No cubicles, for anyone. No exceptions. This means -- you know everyone, you see everyone, you say hello to everyone, and you can hear anyone. Turns out, it's quite easy to work in such an environment. You want to know what's happening on project Z, go and walk up to anyone in its team and he or she will bring you up to speed. You want to attend the leadership meeting, just walk in -- you are most welcome. You want to know if you are gonna be sent abroad on an assignment this year -- go say hello to PSM, and he'll tell you who all are selected and why. You delivered a presentation, and it was not-so-good, people will come and tell you what you could do better. If you rocked, they will tell you that too. You suck in Web Development, no problem, they will tell you, and help you find resources to improve, or better still, pair with you on such tasks. You want to know what's the future projects pipeline -- check out the internal my.thoughtworks portal. You want to know which bid we lost out on, and why, check out my.thoughtworks. Its all out there for you to see, read, learn and share. We trust you, and as long as you live up to the trust, things are much easier to manage and communicate.

5. Social Impact Projects (SIP): Besides the plethora of open source project options, we also have a number of Social Impact project options available for voluntary contribution. This gives me an opportunity to learn new technologies, while making a useful contribution to social causes. The great thing about SIP projects is they seem to be invariably built using the best and newest of open source technologies, cloud platforms, and the works. Most SIP customers want us to build, deploy and manage the whole solution, with no silly opinions like "It must use ESB", or bloated middlewares, etc -- only because someone higher up spent lots of money buying bloatware which now can't be justified. SIP projects are nimble, agile, and very satisfying to work on. ThoughtWorks has special folks identified for driving and helping volunteers contribute to SIP. The momentum on SIP in India is huge. To know more:

6.  Comfort, Fun and Food: Thanks to Extreme Programming (Kent Beck), not only do we NOT have psychotic processes (Agile rocks!), we also have tons of outings, meet-ups, and fun! In fact, after I joined ThoughtWorks, my wife was disgusted with the number of team outings I went out for. Teams are made by getting a bunch of folks together, and successful teams are made by getting a bunch of passionate friends together. ThoughtWorks is made of these successful teams. And successful teams celebrate.

To sum it up: My wife has joined ThoughtWorks last month! :) :)

[Update: 25/July/2013] A really nice video on life at ThoughtWorks:

[Update: 07/Aug/2013] Added snaps I took of Pune office.


Unknown said...

Very well written article. welcome to ThoughtWorks.

Jay said...

Wow.. That's interesting.

Jeffrey Davidson said...
This comment has been removed by the author.
Jeffrey Davidson said...

Great post! Thanks for sharing the link on my version (

You listed so many of the reasons I love ThoughtWorks. I really haven't ever been happier with a company than I have been with TW.

I look forward to meeting you and your wife in person one day.

Mihir Khatwani said...

Cannot wait to work at Thoughtworks. Very excited but still a lot of time left. Very well written article sir. And happy to hear that all work is done on Linux.

Gurpreet said...

Welcome to ThoughtWorks @Mihir. And congrats! You will love the place. If you are joining as a Lateral, do check out one of my posts on "Recommended Reading for Dev Laterals" (if you have spare time for some reading).

Mihir Khatwani said...

Thank you sir. But I have no idea what a Dev Lateral is. But eitherways I will checkout the book from Martin Fowler. I love the fact that even after a job thoughtworkers manage such heavy reading.

Gurpreet said...

@Mihir - A lateral is a person who joins thoughtworks from another company, and hence has come to us "laterally". Basically another fancy way of saying folks who come with experience (non-freshers).

Reading books, online stuff and articles is a way of life for us. That's how we learn from the masters. Thats how we can become masters. Don't worry, once you get the hang of things -- you will not only be reading, but also writing on stuff.

And please don't call me Sir. No one calls anyone Sir in ThoughtWorks. Call me Gurpreet :) And ping me when you join ThoughtWorks if you need any help or guidance or just someone to talk to. I'll be glad.

Anonymous said...

Hi Gurpreet,

I am Oracle PLSQL Techy and this is my profile:

My query is, what I need to do to get in Thoughtworks... which additional skills shd I acquire?

Please let me know...


Anonymous said...

how can i get into thoughtworks of dream move ... :)

Gurpreet said...

Read my blog on "Recommended Reading for Lateral Dev Hires", and pass me your resume. If you are passionate about Technology you shouldn't find it difficult at all to join us :)

Unknown said...

Hello Gurpreet sir!
Thoughworks is my dream company and after reading your article i am more in love with it.
Thanks for sharing your experience.
I very passionately want to join thoughworks. Is there any article which can guide freshers to get into it. Sir please give some guidance if possible.

Gurpreet said...

@Anuja: Why don't you come and visit me at ThoughtWorks Pune office. I can guide on what you could potentially work on. Alternatively, drop me an email.

Xuvious said...
This comment has been removed by the author.
Gurpreet said...

Sure @Xuvious. You can forward your resume to me, if you don't hear back from TW Website in next 7 days.

Back end developers said...

Hi Gurpreet,

Really it is nice article. It will be very helpful if you share some tips for fresher CS background students who wish to join TW. Because all cannot be in pune. I guess many are there in TN. And TW is also there at Chennai.

adds said...

Hi Gurpreet Sir,

I spend 2hrs inThoughtWorks for nullmeet. When I reach back to home after meet, I'm curious about what kind of projects done by Thoughtworks.
So I googled about it and found your blog. So what I feel about it :
Thoughtworks is AWESOME

Gurpreet said...

Thank you @adds. It is truly awesome. I hope you had fun at the null meetup.

kavya said...

I have got an offer from Thoughtworks for Application Developer. In my present company, I am doing only UI related work but I am more interested in writing services related stuff. Thoughtworks offers 15% lesser than what I am getting now. should I join thoughworks and will it satisfy my area of interest.?

Gurpreet said...

You should discuss with the recruitment team at ThoughtWorks, or your contact person assigned to you in ThoughtWorks. Usually people work on all kinds of roles within ThoughtWorks, and their is a lot of flexibility. But, its best for you to chat with your hiring contact and be frank about your interests.

Divyesh said...

Hello Gurpreet,

I read your article and it's really awesome. I had heard about ThoughtWorks as company before, its work culture, and it was good.
But after reading your article I got actual idea of how company is and how actually people work here.
Now I really want join ThoughtWorks.
I would be glad if you suggest what a 2+ exp. developer should have to join ThoughtWorks as Software Engineer.

Gurpreet said...

Hello Divyesh,

Thank you for your kind words.

You can read the following links to better get an idea of ThoughtWorks hiring process / expectations:

Feel free to drop by and meet me in ThoughtWorks office if you are in Pune.

Haze said...

Hi Gurpreet,

I am working as a Pl SQL developer with 4 years of exp.Recently I came across an ad where Thoughtworks is planning to hire the best women developers and was intrigued however I am a database developer and need to know if I need to learn Java or some Oop language to get into your company.Also, I did go through the recommended reading for lateral developers website but I find most of the books are meant for Java debs.Any suggestions would be highly appreciated.Thank you