What is Agile?
Agile has nearly turned into a buzz word in the IT world nowadays – you may have heard it a number of times already. So, what is it about? Agile is a methodology of developing software, including web solutions and mobile applications, which was created as a response to the drawbacks of the more traditional waterfall approach. It is centered around frequent incremental delivery of quality software as opposed to planned sequential delivery in Waterfall approach.
The biggest difference between Agile and Waterfall is that in Agile the deliverable is produced in short iterations – from 1 to 4 weeks – while in Waterfall the deliverable is a result of a long multi-phase process.
Another thing is, in Agile, requirements are defined at the beginning of each iteration, rather than at the start of the project during a single requirements phase.
The Agile Manifesto, originally written in February 2001 by 17 software developers, contains four important values:
We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to value:
- Focus should be more on individuals and interactions instead of processes and tools
- Working software is more important than comprehensive documentation
- Customer collaboration is more vital than contract negotiation
- The process should respond to change rather than follow a plan
That is, while there is value in the items on the right, we value the items on the left more.
The core values of this declaration, though with time may be considered to be out outdated and criticised for not reflecting the current state of things, influence all modern Agile practices.
- You get working software faster and, thus, the client gets value faster with at least an intermediate prototype
- You can get feedback immediately, which improves the process and the product
- The client is involved in the process throughout every stage and can play their role in the development
- Agile teams are extremely motivated
- You can adapt to change better and at any given stage of software development incorporating the evolving requirements and ideas
- You spend less time on paperwork and do what is meaningful instead
- Risks can also be analysed and mitigated at early stages
- The process is incremental, so, both the team and the client know the status of tasks, which reduces risks
- It is difficult to define the cost of the complete project at its start due to the changing requirements
- The team must consist of very skilled players
- Agile needs a lot of interaction between team members which demands more time
- Since it is difficult to maintain all of the information in a project it takes time for new team players to fully join the team
- It is more difficult to measure progress than in Waterfall methodologies
What is Waterfall?
Waterfall model is sequential – the development team moves onto the next phase of SDLC (software development life-cycle) only if the previous one has been completed. Software development in this model has a clearly defined goal. Requirements collected at the beginning of the process define the final look and functioning of the product.
- Each waterfall project goes through a fixed number of phases:
- Requirement Analysis
- System Design
- System testing
- System Deployment
- System Maintenance
- It is easier to apply on small projects with clearly set goals
- Each Waterfall project moves towards one clearly defined goal, so it’s easier not to lose focus in too much detail
- It is easier to understand what the final product will look like
- All the information is meticulously documented, so, in case of personnel changes, it will be easier for new team members to get up to speed
- It doesn’t adapt to changes in requirements
- It takes a lot of time and effort to keep all the documentation up-to-date
- It is next to impossible to move to the previous phase and make changes.
- There is no MVP (minimum viable product) which is demonstrated intermediately
- It is not suitable for big and complex projects due to increased risks
- It is not suitable for projects with frequently changing requirements
- Because testing is performed at later stages, it is not possible to identify and mitigate risks in early phases
- It doesn’t allow feedback until after the project is completed
Each approach is helpful in its own way. We at meatmins are experienced in both the methodologies, since we work with various projects. Drop us a message if you are about to start a software development project and are looking for an offshoring partner.