The Agile methodology has been gaining popularity ever since the birth of the Agile Manifesto almost two decades ago.
While many software companies today swear by the Agile methodology for building software, there are pros and cons to building software the Agile way.
In this article, we’ll explore what the Agile philosophy is, the pros and cons of Agile software development, as well as our own experience with Agile.
Keep on reading or jump to the section you’re most interested in:
- What is Agile?
- Alternative to Agile development - Waterfall development
- Agile software development advantages
- Agile software development disadvantages
- Agile Manifesto
- Agile methodologies
- Our take on Agile & Client Experience
Agile philosophy is based on twelve principles and four core values stated in the Agile ‘Software Development’ Manifesto, written by 17 independent-minded software practitioners.
Since then, the Agile set of values and principles has been broadly adopted by organizations and teams that needed more responsiveness to user requirements and market changes.
In general, Agile methodologies are easy to embrace by smaller or medium-sized companies in the software development industry. Agile is all about moving quickly, being flexible, anticipating change, continuous improvement, transparency, and trust through the whole team.
To understand why Agile is beneficial to a software development team and the organization as a whole, we need to start by understanding the differences between the Agile methodology and the more traditional Waterfall methodology.
Waterfall development - the traditional way of building software
Heavyweight methodologies such as Waterfall, Spiral, Iterative, or the V-Model are more traditional software development approaches.
The Waterfall model is a well-structured plan consisting of Requirements Analysis, System Design, Implementation, Integration and Testing, Deployment, and Maintenance. All these phases cascade into each other like a waterfall.
This sequence of steps begins with a well-documented, clear, and fixed set of requirements. The product definition is also stable and determined at the beginning of a project. But the product will most likely need adjustments over time as external factors like the market or the business priorities change.
The Waterfall approach doesn’t consider the need to accommodate change and adaptability during the development process. Any alterations will take the whole process back to stage one – documentation and requirements analysis. This way of working can be frustrating for the team and it can heavily impact the product’s profitability and delivery time.
Still, the Waterfall model has some undeniable advantages too. One of them is that splitting your deliveries into multiple stages makes it easier for the project manager to maintain control over the development process. Many experienced project managers still prefer the Waterfall model because it helps them create a clear schedule in advance.
Agile software development advantages
- Shorter time to value
Because the development team ships working functionalities at the end of each Sprint, your company and users get value faster than waiting for the whole product to be delivered.
- Improved product quality and increased customer satisfaction
The overall product quality can improve as you are shipping working features every Sprint and can get user feedback fast, as opposed to wait for user feedback when the entire product is developed. The overall development process can also improve as the team meets regularly to reflect on what they can do better.
- Delivery predictability & speed
In a successful Agile implementation, the development team is able to ship working features from sprint to sprint, so the predictability of the company increases. Stakeholders and clients know what to expect when the team delivers a constant volume of features/story points every sprint.
- An engaged and motivated team
In an Agile team, everyone is equally responsible for the success or failure of the product. The team has a sort of strategic role, not a passive one, so people can feel more empowered and motivated.
- Transparency and visibility in the team
In an Agile way of working, the entire team understands the product’s vision, the limitations of the product, users’ feedback and has direct access to all the information to make decisions and deliver the best version of the product at a given time. So there is great transparency and alignment.
- Flexibility in adapting to change
One of the principles behind the Agile Manifesto states, “Business people and developers must work together daily throughout the project.” The development team is in close contact with the business as well as with end-user and can quickly learn why a specific feature should work a certain way, the limitations in implementation, and what the users are trying to achieve. And then adapt accordingly.
Agile software development disadvantages
Now that we’ve looked at the Agile benefits, let’s look at the disadvantages too.
- Little visibility over cost and project duration
A common downside is that Agile development makes it more difficult to quantify the costs and how long the total project will take, compared to Waterfall.
- It’s not suitable for every product or industry
Each software product is different, and an initial analysis can reveal that some would benefit from a more predictive, traditional approach.
If the goals and requirements are clearly defined as less likely to change, or if the team is used to working with a Waterfall model, Agile might not be the best fit.
- When Agile is done wrong, it can easily lead to chaos
Agile is a mix of flexibility and structure, and the lack of the latter can lead to chaos.
Because the focus is on people over processes, teams often make mistakes that cost them time and money:
- Maintaining a huge backlog of requirements that becomes impossible to manage
- Changing directions and priorities during the Sprint
We’ve written about the mistakes we made when adopting Agile here.
The term Agile was first used in 2001 when the Agile Manifesto was published by 17 tech and business professionals. They met to discuss the software process and were looking for alternatives to traditional software development. Under the name of the Agile Alliance, they developed a set of practices known as the Agile Fundamentals.
The main focus of Agile development projects is to assure the continuous delivery of high-quality working software, allowing companies to maintain their competitive advantage.
As stated by its authors in the Manifesto of the Agile Alliance, here are the Agile values and principles:
We are uncovering better ways of developing software by doing it, and helping others do it. Through this work, we have come to value:
- Individuals and interactions over processes and tools
- Working software over comprehensive documentation
- Customer collaboration over contract negotiation
- Responding to change over following a plan
The principles behind the Agile Manifesto are as follows:
- Our highest priority is to satisfy the client through early and continuous delivery of valuable software.
- Welcome changing requirements, even late in development. Agile processes harness change for the customer’s competitive advantage.
- Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.
- Business people and developers must work together daily throughout the project.
- Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.
- The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.
- Working software is the primary measure of progress.
- Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.
- Continuous attention to technical excellence and good design enhances agility.
- Simplicity – the art of maximizing the amount of work not done – is essential.
- The best architectures, requirements, and designs emerge from self-organizing teams.
- At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.
The term Agile is an umbrella to several lightweight software development methods such as Scrum, Extreme Programming (XP), Crystal, Dynamic Systems Development Method (DSDM), Feature Driven Development (FDD), Lean, and Kanban.
These working models are not new in the product development industry, as they derive from the Lean approach.Originating from the manufacturing industry, Lean was used to optimize production to reduce time and resources.
In the same way, Agile methodologies transform the software development process as it becomes more adaptable to change and, therefore, less costly and more time-efficient.
Let’s explore some of the most popular Agile software development methodologies.
Following the Agile Manifesto, the most commonly used Agile methodology for product development was Scrum.
Scrum is an iterative and incremental Agile software development framework. It focuses on small, self-organizing teams, working in short cycles under the guidance of a Product Owner.
Scrum Roles include the Product Owner, Scrum Master, and Scrum Team.
The Product Owner represents the client, and it’s often someone from the product management team or a key stakeholder. The Scrum Master is responsible for ensuring that the Scrum team has all the necessary tools to be as productive as possible. A regular Scrum team has 5-9 members, with a flat hierarchy (all members are considered equal).
Scrum consists of four Ceremonies:
- Sprint Planning – a meeting at the beginning of each sprint, where the content of a sprint backlog is defined.
- Sprint Review – a meeting where all interested parts can see what was done in the last sprint and adjust where needed.
- Sprint Retrospective – an opportunity for the Product Owner and the Scrum Master to evaluate how well Scrum is working for them and create a plan for the next steps. We detailed how we run Sprint Retrospective meetings in this blog article.
- Daily Scrum Meeting – takes place every day and it’s a discussion about what the team did the day before and what it will do during the current day to achieve the sprint goal, as well as potential impediments.
The cycle of the Scrum iteration
Scrum also has Artifacts that each Scrum Team needs to be aware of during the development lifecycle like:
- Product Backlog: a collection of desired features for the product
- Sprint Backlog: a set of tasks to be completed in the current sprint
- Product Increment: the output of a Sprint Backlog consisting of all items that are Done and potentially shippable.
The term Kanban comes from Japanese and it means “signboard”. This Agile method to manage workflow doesn’t define any roles or ceremonies in the way that Scrum does, but it is based on three basic principles:
- Visualization – the Kanban board with columns representing every stage of the work process helps the team visualize the process and make sure that nothing is forgotten
- Minimum passage time – called cycle time, it shows the time spent passing the project from the “to do” to the “done” stage
- Limitation of Work in Progress (WIP) – articulates the maximum possible items in the in-progress column, helping the team stay focused. This reduces waste and improves quality and flow.
Our take on Agile & Client Experience
Driven by a business landscape that is continuously changing, our clients need the maneuverability and speed that an Agile software development team can offer as an alternative to the traditional approaches. Our team members were among the first Certified Scrum Professionals in Romania. Led by Adina Balea, Director of Software Engineering Services, they were the ones that worked on the Romanian translation of the Agile Manifesto.
But adopting an Agile work approach can sometimes be difficult at first. Our clients’ dynamic and very different businesses often require us to show the capability of analyzing and constructing ingenious solutions for every step of the product-building effort.
An Agile approach helps us overcome the barriers to successful CX. The Agile philosophy is client-centric and supports ongoing adjustments based on feedback from clients. No matter how clean the code is, the developed product has to meet the client’s needs to maintain its competitive advantage in the market. Agile helps us prioritize client feedback and implement improvements that are essential to boost client experience further.
What do our team members say?
Adina Balea – Director of Software Engineering Services
“I am a believer in lifelong learning, embracing continuous change, and challenging the status quo. It is the main reason why my work is guided by Agile management and leadership principles. I support people by providing them the tools, processes, skills, inspiration, and motivation to do a great job. While the last one is the most important to have, I encourage them all to follow my motto: “If there’s a will, there is a way!”
Andreea Cazacu – Certified ScrumMaster & Product Owner
“At Wirtek, we deliver software using Agile practices, focusing on high-quality working software that satisfies our client needs.”
Cristian Olariu – Senior Software Tester, Certified Scrum Master
“Clients appreciate us because we adapted our agile work style to more quickly respond to their changing needs.”
The current business landscape is asking for adaptive planning, evolutionary development, and early delivery. Agile is the response to that need. It enables good communication within the team and also between the team and the clients. Agile fosters continuous learning and, therefore, adaptability to the environment.
Agile innovation methods have revolutionized information technology and helped companies grow by improving quality, speed to market, and the productivity of IT teams. Addressing change as the new normal and building agility into the core of any organization is the key to success in today’s business world.
Find references below:
- Course: The Fundamentals of Agile by Stephen Haunts | Pluralsight https://app.pluralsight.com/library/courses/agile-fundamentals
- Course: Kanban Fundamentals by Steve Smith | Pluralsight https://app.pluralsight.com/library/courses/kanban-fundamentals