The History of Agile for Developers
Agile software development is widely accepted as the premier style of project management today. However, this was not always the case. Not two decades ago, Agile was yet to be created. More traditional methods of software development, such as waterfall, were used by most organizations. The rise to popularity of Agile is a consequential story. Developers and their role in software development are possibly the most affected by the history of Agile.
Waterfall Development History
Before Agile software development, waterfall was the preferred method of project management. The name comes from the way a product cascades through stages in one direction. At the most basic level, the steps of waterfall software development are requirements, design, implementation, verification, and maintenance. While some of these may sound similar to the steps of Agile software development, the fact that they only happen once per project is the key difference.
Waterfall Development Requirements
Requirements are set early and are difficult or impossible to change later. Customers must give an accurate depiction of what they want before they ever see any working software. Once development has begun, customers cannot change their minds since their requirements have already been committed. For developers, requirements will ultimately become programming assignments. Even if individual requirements turn out to be much more work than anticipated or generally bad ideas, they are part of the project and must be finished.
Similar to the requirements phase, the design is completed fully for all parts and features of a product. The development team must map out exactly how everything will be created, and stick to this plan. While planning and research are useful, it is cumbersome to require that a design is set in stone from the beginning. Developers occasionally find more efficient ways for a feature to work after development has begun. Since waterfall relies on all pieces fitting together the same way from start to finish, developers may be unable to make these changes. Their hands are tied, since revisiting requirements and design are often unfeasible.
Waterfall Development Implementation
Implementation, the step in which developers actually write code, is very rigid and inconvenient in waterfall development. Instead of allowing developers the creativity to make the code work in the way they see fit, they must stick to the completed design. Inevitably, this means that programming takes longer to finish. Also, developers might be less familiar with the design than what they may have chosen to use otherwise. This leaves them without as firm of an understanding of the code and often results in programming errors.
Waterfall Development Verification
Verification makes sure that software is working the way it was intended to. Software products can be extremely complex and may interact with unfamiliar applications, so the potential for bugs and issues with the product is high. The developers need to fix these before it goes to customers. The problem with verification in waterfall development is how quickly technical debt builds up, and how difficult it can be to address. Since everything up to this point sticks to the original requirements and design, changes and fixes must also keep up with documentation from the very beginning of the process. This can make an ideal fix hard to come up with, and increase the time it takes to implement. Developers in waterfall have fewer tools at their disposal and are thus less efficient at fixing bugs.
Our Favourite Agile Books
We found these books great for finding out more information on Agile Scrum: