There are various software development methodologies in use at the moment, but most companies choose between the traditional way to develop software or the Agile philosophy.
Here is what you will find in this article:
- What is Agile?
- Alternative to Agile development - Waterfall development
- Advantages of Agile software development
- Disadvantages of Agile software development
- Agile Manifesto
- Agile methodologies
- Our take on Agile & Client Experience
What is Agile?
Agile as a philosophy was put together in 2001 by 17 authors (the Scrum Alliance), and it is based on twelve principles and four core values, all stated in the Agile Manifesto. The Agile set of values and principles has been broadly adopted by organizations and teams needing more responsiveness to user needs and market changes. In general, Agile methodologies are easy to embrace by smaller or medium-sized companies in the software developing industry. Agile is all about moving quickly, being flexible, anticipating change, continuous improvement, transparency, trust, and openness 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 Agile methodology and the more traditional Waterfall methodology.
Alternative to Agile development - Waterfall development
Heavyweight methodologies such as Waterfall, Spiral, Iterative, or the V-Model are more traditional when speaking of 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 take into account 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. 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.
Advantages of Agile software development
Lightweight in nature, the Agile methodologies are adaptative and embrace change in the requirements at any stage of the project. This way, the technology can constantly align with the business goals. “Agile Strategy starts with “good enough.” Kicking off in only a few weeks, at a fraction of the cost and effort of traditional methods, and based on an opportunity-driven approach. This enables the organization to quickly establish an initial strategy and then, by executing on it, use the gathered evidence and insights to quickly pivot the strategy as needed.” (Agile Strategy, Building adaptability into your organization’s DNA)
One of the core values of Agile is putting the spotlight on people and interaction rather than processes and tools. The product will then become successful through the input of both the team and the client, nurturing a trust-based work relationship. As it relies on continuous collaboration with the client and a fast-paced delivery of software, the Agile model offers businesses an opportunity to get an early return on their investment. Furthermore, the methodology aims for minimum bureaucracy within the development lifecycle, and it requires constant feedback from the client.
Disadvantages of Agile software development
Now that we’ve taken a look at the Agile benefits, let’s look at the disadvantages.
Each project is different, and an initial analysis can reveal that some would benefit from a more predictive, traditional approach. If the goals and requirements are not clear or if the team’s project manager is used to working with a Waterfall model, Agile may not work as expected.
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. On the other side, Agile allows developers to deliver the product incrementally, starting with the most valuable requirements first.
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, listed below 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.
Agile methodologies are usually targeted toward small- to medium-sized teams building software in the face of vague and/or rapidly changing requirements.
The Agile mindset itself continues to evolve, from running a single team to multiple teams to a method of managing entire organizations. To sum it up, it helps companies enable business agility.
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. Originated from the manufacturing industry, Lean was used to optimize production to reduce time and resources.
In the same way, the Agile methodologies transform the software development process as it becomes more adaptable to change and, therefore, less costly and more time-efficient.
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.
- 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, Sprint Backlog, and Product Increment. The Product Backlog is a collection of desired features for the product. The Sprint Backlog is a set of tasks to be completed in the current sprint. And finally, the Product Increment is 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