The agile methodology is a software development philosophy that aims to deliver better value to customers by using shorter development cycles while including constant revisions.
Software development grew from the fields of mathematics and science. So, it originally incorporated the scientific methods from those fields.
These methods evolved into the waterfall approach in the 1970s to cater to the requirements of the day. Computers and their software in those days were large, complex, and designed to last for decades. So, the waterfall method was a good fit.
But, by the late 1990s, the internet was dramatically changing the world and a new approach became necessary. That’s how the agile methodology came to life.
Following is a closer look at this software development movement and how it can help you and your team.
History of the Agile development method
Agile software development grew from the internet and its insatiable need for applications during the boom years of the 1990s and early 2000s.
This was also a period when many developers without computer science backgrounds switched to web development because of the massive need for websites catering to different groups and industries.
Naturally, most of the startups were small. So, most developments happened in small teams, with the ultimate goal often being a fast time-to-market. As being late meant losing market share.
To counter the restrictions that the waterfall model posed on getting products to market as quickly as possible, different developers came up with different methods during the 1990s. They include Rapid Application Development (RAD), Scrum, Extreme Programming (XP), Kanban, and others.
Then, sometime in 2001, 17 developers who practiced one form of early agile development or the other, came together in Utah, USA. Then they ended their meeting by publishing the ‘Manifesto for Agile Software Development.
This manifesto is based on 4 values and 12 principles.
The 4 values and 12 principles of Agile development
From the experiences they pulled together during their meeting, the 17 developers reached an agreement on a set of values to create software more efficiently.
These four values are as follow:
- Individuals and interactions over processes and tools. This means that developing software with tools while following a specific process is important. But having competent people working together more effectively is more important.
- Working software over comprehensive documentation. This one attacks the waterfall method of first designing software and writing documentation for it before the actual software development process.
- Customer collaboration over contract negotiation. It is only by working closely with the customer or user that you can learn and develop exactly what the customer needs. This creates more value.
- Responding to change over following a plan. Following a project plan is important. But the plan must not be too rigid. It must accommodate changes to meet up with stakeholder’s expectations.
These Agile Manifesto values above are based on 12 Principles and they are as follows:
- Customer satisfaction by early and continuous delivery of valuable software.
- Welcome changing requirements, even in late development.
- Deliver working software frequently (weeks rather than months)
- Close, daily cooperation between business people and developers
- Projects are built around motivated individuals, who should be trusted
- Face-to-face conversation is the best form of communication (co-location)
- Working software is the primary measure of progress
- Sustainable development, able to maintain a constant pace
- Continuous attention to technical excellence and good design
- Simplicity—the art of maximizing the amount of work not done—is essential
- Best architectures, requirements, and designs emerge from self-organizing teams
- Regularly, the team reflects on how to become more effective and adjusts accordingly
Iterations or Sprints
Iterations or sprints in agile software development are short periods of usually 1 to 4 weeks, into which development work is broken. This makes things easier to manage, as it requires less planning.
Each team also typically consists of members with different functions, and these can include planning, analysis, design, coding, and testing.
The team works on the software at each iteration or sprint together. And they produce a working product at the end. This working piece of software is a measure of true progress, according to the Agile Manifesto.
Depending on the product and on the customer’s needs, an iteration’s product might get released into the market or not. So, it often takes many iterations for a single release.
The advantages of Agile development
As you can imagine, the agile methodology brings many advantages. They are as follows:
- Faster implementation of ideas
- More flexibility than the waterfall approach
- Improved productivity with managed iterations
- Better products through user interactions
- Errors are quickly identified and eliminated
Disadvantages of the Agile methodology
There are also some disadvantages of working with an agile development method. And they can include:
- It can be difficult to assess the complete costs at the beginning
- It needs lots of customer input
- Involves lots of unplanned work
- No clearly defined project end
When to use Agile Methods
- When you can’t estimate what the software requires
- You have enough access to customers
- You are developing a web app or an easy-to-update system
- You need to quickly capture market share with an early release
Popular Agile development frameworks
There are many popular agile development frameworks. Some started way before the Agile Manifesto of 2001, while others came later.
The goal of a framework is simply to define the rules of a method. So, while the most popular frameworks are listed below for your reference, there are many more. And you are also free to create yours or modify an existing framework to fit your team.
- Scrum: This framework is designed for teams with 10 or fewer members. Work is broken down into sprints of 2-4 weeks with daily 15-minute meetings.
- Kanban: Originating from Toyota, Kanban is a Japanese word that means billboard and is very helpful for teams that appreciate visual aids. Tasks are moved from one stage to the other using visual representations like sticky notes or apps.
- Rapid Application Development RAD: This phrase can both refer to agile software development in general or the James Martin method. RAD focuses on user interface requirements and relies heavily on prototyping.
- Lean Startup: This framework is for those who need to develop a product or service, but first, have to determine its market viability. It involves the use of experimentation to see what works and what doesn’t.
Other notable frameworks include Extreme Programming (XP), Adaptive Software Development, Agile Modeling, Dynamic Systems Development Method, and the Scaled Agile Framework.
The Agile vs Waterfall Methodologies
Here is a side-by-side look at the agile and waterfall methods for developing software. It can help to know how each method stacks against the other. So, you can easily choose the best tools for your job.
|Incremental & iterative approach||Linear & sequential life-cycle model|
|Flexible to change||Rigid implementations|
|Tests & reviews are ongoing||There is only one testing phase after completion|
|Requirements can change||Requirements are fixed after planning|
|A collection of many smaller projects||One single project|
|More customer involvement||Less customer involvement|
Adaptive vs Predictive Development
The goal of agile software development is to adapt to changes in the real world. And these are often a result of a customer’s or user’s needs. Adaptation is in stark contrast to the predictive nature of the waterfall model.
It makes sense then to use agile methods when developing systems that you are not so sure how things will turn out. Or when there are constant changes and evolution in an industry. The internet is a big example.
Else, if you are developing for a system or market that you know everything about, and which hardly changes or is immune to change. Then, the predictive nature of the waterfall philosophy might be of help.
Software Craftsmanship is another philosophy that builds on agile development principles and it focuses on emphasizing the skills of the software developers involved in a project.
The Software Craftsmanship movement also has a manifesto and it states:
As aspiring Software Craftsmen we are raising the bar of professional software development by practicing it and helping others learn the craft. Through this work we have come to value: · Not only working software, but also well-crafted software · Not only responding to change, but also steadily adding value · Not only individuals and interactions, but also a community of professionals · Not only customer collaboration, but also productive partnerships That is, in pursuit of the items on the left we have found the items on the right to be indispensable. © 2009, the undersigned. This statement may be freely copied in any form, but only in its entirety through this notice
Coming to the end of our look at the agile methodology and software development, you can see there are so many options out there.
Every team is different. And just as different teams developed their different methods to adapt to changing times. You too will have to adapt by either going with an already established framework or by adapting it to fit your team.
This is one of the nicest summaries and comparisons I have seen.
Helpful that it point out that Agile is NOT the necessary answer to all problems in enterprise SW development.