ThoughtWorks, Work

Why didn’t I get into ThoughtWorks?

I had an interesting conversation with a recruiter recently about the difficulty of the ThoughtWorks recruitment process. It’s true that the majority of applicants don’t make it through, but then that it is true of most recruitment processes. The ThoughtWorks one is perhaps more drawn out and longer so you feel that more effort was invested if you don’t go through.

One thing that is quite interesting is that being really smart is not the only criteria if you want to work at ThoughtWorks. Candidates who fail the process often go on to join other very prestigious companies. Why did you turn down this person who went to this other company?

In most cases the answer is that the company they ended up joining was not a consultancy. Consultancy is, unfortunately perhaps, not just about raw smarts and programming ability. Unlike a lot of companies ThoughtWorks doesn’t really have a codebase, the job is mostly about working with and helping people improve their own codebases.

Coaching, persuading and analysing code is quite different from writing good code. My favourite example of this is a code submission that solved all three of our problems in probably one of the shortest sets of solutions I’ve seen. The candidate correctly identified each underlying abstraction and applied the standard solutions in a concise powerful way.

An automatic hire then? No, sadly not, because while the candidate had the time to solve all three problems they didn’t bother to write a single test. If you look at what they did they really just proved their own superiority and left nothing that helped explain, maintain or develop their code base. You could already see that this person wanted to be the hero of the piece, not the collaborator.

In the three years I’ve been at ThoughtWorks there have been several times when I could have produced a much better solution to problems than what was actually created in collaboration with my clients. I would like to think that instead of the best solution we were able to produce something that our client teams understood better than what they had previously, was more productive that what they had previously and was more reliable that what they had previously.

All these things are more valuable than an individual being a better coder than their peers.


One Year at ThoughtWorks

It’s now been a year since I joined Thoughtworks and  for me a year at ThoughtWorks is like two at any other company I’ve ever worked at. I have learned so much since I joined I really feel like I’m a very different person to the one who joined. I’ve met lots of really smart people who are doing really interesting things but all of whom have been generous and unstinting with their knowledge, experience and advice when asked.

This openess is the thing that really sets the culture apart from so many other firms. Knowledge seems to have value only when shared and people are generally so enthusiatic about the things they know they are really eager to help you understand things. In most companies knowledge is power and hoarded carefully, divested for maximum gain with the grace of a man having a tooth extracted.

The other cultural aspect that has been really different is that there is tremendous peer pressure to be excellent. If you are cutting corners or hacking something that’s convenient but flawed or just riding on your opinion then someone is going to call you on it.

When I’m working on client-owned projects I often think about different approaches and then wonder how I would feel if I had to justify the solution I chose to my TW collegues. It’s interesting because it gives you a strength to stand up against weak solutions and weak answers, even if you’re not actually working with anyone from ThoughtWorks.

So it’s been a good year generally and certainly the best I have had working for a company rather than doing my own thing. However ThoughtWorks isn’t perfect because any aggregation of individuals requires compromise and the biggest problem with ThoughtWorks is how you handle that.

One of the obnoxious things you can come across is the idea that you should be grateful to work for ThoughtWorks (particularly held I think amongst those who have only worked at TW or the City and other consultancies). ThoughtWorks has problems and each individual has to balance the benefits of getting to work with so many amazing people against an organisation that can’t really resolve its central dichotomies. Is it the Employee owned company that is delivering excellence or is it the home to the best knowledge workers who are revolutionising IT?

The trouble with not deciding exactly what the company wants to offer its employees as the vision is that every decision ends up infuriating half of your smart, emotionally invested and highly motivated workforce because it doesn’t fit with their interpretation of the ThoughtWorks ideal.

So it has been a great year and an experience I would recommend to anyone. My closing thoughts about ThoughtWorks is that it is a company that hasn’t said “No” to anything I have wanted to do. There isn’t always a lot of support and it is more forgiveness than permission but I feel that ThoughtWorks has helped me be a better person because it has given me the chance to do things that other organisations simply shut down in an arbitrary and off-hand way.

So thanks Roy and everyone else who works and has worked at ThoughtWorks for creating that opportunity for me.

Programming, ThoughtWorks

ThoughtWorks Code Assignments

When you enter the ThoughtWorks recruitment process you are asked to code a solution to one of three problems.

