Agile Software Development Movement:
Momentum and Challenges
This section first describes why and how agile software development is gaining momentum in industry, and the challenges presented by the momentum.
A. Why and How Agile Software Development is Gaining Momentum
Challenges for software development projects are well known in industry for the last few decades: Cost and schedule overruns, failure to meet the real requirements of their intended users, poor quality, failure to meet performance and scalability goals, etc. These challenges are further exacerbated by increasing pressure to develop more ambitious and complex software in shorter cycle times, at reduced cost, and in an increasingly volatile global business environment.
Quickly responding to rapidly changing and often volatile business environment (such as rapid market changes, global competitive pressures, and regulatory changes) is critical to enterprise success. Such rapid changes and volatile environment create an urgent need for agile development processes for software products and services. Agile development and project management methods are proving that they can deliver rapid results needed by the enterprise to compete in today's fast-paced marketplaces.
While
agile methods have their roots in small, co-located teams, according to a
survey by Forrester Research, Global-2000 companies (20,000-plus employees)
have the highest adoption rate at 34%, vs. companies with 1,000 to 4,999
employees at 21% and companies with 5,000 to 19,999 employees at 28%.
Recognizing growing momentum of agile methods, Microsoft Visual Studio Team System (VSTM) product includes Microsoft Solutions Framework (MSF) for Agile Software Development. In addition, partner organizations offer support for the SCRUM framework (the industry-leading agile practice).
Agile development has now a strong following in Silicon Valley at both large companies (such as Google and Yahoo!) and also at entrepreneurial start-ups. There are now venture capital firms that fund only those companies with software development teams that have proven track records in agile development.
The Agile Alliance is a nonprofit organization that promotes the concepts of agile software development as outlined in the Agile Manifesto. The Alliance reports a membership of nearly 6,000 around the world. The industry demands for engineers and managers with knowledge and experience in agile development, project management and specific agile methods (such as SCRUM) are well reflected in the job postings statistics collected by New Synergy Group from Dice and Monster job boards as of September 15, 2009 – which is in the midst of the Great Recession (see Table 3).
|
|
Jobs that need knowledge of “Agile” methods |
Jobs that need SCRUM knowledge |
|||
|
DICE |
2,792 |
873 |
|||
|
Monster |
2,033 |
572 |
B. Challenges Posed by Agile Software Development Projects
- Nature and challenges of the software project at hand (complexity, uncertainty, volatility, etc.)
- Skills, strengths and profiles of members of the software project team (management, development, quality assurance, release, delivery, customer support, etc.)
- Budget, schedule and resources
- Technology infrastructure
- Involvement and team work of all stakeholders, especially customers
- Enterprise culture
Moreover, although agile project management, process management and product management are very helpful, they are often not adequate or even the most appropriate responses in some situations. They need to be supplemented with application of lean methods, and also systems thinking and system dynamics to address systemic problems and scalability challenges. However, we come across another formidable challenge: Not many software project managers, product managers and engineers have much familiarity with lean methods, systems thinking and system dynamics discipline.
Many ideas of agile software movement of 2000’s arose from lean manufacturing movement in 1980’s and lean design in 1990’s originated in Japan. Agile software movement has incorporated many of those ideas (such as elimination or reduction of waste, increasing the flow, pull-based work, etc.) in agile software development and project management.
Deep
systems thinking requires a very good grasp of the
total picture (components of a system, and more importantly, their
interconnections) and unusual ability to develop solutions holistically
and systemically. This requires deep knowledge of the concerns and
often conflicting interests and viewpoints of multiple stake holders of a software
project (executive sponsor, product manager, paying customers, actual end users,
project manager, software engineers, quality assurance engineers, product release
engineers, product delivery engineers, post-delivery customer support team members, etc.), and very
good understanding of the enterprise culture and enterprise business dynamics.