July 13, 2015
Why Agile Trumps Traditional Software Development
Traditional Software Development
Traditional software development is conducted in distinct stages or phases, each with a definite beginning and ending.
A typical breakdown of the different stages includes:
- Planning, feasibility study
- Requirements Work
- Release of the full feature, or an entire sub-system
Traditional software development is characterised by long cycles, which culminate in large releases.
Agile Software Development
On the other hand, agile software development uses repeated iterations called sprints.
- Sprint “0”, oftentimes a product being created from scratch
- Each sprint combines elements of requirements gathering, design, development, testing
- Release of increments (MMP, minimal marketable product)
Agile software development progresses in short cycles, often just two to four weeks long, which result in small incremental releases, e.g. 10 per year. The continual release of these increments replaces the traditional product launch.
Advantages and Disadvantages of Traditional Methods Compared to Agile
|Traditional Methods||Agile Methods|
|Feels safer, since it’s easier to a place a fixed budget and timetable on the work.||More flexible since requirements are handled iteratively and detailed over a period time.|
|It’s well-established in the software development community.||Agile methods are easy to understand and support continuous change.|
|Examples: RUP; waterfall model.||Greater focus on team work.|
|Bugs found early and continuously.|
|Proven to produce higher-quality software.|
|Development limited by requirements.||Easier to lose track of long-term objectives.|
|Assumes you have complete knowledge of the system from the start.||Time needed to master agile models and transition successfully from traditional ones.|
|More expensive and difficult to handle bugs later in the project.||Agile demands a deeper level of involvement from the client.|
|Low level of ownership of the requirements.||Harder to budget and schedule for multiple, short cycles.|
|More responsibility on the PO, since they’re responsible for all customer requirements.|
There are examples of successful and unsuccessful projects created using both agile and traditional methods.
However, agile development has been widely adopted over recent years because it is often associated with higher quality, more frequent deliveries and cooperation between client and supplier.
This contrasts with traditional development methods, which are associated with greater risks of delays and poor quality.
When is it better to use agile instead of traditional methods?
Traditional development methods are more useful when dealing with physical projects, like building a house, or a bridge. Some parts need to be done in a certain order, and you need to acquire many years of experience before you can learn how to build a house properly.
Moreover, in many countries there are standardised methods which dictate the way you can go about to building a house, e.g. starting from the foundation, then erecting the walls, and finally laying down the ceiling. Only then can you install electricity, water, and ventilation systems.
However, when building IT systems, it is often difficult to know from the beginning what you want. There are multiple possible solutions that meet some needs to varying degrees of satisfaction and several of them may be correct for you or your users.
In the latter case there’s a higher level of uncertainty and complexity. Agile methods help us deal more effectively with unknowns, including planning and requirements ambiguity.