Downsides of agile methodology
Implementing agile methodology through various systems
Software development project management has various methodologies that are used to increase productivity and optimize workflows. Agile methodology is just one of them and it’s an extremely popular one.
It became so widespread among project managers because it focuses both on the result and the people but also embraces changes. This means Agile projects are convenient for customers and developers alike.
Clients can be sure their demands are fulfilled while project teams know there will be no need to recreate all the work in a situation when a mistake is made. So let’s talk about the Agile methodology process and see how it can be beneficial for your project.
Back before Agile methodology existed, Waterfall methods were used most commonly in software development. This meant that before a project even started, multiple specifications had to be made. Developers were guided by a document with business requirements, but creating the document took a long time as every detail from functional specifications to a strict plan was captured there. As a result, even before the project was handed down to developers, a lot of time was wasted.
Next, when developers finally started to follow a plan, they might have come across difficulties or needs to implement changes. As the documents were quite lengthy, it was easier to make mistakes and accidentally skip some requirements because they were lost in the burden of extra specifications. That meant the whole project was supposed to begin with the basics again. Altogether, the creation of a certain piece of software could take up to 1-2 years of work.
In the mid-90s, the demand for a new methodology arose. Agile methodology wasn’t born immediately back then, but people started injecting changes into their regular workflows, mixing various approaches and generally searching for a more efficient way to manage software development projects.
It was discovered that approaches that enhance communication between clients and teams provide the most successful results. Other useful features shared by these approaches included self-organizing teams, regular deliveries of working products as well as transparency among the workers who are involved in the project. These approaches were later formalized in the form of various frameworks such as Scrum, Extreme Programming, and many others.
Still, these approaches were lacking specification and precision. It was only in February 2001 when a group of software developers got together and came up with the Manifesto for Agile Software Development. This document contained 12 of the main principles common to all Agile projects regardless of the chosen way to implement the methodology.
Nowadays, Agile methodology has become so widespread that it led to the creation of organizations that help to adopt Agile ideas. One of the first organizations of this type - Agile Alliance - was formed back in late 2001 to curate and improve the principles of Agile software development. They are still around to this day.
Agile methodology can be briefly described as a concept of project management that includes the creation of a plan for a shorter period of time called “sprint”, analyzing its results, and implementing changes in the upcoming sprint if needed.
There are four key pillars that Agile methodology is based on and they go like this:
People and interactions over tools and processes;
Working products are more important than detailed documents;
Customers involved in product creation over requirements that are set in stone;
Implementing changes if needed instead of sticking to the plan strictly.
In addition to that, you have the Manifesto for Agile Software Development that consists of 12 main principles. Let’s list them here:
Agile software methodologies serve as a great basis for a great system that can provide solid results regularly. But there are certain environments where Agile methodology perfectly suits the needs of workers:
Companies that need closer contact with their customers during the whole project lifetime;
Projects that require a base product or a prototype before working on the final version;
Projects with multiple tasks that require strong collaboration between developers;
Projects depending on regular customer feedback;
Projects that have no specific outcome planned or those with a vague set of requirements.
In these cases, Agile methodology will allow teams to take each necessity into consideration and eventually deliver a working product that corresponds with the customer demands.There are other benefits Agile methodology can bring to any software development environment and project management in general:
Regular updates that are associated with quicker product delivery. Instead of working on a project for a year with the only delivery of the final product, Agile management suggests regular updates in periods varying from one week to one month. That doesn’t affect the quality in a negative way and allows customers to get a working version of their required product faster. This version is still available for changes and iterations as it is not the final result that can’t be changed without starting the work from the beginning;
Regular communication with the customer. Other project management methodologies, such as Waterfall, don’t imply communicating with the customer too often. Instead, they imply discussing specifications in the beginning and presenting the working product at the end. Agile methodology features a collaboration between the customer and the team of developers which allows to keep on track with the requirements and implement iterations systematically;
The possibility of changes. With constant communication and regular delivery of the working product, customers get the chance to detect the flaws and point them out for further correction. Since the result provided is not the final one, it is much easier to iterate it and come up with more satisfactory results;
It lowers project risks. As it is much easier to detect the issues timely and fix them, Agile methodology lowers any chances of completely failing the project. It is much more simple for developers to deal with petty changes and issues rather than recreating the whole project because of a mistake that was not detected back in the earlier stages. Financial risks are lowered as well because the time spent fixing bugs is not extended. Such timely iterations eliminate the possibility of making the project longer than expected which also results in much lower financial costs from the customer’s side.
Even though Agile methodology might seem just perfect, there are also several important drawbacks that should be taken into consideration when choosing a methodology for your project.
The base of Agile methodology is denying overwhelming amounts of documentation that distract the team from the main objective. But that can be seen as a disadvantage as well. In constantly changing environments where new team members might join the group anytime, it will be harder to clarify the situation to newcomers. Lack of documents also makes it harder to create final reports, especially since the requirements are constantly changing.
Agile projects can start with little to no specifications from the customer and change them as the project moves along. And even though that doesn’t form any limitations to developers, it may also result in a misunderstanding that leads to creating a product the customer won’t be satisfied with. And with no definite result, some customers might be tempted to iterate the product more and more, applying additional features that were not there initially. This also leads to costs rising.
Even though it is thought that daily meetings are supposed to enhance collaboration and clarify the issues, they also require time and involvement from both the customer and the team of developers. Everyone should find some time in their schedule to prepare for these meetings.
Users and testers should also be available every day to systematically approve the existing results so that the developers could move on. This means even such important things as meetings might require too much energy and commitment which eventually might become an issue influencing the developers’ work.
As we already said before, Agile principles are implemented through various systems. We suggest looking into several types of Agile methodology starting with the ones listed below.
Scrum is one of the most popular types of Agile methodology based on sprints. Here, working on a project starts with a customer creating a list of particular features they want to see in a product. Scrum team breaks a task into smaller pieces that can be completed within a sprint, which is typically 1-2 weeks long. Each period has a sprint backlog with requirements for the current sprint. When a sprint is over, the customer reviews the resulting product, suggests iterations, and a new sprint with a new backlog begins.
Scrum teams are usually small in size and consist of 7-9 people. Each person in a Scrum team has their own role:
Scrum master who organizes meetings and keeps the team motivated and focused on their final goal;
Product owner who works with the backlog. Product owner’s responsibilities are to create a backlog and set the right priorities to tasks so that the team could come up with a working iteration;
Scrum team is responsible for organizing their work themselves with the goal to complete backlog goals at the end of a sprint.
Extreme Programming is one of the types of Agile methodology that is especially convenient for teams that face constant changes from the customer. It focuses on delivering a working product that matches the current customer demands as fast as possible. These products include improvements and changes of the previous version but also have space for new iterations.Iterations are implemented regularly within 14 days. Each cycle consists of 6 main stages:
Planning. This is the phase when main requirements are specified and the information about the upcoming project is gathered. Stakeholders and sponsors are also defined during this stage;
Analysis. Business requirements in Extreme Programming are reflected in Stories. They are stored in a Parking lot. During this phase, Stories are created and placed into a Parking lot in the correct order. Approximate timing is estimated as well;
Execution. This is when most of the work is done, which includes coding, testing, reviewing iterations, and more;
Wrapping. During this stage, small releases are made and new stories are created if needed, improvements are made as well;
Closure. This is the final stage leading to the product launch.
Crystal methodology is a set of ways used to implement Agile. They include Crystal Clear, Crystal Yellow, Crystal Orange, and many other approaches hidden under the Crystal umbrella term. Depending on the one you choose, it might be more suitable for bigger or smaller teams, longer or shorter planned project lifecycle.
Like other types of Agile methodology, the Crystal approach means less documentation with the goal to focus on results and individuals more. There is a set of pre-set roles in Crystal that mainly include Project Sponsor, Designers and Programmers, Unit Testers and Users, but the number of roles might be extended.Crystal uses three main principles:
Being client-oriented. That means customers are involved in the work process at any given stage of product development;
Frequent product deliveries. They guarantee that the client sees the whole project transparently and is able to suggest changes when needed. Developers also work in shorter cycles completing brief, understandable tasks;
Iterative approach. In case any changes are suggested by the customer, they can be implemented regardless of the stage a project currently is on.
Lean software development follows these main principles:
No waste. There are many things that can be called waste in software development. Those include unnecessary functions and unclear requirements, overwhelming documentation and overloading developers with tasks. Lean development aims at eliminating such wasteful practices;
Quality-built work. This is achieved by automating certain processes, reducing wait states, and receiving constant feedback that can be taken into consideration;
Fast product delivery. Lean methodology addresses the question of issues that slow down teamwork. The easiest solution is to simplify the tasks for the developers, but there are other issues that can be found across teams;
Individual respect. Problems are solved through communication and discussion, workers encourage and empower each other. Effective inter-team communication also leads to improving work results;
Optimizing the whole thing. Instead of addressing one issue and wasting time to solve it, Lean programming suggests optimizing the work environment as a whole, which might prevent problems.
We tried to break down the main ideas of what Agile methodology is and present every detail that might be important while considering Agile project management as the main approach for your project. It is extremely important to choose the right way of managing a team as it influences successful performance and regular results. With various Agile techniques, it is possible to find the right way of implementing Agile methodology into your current situation while considering important features and individual characteristics of the work environment you have.