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:
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.
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.
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.
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.
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.
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.
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.
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.
Now that we’ve looked at the Agile benefits, let’s look at the disadvantages too.
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.
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.
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:
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:
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).
The cycle of the Scrum iteration
Scrum also has Artifacts that each Scrum Team needs to be aware of during the development lifecycle like:
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:
Kanban board
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.
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.
Resources
Find references below: