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.
Hiring process
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.
Induction
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)
First project
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.
Various benefits
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.
In conclusion…
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.
Anonymous
The can of cool-ade will run out eventually. It always does
Matt
Hi James,
Glad to hear you’re still enjoying it. As it was me who did your initial phones screen I’m glad you felt the hiring process was smooth and even quick! It’s good to see that you don’t feel mis-sold or that there was a great disconnect between your impressions of TW and the reality of working here.
As for the poster with the comments about the Kool-aid running out, you’ll be pleased to know that we know have ThoughtWorks Kool-aid vending machines in all our offices and on client sites so it’s permanent happy faces for all! 😛
Matt Buckland, TW UK Recruiter
Anonymous
Hi James
Im supposed to start with ThoughtWorks for their TW University program in June and have a few questions i would like to clarify frm you.
What im curious about is the fact that as a developer you get thrown into projects that might not be in a languagetechnologyplatform you have any experience with. How are you expected to cope with this ?
How do you walk onto a client site, ready to start writing code, only to find out that the project uses the FooBaruby technology which you have absolutely no experience with ?
Im assuming you would be paired with a Dev experienced in FooBaruby and you can pickup stuff on the go and from reading books after work, and some kindof rampup period is accounted for in the case of new developers joining a project.
James Crisp
Hi Anonymous,
Your professional services manager (PSM) looks after assigning you to projects, and from my small experience at TW, this usually means you have a brief discussion with them about the project before you get assigned. At that point, you find out technologies etc, and if you are concerned, you could potentially ask not to go on the project. However, the PSM will take your experience into account, and if you’re going on a project with lots of new technologies, you’ll be going with other people who know them better and can help you. It’s in both your and TW’s interest.
As an aside, if you’ve got experience with a mainstream language and a few frameworks, you’ll generally find a lot of familiar patterns and constructs in new languages/frameworks, so you’ll probably pick things up pretty quickly.
James
Anonymous
Thanks James,
That helps. Most of my experience is in Java Web Development. But I think I’ll try to learn Ruby before I join since I hear a lot of TW projects use Ruby. Any suggestions if I should start with Ruby or JRuby ?
James Crisp
Ruby is pretty big in TW USA, less so but growing in TW Australia. I think it is worth learning either way – dynamic languages make you question some of the things you’ve always taken for granted, and give you some new perspectives. JRuby is not quite feature complete yet and currently a bit slower. Major benefits of JRuby are easy integration with Java objects and Java style packaging and application servers for Ruby code. Unless you need these, the standard Ruby would be best. You might want to check out InstantRails (PC) or Locamotive (Mac) if you are on these platforms and want to get into the rails side of things with minimum install hassle.
Cheers,
James
Anonymous
Watch out. He is an expert on rails now. You can’t mess with that.
Philip
ThoughtWorks seems like a really amazing company from everything I’ve read.
P G Palmer
I’m enjoying browsing through your blog and appreciate all the good information in it. Thanks for making it.
A bit of feedback. This sentence: “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” contains the disturbing assumption that only males work in this profession. Please try to avoid this; I know it’s common slang to say “guys” or “boys”; and to those of us females in the profession, sometimes it makes us feel a little, well, unwelcome.
Cheers,
Pat
Sridhar
You should just feel like one of the guys. That’s the kind of familiarity should try for.