As far as trends go in development, extreme programming (XP) is a hot one. The Toronto chapter of XP/Agile Toronto has grown from 25 members in September 2001 to a current membership of 123. In Bryan Zarnett’s words, that’s “sort of a big jump” for a user group.
Zarnett, co-ordinator and founder of the group, explained the origins of what he refers to as “the original XP.” According to Zarnett, extreme programming came into being when Kent Beck was working on a project at Chrysler. While coming up with ideas on how a project should be run, he developed the XP methodology.
“The ‘extreme’ part in extreme programming refers to a series of practices. Each one of those practices is found in a variety of different methodologies. XP says that we’re going to look at these practices in programming and development and take them to the farthest human reaches,” Zarnett said.
According to Chris Rea, technology architect at MONTAGE.DMC eBusiness Services Inc. in Mississauga, Ont., the very notion of extreme programming often receives a negative initial reaction, thanks in part to its name.
Not what you think
“When you say ‘extreme,’ you get the idea of people with whips standing behind programmers who are at their computers 100 hours a week. In fact, it’s a methodology that emphasizes very reasonable ideas and common sense. At a conference, one of the speakers gave the best 20-second description of extreme programming I’ve ever heard: ‘It’s not what you think it is,'” Rea said.
He described extreme programming as a collection of practices including code reviews, testing, communication and integration. “If each of those practices was a knob on a control panel, they would all be turned to 10, for extreme programming,” he said.
The extreme programming of today is different than the XP that Zarnett was introduced to four years ago, partly, he explained because of community involvement.
“It’s very community driven. As people figure out better ways of doing things, changes are made to the way XP is done,” he said.
Extreme programming is only one of a family of agile methodologies, but is perhaps the most popular. Other agile methodologies include Highsmith’s Adaptive Software Development, Cockburn’s Crystal Family, Scrum, Feature Driven Method and Dynamic System Development Method.
According to Toronto-based management and system consultant Bob Fabian, the reason that extreme programming is the best known of these agile methodologies is due to the simple fact that it is, at this point, the most visible. However, he is quick to admit that it is not yet widely embraced at the enterprise level.
“I would think that in the absence of a believable champion within an organization, the likelihood that it would be approved would be very low. This believable champion has to be someone who is accepted and respected both up and down within the enterprise, and there aren’t that many who are in that position. Management is generally prepared to believe someone who has enough experience to have their trust, yet this person has to be close enough to the troops that they’re prepared for the personal challenge of team programming and an egoless model. It really represents a new way of working,” Fabian said.
Rea agreed, and added that many enterprises are skeptical about adopting the extreme programming model because compared to traditional methodologies, it is less documented.
“Most companies are more comfortable with traditional heavyweight methodologies – I think that people at higher levels appreciate reams of documentation. With extreme programming, it’s about travelling light and doing what documentation is necessary to communicate,” Rea said.
The benefits to extreme programming are many, according to Zarnett. Besides getting the project out on time – a project done with traditional methodology that would have a cycle time of six to 12 months would be reduced to one to two months using extreme programming – this methodology allows for very effective change control.
“A lot of extreme projects come in on time and under budget. The communication of the project’s better, the quality is better and because development and testing happen simultaneously you can get rid of the extra debugging phase,” Zarnett said.
He went on to highlight the downsides of extreme programming.
“The politically incorrect answer is that most people doing software development will never be able to do extreme programming. They don’t have the characteristics outright. It basically wipes out a majority of the people who took a six month computer course, and as a result, gets rid of a lot of people from a lot of job positions.”
Extreme programmers need to be skilled developers with excellent communication skills, Zarnett explained. In order to succeed in XP, four qualities need to exist: communication, feedback, simplicity and courage.
While Zarnett admitted that corporations are taking their first tentative steps to embracing extreme programming, Canada remains a bit conservative in adoption, when compared with the European programming community.
“Extreme programming is a fascinating idea and a fascinating set of experiments. I would be surprised if it becomes the norm, but I’d also be surprised if some of the ideas of XP don’t percolate down and become part of regular practice,” Fabian said.
The key to extreme programming is that all coding is done in pairs, with one programmer “driving” at the keyboard and the other one sitting shotgun. This aspect of extreme programming will be discussed in the next issue of ComputerWorld Canada.