Delivering High Quality Software Development Projects On-Time, On-Budget
Today’s IT organisations must do more with less in more compressed timeframes than ever before. Some of this pressure has undoubtedly been brought to bear by the business side of the organisation as a consequence of previous IT project overruns and cost blowouts. The infamous Standish Chaos Report states that less than 26% of IT projects are rated as successful and about 25% of all projects are cancelled before completion. This is not a good track record for the IT software development business.
A growing consensus of bodies agrees that a major contributor to this poor success rate is the lack of predictability in both traditional heavyweight and ad-hoc software development processes. These approaches almost inevitably lead to late scrap and rework, significant time overruns and more dollars required to finally finish the deliverable to a level acceptable to the sponsors.
However, this situation doesn’t remove the necessity to develop applications that create a unique competitive advantage for organisations that simply cannot be obtained from COTS packages. These projects often cannot be practically outsourced.
What is required is alternative approach to developing software that provides a more predicable outcome with quality software that is what the business needs when it is delivered.
An Agile Approach
Contrary to popular belief, Agile software development is not a idea from the dot-com era. Agile methods, in their various forms, have been around since the late 1980’s origionally in the guise of the Unified Process and have expanded to include more than 8 approaches to iterative and incremental development. Thus, Agile is a collective term for the many different modern approaches to software development. Over the last 10 years, there has been significant experiential and practical input to the Agile movement from some of the best minds in the industry.
Empirical evidence suggests that adopting an Agile approach can:
The Agile Challenge
One of the strengths of Agile methodologies is also one of it’s weaknesses: The huge volume of input and approaches can overwhelm the original concept. As one process size never fits all, Agile infers a huge knowledge of software development process and software engineering to be able to sort the chaff from the wheat. In practical terms, it means that the process engineer or Agile mentor has to have an enormous experience base to create even the simplest process for the smallest project.
Managing requirements: This is acknowledged as the single most challenging aspect of any project and Standish has stated that changing and incomplete requirements are the single most contributing factor to project failures. A key concept of Agile is iterative requirements management that enables requirements to evolve, in a managed fashion, throughout the project. Although highly desirable, this aspect is hard to implement as it impacts on multi-dimensional issues such as team collaboration and significant business-user involvement.
Fixed price contracts: An ongoing attraction of traditional methodologies is the focus on completing all the requirements up front to get sign-off and project estimation. Unfortunately, this has been proven over time to be a fool’s errand as there is an acknowledged “cone of uncertainty” at the beginning of any project which undermines all efforts to fully define the requirements upfront. Agile methods can address this in a number of ways; including wide band Delphi estimating or multi-phase projects.
Process scalability: An image exists that Agile processes are for small applications and can’t scale to mission critical, enterprise scale projects. This is true only to the extent that some Agile methods, like XP, were not origionally designed to address large projects. However, the fundamental tenets of Agile such as iterative development and incremental delivery have been applied in a rigorous manner with the Unified Process (on which RUP & EUP are based) on some of the world’s largest IT projects. It is simply a matter of applying the appropriate weight of process for the project under consideration.
Where ITerative Consulting helps
ITerative Consulting has significant experience as process engineers, Agile mentors and enterprise application architects. We have worked on both large and small projects in many sectors including Finance & Banking, hospitality and Government.
We create tailored Agile software development processes appropriate for your specific project that bring together the necessary software development industry best practices to ensure an optimal outcome for your project.
We also provide practical hands-on mentoring and coaching for your project team to ensure that the project moves smoothly through each phase to successful completion.