Many of the conversation I have with others around agile, start (and sometimes end) with why agile methods are the first choice for what ever problem is at hand, be it software development, project management or general problem solving.
I came across the OPF (Open Process Framework) in my travels this week. I'd seen this before and lost the link. We do Process Engineering work on the commercial side of our business. On the defense side the processes are well defined around Earned Value Management and the supporting activities. This does not mean they are well implemented, but they are pretty well defined.
The OPF site has a wonderful list of issues in the business software intensive systems domains. These include:
Business Engineering
- Businesses are rarely engineered.
- Business processes are obsolete or inappropriate.
- Businesses are often poorly or inappropriately organized.
- Businesses have difficulties introducing new information technology that could enable new applications that can improve the way the businesses do business.
- Businesses are information-intensive and require numerous applications to support their business processes.
- Businesses have difficulties selecting and prioritizing new applications.
Development Organization
- Development organizations are not implementing the best industry practices and are sometimes even implementing known worst practices.
- Development organizations are improperly implementing best industry practices.
- Development processes are not properly specified and communicated to those who will use them.
System Development, Usage, and Retirement
- Systems typically contain large amounts of software, which is intrinsically intangible, abstract, and complex.
- Software-intensive systems are often highly complex due to both intrinsic and accidental complexity.
- Software-intensive systems are expensive to develop and maintain.
- Software-intensive systems requirements often do not meet customer goals.
- Software-intensive systems are typically delivered:
- Behind schedule.
- With large cost overruns.
- With less capabilities than promised or expected.
- With inadequate or obsolete documentation.
- That are neither reliable nor robust.
- Some 25% - 33% of software applications are never delivered at all.
- Software-intensive systems are often difficult to:
- Develop.
- Extend to meet new requirements.
- Integrate with legacy applications and databases.
- Port to new environments (e.g., the Web, n-tier client/server).
- Use.
- Maintenance is often complex and error-prone.
So Here's The Big Question
When there is mention that agile - or any method, process, paradigm - is mentioned as the "solution" to the woos of the software world...
What specific, tangible, fact based evidence is there that the suggested approach is better than what is being used now?
There are obvious examples of improvement, there is no doubt there. Having incremental and iterative development cycles is a no-brainer. Even DoD 5000.02 (the penultimate formal procurement specification) demands incremental and iterative processes. So that battle has been won for the writing of software or bending of metal into fighter planes.
But what about all the other things in the list above?