Reading time: 20 minutes
Agile Development is a development strategy where the focus is to rapidly develop the software based on user requirements and constantly monitor different parts of it. It is flexible when compared to other approaches.
Agile breaks the product down into multiple functional units, based on user stories. These units are then prioritized for continuous delivery of software in short cycles called iterations. Involves feedback loops to help teams to identify and develop solutions for the ever-changing business needs.
Major concepts of Agile development involve iterative development, frequent quality checks and feedbacks, self-organization of teams, accountability, adaptation to changes and aligning development approaches in lines with the customer’s business requirements.
- A time-bound, iterative approach to software development and delivery.
- Agile is about building and delivering software incrementally, instead of delivering it in one single shot at or near project end.
- Collaboration between self-organized & cross-functional teams leads to evolution of requirements and solutions.
- Adaptive development process that fits changing business needs.
- In a nutshell, agile development refers to any product development process that is in lines with the Agile Manifesto.
1. Extreme Programming (aka XP)
Extreme programming is one of the most popular Agile methodologies widely adopted by many companies across the globe and has proven successful. This method puts a lot of emphasis on customer satisfaction. Improvement in quality and responsiveness according to changing customer needs, is the major intention behind the development of this methodology. The five essential ways by which this methodology improves a software project are : [Communication, Simplicity, Feedback, Respect & Courage.]
Developers can address change in customer requirements even later during the development cycle. The development team self-organizes around the problem to solve it as efficiently as possible. Unproductive steps in the product life cycle are cut down to reduce cost and frustration of the team.
2. Feature-driven Development (FDD)
The five basic activities involved in FDD are: [Develop overall model, Build feature list, Plan by feature, Design by feature & Build by feature.]
This method blends industry best practices into one approach.
3. Adaptive System Development (ASD)
This method requires the projects to be in a continuous state of adaptation. This method has a set of three repeating series: [Speculate, Collaborate & Learn.]
4. Dynamic Systems Development Method (DSDM)
Developed for addressing common failures of IT projects, like budget issues, missing deadlines, and lack of user involvement.
There are eight principles in Dynamic Systems Development Method (DSDM):
- Focus on the business need
- Deliver on time
- Never compromise quality
- Build incrementally from firm foundations
- Develop iteratively
- Communicate continuously and clearly
- Demonstrate control
Agile v/s Waterfall
- Agile follows an iterative and incremental approach, as weekly or monthly sprints.
- The Software is developed and delivered in multiple iterations as small modules. There is always room for resolving errors and changes can be made as the current business requirement.
- Believes in developing working software over creating detailed documentation.
- Adapts to change in the scope of the project without causing much impact on timelines and budget.
- Project priorities are evaluated at the end of each sprint. Clients can add feedback then and there, product evolves in the desired shape.
- At the end of each sprint testing is done. Any bug is identified early in the development cycle and fixed. Causes little or no impact on other code.
- The Agile is used when rapid production is needed.
- Though Agile follows iterative development approach, there might be a lack of the clear picture of what needs to be expected. The final product might be grossly different than what was intended initially.
- Waterfall follows a sequential development approach.
- The whole project is delivered at the end, cannot handle any error or change in requirements.
- The Project will not commence until the complete documentation is ready.
- Waterfall depends heavily on the initial requirements. Customers might not be able to demand change and if it happens it heavily impacts the budget and timelines.
- Customers can share feedback only after the complete product is delivered, errors or enhancements can cause the project to be scratched and started from the beginning.
- Testing is done only after the product is complete. Any bug that is created early, but discovered later can have an impact on rest of the code.
- The Waterfall is used when product definition is more important than speed.
- The Waterfall relies on definitions and documentation, both the developers and customers have a clear idea of what will be built finally.