During the last three months, we have been working along side Thoughtworks for a governmental client. It has been exciting to experience Thoughtworks team culture of pair programming, test driven development, continuous delivery, small company environment and technical excellence.
We have worked in pairs and have enjoyed the shared ownership of the code base. We can work work on every feature of the system and this means that we can work on Ruby one day and with Java on the next. In this way, It is clear to compare how the different languages address similar concepts such as testing, aspect programming, web development frameworks and support tools among others. Every week the work can also vary greatly such as google analytics integration, new front-end features, server API end-points or performance optimization to name a few.
Continuous Integration practices are widespread and supported with: automatic deployment tools such as Jenkins and Puppet; zero-downtime deployment configuration of servers (I gave a talk at the London Ruby User Group on this topic); real-time monitoring of services with Nagios and Ganglia; support of smoke tests while deploying; and use of feature toggles for new development instead of topical branches.
Finally it has been great to attend their social events, the teams are positive, open, diverse and very united. There is also the chance to meet great authors like Martin Fowler and Jez Humble and learn even more about agile methodologies or the latest trends.