More Enterprises Lean Toward Hybrid Agile Development
Proponents of Agile and lean software development methodologies say they are becoming more popular than traditional sequential methods in corporate app-dev groups, but implementation of a pure Agile method is still a rarity in the enterprise.
"The movement to Agile is fundamentally changing the way in which organizations build software,” said says Forrester Research analyst Dave West, in a keynote address during the recent HP Virtual Conference 2009. “In situations where the requirements and the technology are far from understood -- where there’s a lack of clarity -- processes become more and more complicated. So a traditional approach, which requires planning, can’t possibly work."
Enter Agile, which is gaining in popularity "in direct response to [a] lack of understanding that manifests itself in large projects," West said. Agile software development methodologies (also known as lightweight or lean methods) differ from traditional approaches, such as the waterfall method, in a number of ways. They’re based on just a few key rules and practices, all of which are relatively easy to follow. They emphasize individuals and interactions over processes, and working software over documentation.
Small focused teams, closer ongoing involvement of stake holders, and an iterative delivery process are fast becoming the order of the day. According to a recent Forrester survey of 100 senior managers, who were asked to list their primary software development model, 30 percent said that they mainly used Agile methods, 38 percent reported using iterative methods, and 32 percent reported using sequential methods, such as waterfall. By comparison, a similar survey found that only 8 to 10 percent of respondents mainly used Agile methods to delivery their software just two years earlier, West said.
Further analysis, however, reveals a more complex picture, West said. "When you ask them in a little bit more detail what that really means—when you pull back the covers—you find that there’s no one particular approach…" he said. "It might me an Agile-driven approach, but it’s actually a combination or hybrid… This is great news… It shows that developers pick the appropriate tools to solve the right problem, which means that we’re moving away from this rigorous, sequential, defined, documented process to something that’s a little bit more fluid, in direct response to business need."
SCRUM is currently the most popular Agile process, West said. But that process is being augmented with practices from another Agile method -- Extreme Programming (XP) -- with things like test-driven development and pair programming techniques for building software to solve particular problems.
Scrum is an Agile framework that structures software development into cycles of work called “sprints." Sprints are iterations of work lasting two to four weeks. During each sprint, dev teams work from a prioritized list of customer requirements, called “user stories,” which helps to ensure that the features developed first are of the highest value to the customer.
"I think SCRUM has become so popular because… it provides a very clear set of guidelines on how you can organize a self-managed, self-directed team, and really create one of these high-performance teams."
XP, which has roots in the Smalltalk community, is a system of software development practices that emphasizes such principles as collective code ownership, pair programming, and frequent testing and feedback.
"We also see organizations delivering software more frequently," West said. "Continuous integration and build is becoming, perhaps, the most important single practice as they try to get to this value faster and more frequently… And we’re seeing a lot more use of automated testing tools."
Scaled Agile, however, has a different flavor, West said. "When we see organizations trying to cross the chasm, trying to scale Agile development, we see Agile changing," he said. "We see additions in the process area. We see the use of ALM and the use of tools to really help to scale the process…"
Scaled Agile at the release level, West said, involves a mix of both lightweight methods and traditional approaches. "Even though all the teams are following Agile methods, you may still see waterfall processes being followed," he said. "Particularly in the areas of much misunderstanding, often the Agile teams focus on those, and then the integration is done using traditional approaches."
Al Hilwa, program director in IDC’s application development software group, has also seen the emergence of this methodological hybridization.
"Most serious application development projects requiring a team of more than one developer use some aspects and techniques that can be described as Agile," he said. "You will be hard-pressed today to find a development team or project anywhere that doesn’t believe in the value of iterating often, checking with users regularly and repeatedly to ensure that requirements are being met, decomposing the problem into loosely coupled and semi-independent small parts that small teams can work on relatively independently, shipping incrementally and often, and getting the code out to users as early as possible even when it’s not fully baked. Consequently, very few development teams stick to a hard methodology; most mix and match and imbue their development with Scrum and XP techniques."