The dictionary meaning of the English word “Agile” is “Able to move quickly and easily”. You will see later in this post, how this definition is true for Software development.
Waterfall methodology is a traditional Software Development Life Cycle (SDLC) which is more a linear sequential design pattern to develop software. A SDLC model consists of seven phases:- Planning, Requirements Gathering, Design & Prototyping, Software Development, Testing, Deployment and Maintenance. In waterfall model all seven phases are done one by one. You cannot move to next phase until you finish completely previous phase. The reason behind this is that output of one stage is being used as input for next stage.
The progress of software development flows in one direction like a waterfall. It is not flexible. Making changes like requirement changes or design changes etc. are costlier and time consuming. You can say waterfall model cannot adopt changes quickly. Even smaller changes can cost more.
To overcome problems of traditional waterfall model, Agile methodology comes in to picture. Let’s see how official Agile manifesto defines themselves:-
We are uncovering better ways of developing software by doing it and helping others do it.
So Agile is a set of values and principles to provide ability to develop an application in a dynamic and uncertain environment where changes are obvious and frequent , in order to respond and adapt changes in application , process , team etc. quickly with less or no complications and complete development of application timely with quality with the help of cross-functional teams.
Agile is a mindset towards the development of application where everything is not known in advance but still committed to success of it.
Advantages of being Agile:-
- Agile methodology does not say to develop complete application at a time. Development of application goes in multiple releases or iterations.
- You can opt for Agile even if you are not sure of all requirements at starting.
- You can quickly adapt changes in any phase of development of application.
- Quick gathering of stakeholders feedbacks on application under development and make possible changes.
- Change or shift development direction.
- Quick building of right software
- Analyze and improve product throughput development phases.
- Self organized team to give best in each phase.
- Engagements of software development teams ( BA, Developer, Tester etc) with clients or stakeholders.
- Transparency to everyone and you can see work is happening
- Best suited when path to software success is not clear.
We will see Agile principles and Values in upcoming posts.