What it takes to be agile Agile can be hard to learn, Cunningham notes: "You have to learn to master any number of techniques before you have the experience" to do agile development.
Solid programming skills are necessary for agile development, Cunningham stressed. "There's a lot of people who get into this field who actually find programming tedious and don't want to do it," Cunningham says. "If you enjoy doing it and want to do it well, that helps a lot."
Organizational obstacles can arise in implementing the agile philosophy as well. "[Agile] works well as far as looking to deliver [software] more frequently and to think about things in smaller chunks instead of the whole project," says Skip Angel, an agile coach with BigVisible Solutions. "What I think is a challenge for organizations is that they don't [have their] organization set up in a way that could provide for quicker delivery."
Projects can get bogged down in time-consuming processes, Angel adds, and developers need to use continuous integration to avoid bottlenecks.
Agile is no silver bullet, notes Ian McLeod, executive vice president of SmartBear Software, which makes application lifecycle management tools. "You still have to do it well.... You can do agile poorly," he says.
Beck recalls using agile in developing the successful JUnit Java unit testing tool in 1997. The team used short iterations, lots of unit testing, and close communications with customers.
"It helps us develop quicker and keep better track of what it is we need to do," says Wade Weston, CEO of AttainResponse, which develops unified communications systems. AttainResponse does weekly development sprints. "We do short sprints, and we are highly focused on the items that we need to do that week," Weston says.
Getting everyone on board still can be an issue, however. "One of my guys keeps telling me that he would like to have more specified requirements. I keep telling him we're going faster because we don't have specified requirements," Weston says. A hardcore requirements document is a "waste of time," he adds.
Sometimes, developers can call practices "agile" when they are really not, says Damon Poole, CTO at AccuRev, which offers project management software for agile projects. Developers might not build fully developed items, or "stories," after two-week iterations, he says. "If you're really doing agile, then the user stories are ready to actually ship after that two weeks," Poole says.
Agile programming's many methods Scrum and XP stand out as perhaps the most dominant agile methodologies. Beck characterizes XP as paying careful attention to the engineering side of development. "XP has more to say about what programmers actually do," as opposed to Scrum's project management methodology, he says.
"What distinguishes XP is that it is a system instead of a solution," says Cunningham, a contributor to XP's development. "It's a systematic approach to programming."
Scrum is focused on how to manage and deliver the work while XP hones in on how to do the work, Angel says.
Poole notes, "Scrum and XP are definitely two of the main methodologies out there and often you'll see Scrum teams adopt XP and XP teams adopt Scrum."
Another methodology is Kanban, which was derived from manufacturing processes and the concept of Lean software development, Poole says. Kanban has fewer constraints and focuses on the flow of value back to a customer, he notes. Lean focuses on organizational efficiency, optimizing values, reducing waste, and trying to make sure of good process flow, Angel adds.
RUP (Rational Unified Process) also is mentioned as a method of agile, although whether it actually is could be debated, McLeod says. RUP features a lot of documentation, which goes against the grain of agile, he explains. RUP can be an agile methodology, Ambler says: "The thing with RUP is that it's a process framework. It completely depends on how you institute it."
Ambler also cites DSDM -- Dynamic Systems Development Method -- as falling in the agile domain. "DSDM is sort of like RAD [rapid application development] with a little bit of extra process thrown in." RAD differs from agile in that it focused on iterative development but not on increased collaboration, he notes.
McLeod sees agile methodologies as being like those using iterative development. "There's not a ton of difference," he says.
The term "agile," Cunnigham says, was a word picked out at the Utah meeting. "People were referring to it as lightweight methods," he recalls. But some thought the word "lightweight" carried with it the negative connotation of being superficial, he says.
Read more about developer world in InfoWorld's Developer World Channel.
This story, "Agile development 10 years on: Did it deliver?" was originally published by InfoWorld.