If you are a developer or project manager that keeps up on trending technology topics, by now you have no doubt heard about the Agile development methodology. The idea behind Agile development and its role in the software development lifecycle (SDLC) has been around for quite some time. Despite its longevity, there is still some confusion with regards to what Agile development is, how its benefits developers, and how it differs from other programming methodologies, like Waterfall and DevOps. We will discuss some of those topics in this very article, alongside some related terms and Agile project management frameworks.
What is Agile Project Management
Before defining Agile as an SDLC methodology, let us first explore a quick definition for project management as it relates to software development. Project management, briefly, is the use of resources, skills, knowledge, and available tools to produce and deploy a product or a service that has value for the audience. It can be anything from construction to healthcare or any other project, though in our case we will focus on software.
Agile as a project management methodology is an approach based on dividing the project into multiple interconnected phases. Agile includes continuous collaboration with customers and stakeholders alongside constant development of the product in all phases. The workflow takes the shape of a circular cycle of planning, executing, and evaluating. The atmosphere of cooperation between the team and stakeholders is the cornerstone of Agile.
In addition to a standard definition of Agile, we can look at the following features of Agile:
- Agile tends to focus on short time frames of work rounds or sprints.
- Agile main goals are to facilitate adaptability and iteration.
- Building gradual and iterative steps to achieving projects.
- Prioritizing quick initial delivery for getting feedback.
- Structural flexibility to support making changes during the project.
- Avoid rigidity and old approaches that need literal commitment.
- Getting customers’ satisfaction rather than implementing literal agreements.
- Open workplaces with an interest to motivate teamwork.
- Adapting new Agile values and mindsets in the company management and team.
Agile Core Values
In 2001, the Agile Manifesto of Software Development was published. It helped define Agile in distinguishing between applying some of the Agile properties and applying a complete Agile mindset.
The Agile Manifesto has four main values, per the following:
- Individuals and interactions over processes and tools
- Working software over comprehensive documentation
- Customer collaboration over contract negotiation
- Responding to change over following a plan
Agile Terms and Agile Frameworks
In addition to Agile as a general umbrella, there are other related terms and types of Agile management. Some of them are considered part of Agile and others are different doctrines.
Kanban: Kanban is a method in project management where the team makes visual representations of their tasks as carton cards or sticky notes on whiteboards. The work progress is transparent, and anyone can monitor it.
Scrum: Another project management tool that makes small teams guided by an agile leader called a Scrum master. Its job is not to strictly manage the team, but to eliminate any roadblocks that prevent completing work. The work also is achieved via “sprints” which are short cycles. There is also a short daily meeting or huddle to discuss work.
Adaptive Project Framework (APF): A project management methodology based on results from previous experiences stating that IT projects can’t achieve their essential goals through waterfall project management, but rather, via implementing early delivery and evaluating after each short stage in the development cycle.
Extreme Project Management (XPM): A project management methodology focusing on allowing a constant change in every element of the project; plan, budget, and final deliverable, according to evolving needs, which are many in the IT industry.
Waterfall versus Agile
Until the DevOps approach emerged, the options for project development for developers was between Waterfall (the traditional approach) and Agile (the modern approach). In all cases, software development projects are implemented according to the software development life cycle (SDLC). An SDLC determines stages of development and the general workflow from one stage to another.
Waterfall project management is an approach inherited from engineering and construction industry systems. In the early days of software development, Waterfall was applied. This method is based on strict separation between all stages. The name Waterfall itself refers to the impossibility to return the water after it falls down. The results mostly don’t match needs, unlike the construction, because of the continuous change of the IT industry and market.
On the other hand, as we mentioned above, Agile has solved most of the faults in Waterfall. However, as time and as the evolution of technology continues, many new challenges have appeared that need further enhancement in the project management methodology. Fortunately, Agile wasn’t an obstacle, but was, instead, a great ground to evolve and expand to become the DevOps methodology.
Agile versus DevOps
That does not mean Agile is an outdated approach, nor is Agile technically DevOps – or vice versa. DevOps is viewed as being based on the original Agile culture and adding further scope, it includes the relation between operations and the development team. As opposed to just between the development team and stakeholder as in a usual Agile approach.
By filling the gap between operations and development, DevOps can focus on faster, automated deploying code cycles. This further stems from the fact that establishing new editions and releases are infinite, especially when the cloud and software as a service become the default way.
In brief, Waterfall was the cornerstone for project management in software development but is seen to be an obstacle in modern SDLC approaches. Agile fills gaps in stakeholders and developer communications, while DevOps evolved to fill gaps in developer and IT operations communications as a new methodology.