I've tended to avoid writing about ThoughtWorks in my blog. To a large extent this is because I don't like anything that looks like advertising for my employer - the logo on every page is quite enough of that. But more and more my mind gets full of the kinds of things we are doing not just in our delivery work (which is the source for much of the ideas in my writing) but also in the way we structure ourselves. The reason I gave up my successful life as an independent consultant was because I felt ThoughtWorks was a special and unusual company. In the last year I've been more and more interested in the social aspects of my employer, and so I've decided to start blogging about some of those.
I'll start with a snapshot of ThoughtWorks in early 2005.
Looking at the numbers, we are currently running at around $75 million annual revenues with just under 600 employees world-wide. We have offices in:
- Australia: Brisbane, Melbourne, and Sydney
- Canada: Calgary
- India: Bangalore
- UK: London
- US: Chicago, Nashville, New York, and San Francisco
We grew about 50% in revenue and people over in 2004, which is pretty much the same as in 2003. It's a high rate of growth, rather higher than I'm comfortable with, but we seem to be coping pretty well.
Even with this growth, we've still found it a struggle to cope with all the work that's been coming through the pipeline. In the last two years we've been primarily bound by how many people we can hire. I've been pleased to see that our draconian hiring routine is still in place - we are still working hard to hire only the very top fraction of software developers (the target is around the top 0.5 to 1%). I'm sure the recruiting system produces too many false negatives (people we turn down who we should have hired), but I'd still rather take that than the alternative (hiring people we shouldn't).
Our delivery capability continues to improve. We are pushing incremental development and agile principles as hard as we can - and finding ways to succeed with them, even when clients are more resistant than we'd like. In particular I like the way we've integrated testing more and more into the development process, working it in at multiple levels (unit, acceptance, etc) and roles (programmers, analysts, etc). I hope next we'll push further on ideas of close collaboration between testers and analysts at the earliest stages of our development iterations.
Technologically our two main platforms have been Java and .NET - with most developers happily bi-technological between them. I'd like to see us do more work the open source scripting languages (in particular Ruby and Python).
Despite the abundance of work that we've had, we've still had too many projects that haven't been fulfilling enough to work on. We tend to hire people who really enjoy delivering applications that matter - and still too many projects throw up all sorts of frustrations that get in the way. To a large extent these frustrations are part of the difficulty of building enterprise software - but for our own sakes we need to be better at picking projects that minimize that particular complication. After all part of the point of ThoughtWorks is to do enjoyable and fulfilling work - money isn't the primary reason most of us are here.
Many people see me as the public face of ThoughtWorks, I'm glad that that's changing. ThoughtWorks has more speakers and authors of both prose and open source code. I daren't start naming names because it would either be too big a list or I'll upset people for missing them off. To get a sense of my noisier colleagues, keep an eye on our ThoughtBlogs feed. One of my common sayings is that there is no such thing as ThoughtWorks's corporate opinion, what we have is the opinion of our employees and this is where you'll find them.
One of my goals when I joined was to see ThoughtWorks become a truly employee controlled company. For the first few years of this decade we've had financial pressures that took priority, but now that's changing. We are now at the point where we can seriously look at how to make ThoughtWorks fully employee owned and controlled. It's a simple slogan, but not easy to sort out the mechanics for a company of our size and international scope.
(Joel Spolsky rightly points out that if you only hire 1 out of 100 applicants you can't assume you've got the top 1% (although there are more important reasons for that than those he stated.) I don't agree with him however that very able people don't change jobs.)