Well, I've been with ThoughtWorks for just over 5 weeks now, and I thought I'd write down some thoughts before the hiring and joining process got lost in the misty swamp of my memory.
To cut a long story short, I did a phone screen with HR, a coding test and then some fairly quick aptitude and personality tests and finally 3 interviews. You have something like a week to do the coding test and then submit your code for review. I had the other tests and interviews on a single day. Although this sounds pretty horrendous, it actually wasn't too bad. Tests were pretty quick and the interviewers were astoundingly friendly. I finished by something like 3pm in the afternoon, including a lunch break, and surprisingly didn't feel too bad or stressed afterwards.
As a fairly impressive start, I had 2 days of induction in Melbourne (I live in Sydney). ThoughtWorks arranged drivers, hotel and flight so it was all very smooth. This was lucky as I was pretty jet lagged and confused - I'd just flown back from an overseas holiday not long before. Induction was largely getting a company provided laptop, meeting people and getting an introduction to various internal systems and procedures. As an aside, I've heard that there is now an "immersion" process where you get sent to India for a week or two for induction but can't comment on that.
A few weeks on the beach
When you're not assigned to a client project, you are "on the beach". This means you go into your local office with your laptop. It's really great - there's no particular tasks assigned to you, but the opportunity is there to get involved in a lot of interesting stuff. To give you some examples, here's some of the stuff I've had the chance to do:
- Write an open source plug-in for Mephisto for ThoughtWorks Studios
- Be involved in scoping out and estimating for a RFI from a new client
- Pair with another developer to do code reviews of potential new recruits
- Help out briefly with a fun project to develop a driver for a USB build light for continuous integration servers (red for broken build, green for good build, etc)
- Help out on client projects - I was asked to whip up a little proof of concept for JRuby and Java integration and learnt a bit getting this set up
- Do a little bit of Google Maps integration
- Meet colleagues and learn more about procedures etc
- Get invited to lunch with the managing director - this is something that happens for all new hires and I think it's really great
- Almost go out on a pre-sales call (I've got to go back to Melbourne and will miss this unfortunately)
- Catch up on tech reading such as blogs, books etc
- Go to a swanky talk given by Martin Fowler and Kristan Vingrys
- Eat lots of free lunches (usually twice a week) and attend various talks at the office given by other consultants
- Drink lots of free coffee (ThoughtWorks has a coffee tab with a local cafe)
Much fun as it is on the beach, after a few weeks, I was itching to join the big boys and go on a project. Getting assigned to a project is the purview of your professional services manager, and can be pretty changeable. The saying is that "you don't really know what project you're on till you walk in the door of the client site" and I've even heard "you don't really know what project you're on till you're on the plane home". There's a grain of truth in these - it can look like you are going to go on a project and then it doesn't come through, or some other project becomes more important or whatever. I almost went on several different projects before finally ending up on quite a cool Ruby / Rails project with a startup in Melbourne. So, I got to join the jet set and have been flying down to Melbourne during the week, and back for the weekends. This is a bit tiring, but ThoughtWorks does its best to make things comfortable. I'm staying in a really nice corporate apartment in Melbourne, flights are arranged and paid for and drivers are scheduled for pickup and drop off to the airport. There's also a generous per diem allowance for food. The project is really cool, and I'm enjoying it, but can't say more as it is under a NDA.
Back on the beach.. but only for two days!
My first project was two weeks, so after that I returned to the beach. Today is my second day on the beach. However, it turns out that the client was very happy with our first two weeks work and they've invited us back again until Easter. This means I need to fly back to Melbourne tomorrow. This won't continue indefinitely though - when I was discussing the project with my professional services manager, we agreed that I would not need to stay on a Melbourne project for more than 6 weeks. And clearly this is in ThoughtWorks interest as well - it costs a lot more to fly somebody in from Sydney every week and provide accommodation etc. I'm going to be transitioning off the project by Easter and a Melbourne based consultant is going to take over from me if the project continues further. It'll be good to be on a Sydney based project again but I feel it would be unfair not to say that ThoughtWorks has done a really good job in making working in another city as convenient and pleasant as possible.
ThoughtWorks is pretty generous in the expenses department. They cover your mobile phone, home internet, per diem when away, give an allowance for training courses and books, etc. There's also lots of free lunches, food, coffee and catered events.
Transparency and knowing what's going on
I've been quite impressed to get a monthly update email that talks about ThoughtWorks plans, goals and financials, headcount etc in significant detail. There's also various update meeting where you get to hear how projects are going and what's happening with various clients. Personally I'm really glad to see this type of thing, as at previous jobs, this has been privileged information, and most of the time, I have not really had any idea how well the company is doing financially as a whole, or what the future plans and directions are.
Variety and Unpredictability
These are really two faces of the same coin, and depending on your character and experience, I think you might either love or hate this. You really don't know what project you're going to be working on, what your role will be, what industry the client is in, what type of development they need or for what platform or in what language. In fact, you don't even know what city you're going to be in during a given week. I'm enjoying this at this point as my last job was always in the same office, with the same technologies etc. However, I can see it may be trying in the long term, and it does make it difficult to do the shopping or organise things with friends during the week. On the other hand, I have heard that most of the work in Sydney is for big companies like banks and telcos in the city CBD within walking distance to the office, and the majority in Java. So perhaps my short experience so far is not the norm.
So far, I can honestly say that it's been really great working at ThoughtWorks. I've had a chance to do some of the stuff I've wanted to do for ages like work on a bit of open source and do some commercial Ruby on Rails work. My colleagues have been friendly and welcoming, and I've been wowed by the level of care that ThoughtWorks takes of its employees.