Developers Mix and Match Agile Approaches
New functionality in Visual Studio Team System 2010 supports the Agile dev trend.
A pair of recent studies by leading dev industry research firms confirm what many developers long suspected: Agile programming methodologies are hot, and getting hotter.
According to the 2009 North American Development Survey, published in November 2009 by Evans Data Corp. (EDC), the number of developers making use of Agile programming techniques in some part of their work increased by 9 percent between fall 2008 and fall 2009. According to the survey, Agile and the related Scrum and eXtreme methodologies are the primary approach for 39 percent of responding developers, making Agile development the dominant methodology in North America. Waterfall development, by contrast, is the primary methodology of 16.5 percent of respondents.
Forrester Research Inc., in its January 2010 report, "Agile Development: Mainstream Adoption Has Changed Agility," found that up to 35 percent of respondents described their development process as Agile. Notably, Agile adoption is about equivalent in both larger and smaller development shops, indicating broad acceptance of the approach.
The size and scale of adoption surprises Dave West, senior analyst at Forrester and one of the authors of the January report.
"The numbers are pretty impressive across the board, and when talking to developers the numbers stay the same, across the size of company or industry, at something in the region of 30 percent," West explains. "The reason why this surprises me is that developers historically have always shunned process, believing that it's the province of managers, QA people or the business analyst."
The Forrester report urges dev shops to consider blending Agile and traditional programming methods in what Forrester calls a "hybrid approach." Forrester found that hybrid approaches are well suited to organizations that must fit Agile within broader release cycles, address governance and compliance requirements, and prioritize delivery of elements -- like documentation -- that go beyond software. According to Forrester's survey, more than one-third of Agile shops already employ a hybrid approach, deliberately mixing Agile with non-Agile methodologies.
The Forrester report also found that as dev teams advance in their Agile maturity, the amount of non-Agile activity tends to decrease, though not disappear entirely. The pattern reflects a pragmatic approach to Agile adoption, according to the study.
"Most teams are not adopting Scrum, eXtreme Programming or another specific Agile approach but are embracing Agile as an ethos or philosophy and cherry-picking the best bits from many different process models to develop a formula unique to their own situation," the authors wrote in the Forrester report.
EDC CEO Janel Garvin says hybrid approaches are very common in larger shops, which typically have relied on the waterfall method for complex projects. Garvin says that new software change and configuration management (SCCM) tools enable this approach by supporting both iterative and fully architected programming methods.
The EDC survey reveals widespread support for mixed Agile/non-Agile development. Nearly 60 percent of surveyed developers said they employ one or more aspects of Agile methodology in their work.
Ryan Martens is chief technology officer of Agile development solutions and consulting firm Rally Software Development Corp. He says hybrid approaches appeal to larger organizations because disparate teams are able to work on different time cycles. "The teams that are running Agile might do three or four cycles in comparison to a larger middleware team or back-end team that runs only one cycle," Martens explains.
A hybrid approach does pose some challenges. West notes that teams sometimes apply an Agile methodology only where it's easy to do so, rather than where it's really needed. And Martens points out that when teams don't fully understand what's going on, it can create adversarial situations.
"If you're intentional about what you're doing and share and let everybody understand and have awareness of what's going on, it's pretty easy to confront those issues," Martens says. "This doesn't have to be hard -- you just have to be intentional about it. But if you're unintentional about it, that's when things degrade into 'us versus them.'"
Microsoft Making Moves
According to Garvin, .NET developers are less likely to be devoted to Agile methodologies than their Java counterparts. "Even casual Java users are more likely to use the Agile model than .NET developers," Garvin says.
Microsoft is working to change that. Matt Nunn, Microsoft's group project manager for Visual Studio Team System, says Visual Studio 2010 is designed to give dev teams flexibility in adopting programming approaches. He singles out collaboration features for code sharing and peer review, as well as features like deep traceability and project monitoring and management resources.
"We're releasing a new Agile Worksheet to let Agile teams more effectively plan and track their work. We've updated process templates to support agile development; in fact, both MSF [Microsoft Solutions Framework] for Agile and MSF for CMMI [Capability Maturity Model Integration] are Agile methodologies," Nunn explains. "And we support many third-party process templates, including one for Scrum and EssUP [Essential Unified Process]."
Garvin says .NET developers can expect Visual Studio 2010 to make Agile programming much more accessible. "Support in SCCM is critical to Agile, and Microsoft's addition of test-driven development, continuous integration and single-product backlog should be a big help," she says.
Martens lauds the beefed-up testing infrastructure in Visual Studio 2010, calling it "paramount for fast Agile teams." And West praises the upcoming Visual Studio 2010 for its focus on Agile issues.
"The VS2010 release is an exciting release for Microsoft and has a large amount of focus around ALM and Agile methods," West says. "The biggest benefit to Microsoft users is explicit process support for Agile methods, which makes a number of the Agile project elements first-class citizens. The other big difference is better reporting and dashboarding, which makes running things like Scrum meetings much easier."
Microsoft in November also published the Security Development Lifecycle (SDL) 4.1a, an updated version of its secure coding guidelines and best practices for independent software developers. SDL 4.1a includes SDL for Agile Development, a revised set of guidelines adapted for Agile scenarios. Bryan Sullivan, security program manager in the Microsoft SDL team, says Agile isn't a cure-all for challenges that might face traditional waterfall-style development projects. He singles out the logistics of troubleshooting bugs in Agile projects.
"Agile teams are usually just like spiral or waterfall teams in that they love to ship code. However, sometimes this leads Agile teams to defer bugs to later iterations -- bugs that, in many cases, should just be fixed immediately," Sullivan says. "This practice is both anti-Agile, since the idea behind iterations is that they're self-contained, and anti-security in the cases where the bugs found have security implications."
SDL Agile, Sullivan says, counters this issue by guiding teams to immediately resolve bugs that pose any sort of significant risk to code functionality and robustness.
Even as Agile development continues to gain adherents, West urges developers not to throw out existing methodologies in favor of Agile approaches, but rather to focus on what they can do to improve software delivery.
"Deliver working software frequently, test throughout, support a self-directing and self-managed team, provide transparent communication and reporting, and, finally, ensure that the team takes responsibility for their process, allowing them to pick the good bits from anywhere they find them," West recommends. "If you do that, they'll be Agile; focused not on Agile methods but instead on software development agility -- a much more appropriate goal."