Technology
We are a software development company, but we believe that the choice of technology is usually a secondary factor to the success of software development. Choosing a good team of people, and ensuring that they are working in a collaborative way is almost always the first priority. However while the choice of technology is secondary it can still have a vital impact. Poor technological choices can cripple an otherwise effective team, slowing down development and breeding frustration. Conversely a good technological choice acts as an amplifier allowing an effective team to significantly boost their work.
The beginning
We started in the 1990s with C++ and Forte, with an early embrace of object-oriented technology and the world-wide web. As the 90's faded we began to use Java, but early on distrusted the EJB-heavy approaches that were popular then as they clashed with our own experiences in using similar styles of technology. As the new millennium dawned we explored .NET, finding again that our experience of how to build well-designed software in Java was often more useful than a history of work with older Microsoft technologies. A core of good design principles, coupled with a desire to work in multiple platforms, served us well then and now. In the later 2000s we made a small but significant use of the Ruby programming language and the Rails web platform, combining the flexibility of scripting with the structure of object-oriented design. Today the trio of Java, .NET, and Ruby comprise the bulk of our application development, but we continue to explore new options to help deal with the ever-growing challenges of the future. Because technology is always changing we have to balance our reliance on proven technologies of the past with exploring new platforms that give our clients an edge for the future.
We are vendor-neutral
As well as developing applications, we've also been deeply concerned in the integration of software. After all any new application needs to talk with existing systems, and an enterprise's digital infrastructure needs the ability to allow new systems to grow serendipitously. Although we've gained considerable expertise with various vendors' integration technologies, our bias leads us to the open technologies that have proven themselves on the World Wide Web.
Our preference has always been for tools that are powerful, yet not intrusive. We've used enough bloated software development systems to have a healthy distaste for technologies that look good on a marketing slide deck, but perform poorly when used in the field by able professionals. As a result we distrust tools that try to do a lot of things and prefer tools that focus on a single task and make it easy to integrate with other tools.
The best tool for the job
This preference has frequently driven us to champion open-source technologies and we've often played a role in introducing open-source tools to our clients. For us, this is not an ideological position—we happily use a lot of closed-source software (and build some too)—rather, we like to use the best tool for the job; and we've recognized that in many areas of software development open-source technologies are top-of-the-class. This has also led many ThoughtWorkers to contribute to the open-source world, contributions that ThoughtWorks does its best to encourage.
Martin Fowler is our Chief Scientist. He's an author, speaker, consultant and general loud-mouth on software development. Links to his books, on-line articles and 'bliki' can all be found here ...