Googling for the answer is clever in the sense they can be hard. It is also really stupid in that the code will be reviewed by at least two people who if they decide that your application will be taken forward will interview about your code and why you have chosen to implement your solution in the way you have.

You won’t be able to tell them that the code is the way it is because you copied it off someone else! So, write it yourself! The feedback you get will be more all the more useful if you code things in your own way. Otherwise the feedback will be relevant only to the person who wrote the code.

One piece of help I can give is that there are no trick questions or mistakes in the assignment paper. If you think you have found an error in the problem statement you have probably misunderstood the problem.

Java, London, Programming, ThoughtWorks

Geek Nights are go!

So it’s taken a lot of work but finally we have Geek Nights! Yeah!

The events are effectively sponsered by ThoughtWorks as they are provided the food, drink and venue (the ThoughtWorks London office). The first one is going to be on mocking and Steve Freeman and Nat Pryce of JMock are going to give a talk.

The Geek Nights are open to anyone who is interested in the topic, you can sign up via the link on the Wiki.


ThoughtWorks Values

I have a rule of thumb that you can tell the worth of a corporate value by inverting it and seeing if it still makes sense. If the inversion is self-evidentially meaningless or trivial then the value itself is meaningless. For example, if you have a value that says: “Build shareholder value” then the inversion would be “Destroy shareholder value”. This is clearly nonsense and therefore this is not really a value but in fact something that you have to do to run your business. You agreed to build shareholder value when you or your predecessor floated the company.

TW actually does okay by this yardstick, only three are meaningless and I think they (Customer Commitment, Fun and Best People) are actually the methods by which we intend to succeed rather than values. Two (Social Responsibility and Uncompromising Principles) are interesting as a company specialising in Social Irresponsibility and Compromised Principles would not appear to be a going concern. However often companies use other values to arrive at the same thing. Let’s take a look at Blackwater’s values. Sticky wicket I know. Look at the last value there: Efficiency. Having efficiency in your values is a way of saying that you’re going to aggressively guard your margin. That means putting a value on things and deciding whether they pay their way or not. Redressing historical discrimination, to pick a grandiose example at random from the TW list, is not going to be an efficient way for any company to spend money as there is little discernible value to be gained in doing it. There are lots of ways of curbing unprofitable entanglements in your values so I give TW some credit here for putting down a marker here.

So finally there are the two TW values that truly mean something: Entrepreneurial and Global. Personally I am a huge fan of the former and somewhat suspicious of the latter. People who display entrepreneurial spirit in companies are often thought of as mavericks and liabilities to the collective good of the firm. Encouraging this value actually colours your business and opens you up to both risk and opportunity. This is a genuine value you want to uphold when running your business.

Similarly Global could be inverted to Local which would also be a perfectly viable business model. I worry that global thinking tends to obscure issues that need to be dealt with in a timely manner, the local signal getting lost in the global noise. I have also worked for companies who mistook the global success of their organisation for success in local markets. US firms in particular can be hugely successful in the States which blinds them to their lack of success in the European or Pacific markets. There is a lot of tension in that word global. However I think the world has been dramatically shrunk and parochial thinking is unlikely to get an progressive organisation anywhere.


Last of the Immersion

This post is probably going to get a bit happy clappy so if you’re allergic to gushing sentimentality it is probably best to skip this post and come back for some of the more analytic stuff later.

This last week was a lot harder and longer than last week but for all the right reasons. I felt material was coming at us as fast as we could ask for it. The attendees were treated like the intelligent, capable people they are and if we asked for more we got it. For someone with no formal background in Agile it was interesting to be given some theoretical framework to work with.

However probably the best thing about the whole experience was being locked in a room with nine other intelligent, articulate and experienced people and being made to think about the job you are embarking on. A ThoughtWorks Immersion programme is hard to explain through the syllabus material alone. It’s pretty standard stuff and a lot of the time the material is very much the broad view. The trainers we had were good and put the trainees above simple delivery of slides but presentation cannot really explain it either. I feel that it was my fellow attendees that really made the experience something special.

The TW Immersion is multi-discipline and is really focussed on soft skills and Agile practices. It isn’t really about coding and it isn’t about huge org charts. It should really try and explain what we are trying to achieve as a company and what every person within the company does to support their co-workers and thus achieve success as a whole.

