AS A CONSULTANT, I WORK WITH MANY DEVELOPERS. At each client I get to meet a new team and see how they develop software. I ’ ve seen great teams, and I ’ ve seen teams that are so broken they have never had a successful project. Over the years I ’ ve noticed that different teams along this success continuum have different traits. And I ’ ve started to formulate an idea of what makes a development team able to develop and deploy applications that are high - quality and deliver value to the business.
The observation that most people expect me to make is that the successful teams had smarter, more competent people, and certainly they did. But the teams that failed had plenty of smart people as well. Clearly intelligence is not a key factor in success.
What I observed about the successful teams was that they had a passion for technology and pride in the work they produced. They were always learning about new tools and techniques, with the aim of developing software faster and with fewer bugs. On the other hand, the less successful teams were content to stick with their old ways of doing things and never took an interest in the changes that were going on around them.
Not all those successful, passionate development teams were practicing test - driven development (TDD) when I fi rst found them. However, most of them quickly and eagerly latched on to it when introduced to the concept. These teams have found that adding the practice of test - driven development to their process of building software produced immediate, measurable results by increasing quality and reducing the number of defects in the delivered application. Passion is diffi cult to create but easy to kill. In teams that lack passion, the introduction of test - driven development has, in many cases, reignited passion in developers. This is particularly true of developers who have grown tired of doing the same kind of development day in and day out.
Passion aside, there is another very compelling reason to investigate test - driven development. Arguably the two biggest changes in recent years with the potential to reach the largest number of developers are the rise of agile methodologies and test - driven development. Often the two go hand in hand. I don ’ t believe that an agile methodology can succeed in the long term without the use of test - driven development, and I have great diffi culty seeing how test - driven development could work in a waterfall environment.
Agile is here to stay. It ’ s no longer a “ crazy cowboy coding ” way of working practiced by small development shops. Large companies that have made huge investments in structuring their IT departments around waterfalls are starting to build more and more projects with an agile methodology. Even the most bureaucratic organization in existence, government, is starting to investigate agile with great success. These developments spell out a clear reality: Developers who can work in agile environments, including the practice of test - driven development, soon will be more valuable than those who can ’ t.