Agile is a project management methodology, applied in software development, that is concerned with breaking down a large task into shorter phases or stages.
With this, agile focuses more on the effective completion of each stage of the task rather than just the final delivery of the task.
Agile, in software development, is an iterative approach that displaced the old-fashioned software development approach because it allows the delivery of the software in consumable stages, one stage at a time and not just at once.
Agile aims to first, produce a small working software (minimum viable product), launch it, and then continuously add features that will improve the functionality of the software, instead of just waiting till all work is done before launching the software.
Each stage of the Agile software development is dependent on the previous stages, and they can be continuously reassessed and adjusted to the changes required of the software.
For easier understanding, let’s take a look at a logical and relatable explanation of how Agile methodology works.
As a newly-employed worker, you want to rent an apartment that is close to your new workplace. Your dream apartment contains:
- A bedroom with a bed, a closet, a work table and chair, and a bookshelf.
- A kitchen with basic kitchen appliances like the sink, cupboards, and plate rack.
- A bathroom and a toilet
- A living area with couches, a center table, and a TV.
However, at the moment, the only apartment you can afford contains:
- A bedroom with just a bed and a closet
- A kitchen that lacks most of the necessary appliances
- A bathroom without a shower faucet or bathtub
- An empty living area.
To be able to develop your current apartment into your dream apartment, you need to work for a year and then use your salaries earned to refurbish the apartment.
Instead of waiting to refurbish the apartment after a year, you decide to start living in the apartment like that and then, gradually refurbish(with your monthly salaries) and adjust it to the changes you need to make to build it into your dream apartment.
The current state of your apartment is the product of the first stage of Agile software development. It is called the MVP( the minimum viable product) i.e the product (your current apartment) is consumable( you can live in it) but it is not the final product (your dream apartment).
The refurbishment that you subsequently make to further develop your apartment are the features that are added to the MVP of the software to further develop its use until the final state of the software is ready.
Using Agile methodology in your software development allows your software to hit the market first for use before the subsequent beneficial features are then included.
Agile software development manifesto
A group of seventeen professional software developers came together in 2001, at a resort in Utah, Snowbird, and decided that they’d had enough of heavyweight software development processes that are complicated, documentation-driven, and less yielding in results.
This group of developers( they call themselves Agile Alliance) wanted to make software development easier and customer-driven and as a result, proposed the Agile software development manifesto.
The Agile software development manifesto, also called the Agile manifesto, is a written document that describes:
- Four key values
- Twelve key principles
The values and principles proposed by the Agile manifesto are set to promote software development in stages and at a specified time(iterations). This way, it makes it easier to identify the errors and eradicate them at each stage of software development, thus, minimizing the risk of mistakes and incurring customers’ dissatisfaction.
The four values in the Agile manifesto include:
- Individuals and interactions over processes and tools.
- Working software over comprehensive documentation
- Customer collaboration over contract negotiation
- Responding to change by following a plan
The Agile Alliance further commented that while there is value in the items on the right, they value the items on the left more.
Why is that?
Let’s discuss each value to see why the items on the left are of more importance than the items on the right.
Individuals and interactions over processes and tools
This value places the importance on people and communication over the processes and tools involved in software development.
This is because, while it is important to have the necessary tech- tools and well laid out processes for a software development that is aimed towards producing a successful software, collaborative teamwork and effective interaction amongst the software developers results in understanding and relating to the customers better in terms of what they want and how the software can benefit the customers.
Although it is paramount to successfully develop the software, the successful functioning of the software for the customer’s use is of more importance.
Working software over comprehensive documentation
The traditional software development process takes pride in the documentation more than in developing the software itself.
The agile methodology disagrees with this development process. Keeping accounts and documenting the process of developing the software shouldn’t be more important than making the software work itself.
If the software doesn’t work, then of what use is documenting the process of developing it?
Instead, a working software is given more value than its documentation.
Customer collaboration over contract negotiation
The Agile methodology values customers’ experience, their complaints, and feedback more than what the software negotiates to do for the customers.
Contract negotiation focuses on what the software delivers to the customers in the end. It doesn’t care about the customers’ opinions about the software.
However, the Agile methodology proposes that building a tight feedback loop between the customers and the software developers will ensure smooth delivery of the software, with minimal or no risks of mistakes and errors in the course of use.
Agile aims to satisfy the customers’ needs better this way.
Responding to change over following a plan
Before the development of software, having a plan to follow is essential. But, should a plan that is too rigid to support vital changes during the software development process be followed?
The answer to this question is the reason why Agile values a plan that responds to changes over one that doesn’t.
The old-fashioned methodology follows a pre-made plan until the software is finalized without leaving gaps for changes to be made.
With Agile, a plan can be altered during software development to further better its features until the finalized software is ready.
The twelve principles proposed by Agile Alliance are:
- Satisfying customers through early and continuous delivery of valuable work
- Breaking big work down into smaller tasks that can be completed quickly.
- Recognizes that the best work emerges from self-organized teams.
- Providing motivated individuals with the environment and support they need and trust them to get the job done
- Creating processes that promote sustainable efforts
- Maintaining a constant pace for completed work
- Welcoming change requirements, even late in a project
- Assembling the project team and business owners daily throughout the project
- Having the team reflect at regular intervals on how to become more effective, then tuning and adjusting behavior accordingly.
- Measuring progress by the amount of completed work
- Continually seeking excellence
- Harnessing change for a competitive advantage.
Agile software development life cycle (SDLC)
Agile software development life cycle (SDLC) is the cycle that each phase of software development passes through throughout software development.
The lifecycle is composed of 5 stages and they are:
- Concept
- Inception
- Iteration
- Release
- Production
Concept
This is the stage of first point contact between the software owner and software developer(s). The software owner presents, explains, and analyses the scope and concept of the software project with the software developer.
The software developer notes the key requirements of the software; the purpose, benefits and functions, duration of the software development, necessary features to be added and ideas to be realized.
All these would be documented and referred to during the software development.
Inception
This stage commences after all the detailing and documentation have been completed.
At this point, the team of developers that will work on the software project will be chosen. With the necessary tech tools and resources, the design of the software will be drafted with contributions from the team members.
After the design is drafted, the funding for the project would be discussed and the decisions would be relayed to the software owner to determine if the project is feasible or not.
Iteration
This is one of the vital stages in the Agile SDLC. It is at this stage that the large process of software development is broken down into shorter phases. Each phase is bounded by a fixed timebox (iterations/ sprints) that are attended to in order of their priority.
At the end of each iteration, an incremental value is expected for the previously developed phases.
This stage helps the team of developers to evaluate and test the functionality, quality, and fitness for use features of the developing software.
The iteration stage involves a 4 stage cycle(PDCA) that is constantly repeated for each broken-down phase of software development. The 4 stage cycle includes:
- P- Planning stage, where the team plans how to generate an incremental value for the developing software
- D- Do stage, where the plans are being implemented into actions
- C- Check Stage, where the results are checked with the team of developers and with the software owners the software to see if any incremental value is added.
- A- Adjustment stage, where adjustment is made where necessary in the developing software.
Release
This stage is where the minor final changes are made to the software. Here, the quality assurance for the software is obtained, changes are made both from the software owner end and the developer’s end, and the final iteration is implemented.
Production
The software development is finalized at this point, and its aim to satisfy customers’ needs and complaints is realized.