The thing that really impressed me was that no matter what someone’s background or nominal job within the firm everyone tackled every challenge or task on the course with enthusiasm and a commitment that held no reservation. At the end of the two weeks I felt that if I had these nine other people with me (who I had never met until two weeks ago) there was no challenge I couldn’t take on.

It is corny but I really mean it, it is a feeling I have certainly never experienced in any other environment. To me it feels like the secret of any collective endeavour is to collect the best people you can find. If you use the best people then you are going to succeed.

But isn’t using a fuzzy term like “best people” just a cop out? What does that mean? TW genuinely has some of the most experienced and talented people who work in IT. Anyone looking to recruit wants to hire the most capable and experienced people they can.

However if you had the choice would you leave it there? If you could hire anyone wouldn’t you also want to employ the people who could work together effectively, adapt to new situations, who could be honest with their colleagues, be willing to take on both risk and responsibility, who would try to succeed for the long-term rather than scrabbling for short-term advantage?

I think you would want to hire those people. I think you would also regard those people as being the best people; people who were good at whatever it is they do and then have all these qualities on top. I think if you were able to recruit those people, bring them together in the right environment and then have them interact and cross-pollinate all their ideas and experiences then I think you would find those people pretty damn inspiring.

I think that is how I feel at the end of Immersion. I may know how TW writes a User Story, uses Mingle or plans a release but all that is really incidental. What I really know is that TW has hired at least nine of the best people and that’s a fantastic feeling.


Halfway through a ThoughtWorks induction

Okay week one is over and what are we thinking at the halfway point. Well I think the abiding impression is that TW lives up to a lot of its hype. The people they recruit are talented, intelligent and, at least in the group I am working with, experienced. Everyone is very enthusiastic and committed to the programme and that really lifts the whole experience. I would not say that I was absolutely fired up about every item on the agenda and therefore it can be really helpful to have someone else kick things off and fuel the fire a bit. I am sure anyone who has been on a corporate training course knows that all these things are not necessarily that common.

Also the course attendees are truly cross-discipline and that is really helping to broaden the perspective of the course. I am not that interested in the sales service (for example) but I am glad that I have had a chance to hear people who are interested in such thing have their questions answered. You should try to avoid staying in your technical ghetto for too long.

TW has a pretty established framework for providing feedback and discussing issues. You do have to invest a little in understanding the rules and it can be hard to resist the rox/sux tendency but I think it pays off. The result is that you tend to give people a reason to try and fix problems and listen to your advice. These rules do actually set TW apart from other IT companies as I am not sure I have seen anything like this elsewhere.

Looking at the more specific circumstances of my course I am very grateful that the course is being held in London. I feel I am meeting a lot more people who will be in the office when I start working from there. It is also great to be able to switch between the course rooms and the office. If you get told to talk to someone you can head over to the office in less than ten minutes and actually talk to them. It also means that people in the office are going to start recognising your face.

The days are also quite long (particularly as you have to tend to prepare more for meetings, feedback and sessions) and therefore I am glad that I am going home for a few hours each day rather than simply drifting back to a hotel. It avoids getting totally fixated on the job. You have to get over yourself and listen to the details of someone else’s day rather than just endlessly dissecting your own.

TW is an organisation that has its own issues and foibles but I did notice that on the last day of the first week a lot of the new starters were starting to talk unconsciously about “we” where they meant TW as an entity. I am not sure I have seen people feel so comfortable with their collective identity at the end of an induction course let alone halfway through and that to me is a testament to there being something “right” with ThoughtWorks. It may be in the recruitment or the training or in the way that ThoughtWorkers are encouraged to think about themselves and the company. I suspect it is probably in all of these.


ThoughtWorks Induction

Well the taxman’s been informed so I don’t see why I can’t publicly say that I am currently joining ThoughtWorks. The first day of the two week induction was today. One of the most interesting things was that the induction was the same as that you would get at most reasonably-sized IT companies. Probably the major difference was that (as advertised) the attendees, while sharing the same broad spectrum of IT employee quirks, were noticeably more… well, intelligent than those at other companies I have worked with before.

People had views, were informed, had opinions; however they were also able to discuss, reason and compromise which I think is much rarer.