I've recently returned from speaking at the Agile Development Conference in Salt Lake City. There were a lot of interesting conversations there, and they got me thinking about why some teams succeed and others fail.
Since I specialize in agile methods, you might expect me to say that methodology is the most important factor in team success. But I don't think it is. I think the most important difference between a successful team and a failing team is the passion and discipline of the team.
"Passion and discipline" is an odd thing to say in the business world, so I'll elaborate. First, discipline is important. Why? Because software development is a difficult, detail-oriented, time-consuming profession. It's similar to fine craftsmanship in that way. A little sloppiness or inattention can result in a major defect.
Unlike fine crafts, though, defects in software are mostly invisible. You can't see most of them until after the software has been used for a while. When a craftsman gets sloppy and gouges some wood, it's immediately obvious. When a programmer introduces a defect, he may not even know. In many case, no one notices until the software is nearly done. At that point, fixing the defect is much more expensive.
The invisibility of defects and the time pressures of software development make it tempting for programmers to be a little sloppy. More disciplined programmers resist that urge and produce higher quality results. Higher quality software leads to cheaper software that's produced more quickly, leading to more successful teams.
It's tough to mandate programmer discipline. Programmers tend to either have it or not. It's been my experience that the programmers that are disciplined are also the ones that are passionate about software development. I say "passionate" because the invisibility of software quality means the programmer has to truly love producing high-quality work.
This level of passion seems to be pretty rare. Luckily, not everybody on the team has to be this passionate. One person can infect an entire team's culture under the right circumstances. Also, a skilled leader can use process to influence the team culture. For example, Extreme Programming encourages a culture of quality by requiring programmers to show their work to a customer every two weeks.
With passion and discipline, teams can be more successful. I can help you find the right way to introduce passion and discipline into your team. If you're interested, please contact me.