Table of content
History of agile methodology
What is agile methodology
Benefits of agile methodology
Downsides of agile methodology
Implementing agile methodology through various systems
Software development project management has various methodologies which are implemented for changing the workflow into a more efficient way. Agile methodology is just one of them yet an extremely popular one. It became so common among project managers because the approach both focuses on result and people but also embraces change. This means agile projects are both convenient for customers and developers. Clients can be sure their demands will be fulfilled, while the workers know there will be no need in recreating all the work in a situation when a mistake is done. We suggest to dig into the details of agile methodology process and see how it can be beneficial for your project.
History of agile methodology
Back before agile methodology existed, Waterfall methods were used most commonly in software development. That meant before a project even started multiple specifications should have been made. Developers followed 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 creation of a certain software could lead to 1 or 2 years of work.
In the mid-nineties a demand for a new methodology arose. Agile methodology wasn’t born immediately back then, but people started implementing changes into their regular workflow, mixing various approaches and generally searching for a more efficient way to manage software development projects.
It was discovered that approaches which enhance communication of clients and a team of workers provide the most successful results. Other features to look for in an approach approach included self-organizing teams, regular deliveries of working products as well as transparency among the workers who are involved into the project. These approaches were later on specified in terms of various frameworks such as Scrum, Extreme Programming and many others.
Still these approaches needed specification and precision. But it was only in February 2001 that a group of software developers gathered 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, as agile methodology became so widespread, organizations which help to adopt Agile ideas were created. Later in 2001 Agile Alliance was formed as a first organization which curates and works on improving the principles of agile software development. It has been working on this goal since then.
What is agile methodology
Agile methodologies can be briefly described as a concept of project management which includes creation of a plan for a shorter period of time called sprint, analysing its results and implementing change in the upcoming sprint if needed.
There are four key pillars which agile methodology is based off. Those mean:
- Value of people and interactions rather than tools and processes;
- Working products are more important than detailed documents;
- Customers involved into product creation rather than specifying the demands once and for all;
- Implementing change if needed instead of sticking to a plan strictly.
The Manifesto for Agile Software Development consists of 12 main principles as well. Those include:
- Providing customers with the results of work constantly within the negotiated period of time. That means, after a sprint is over customers have the opportunity to see the current result, instead of getting a final unchangeable software;
- Embracing the necessity to make changes in order to satisfy a customer. Unlike Waterfall project management where iterations are not possible because a strictly developed plan, agile methodology implies that alterations should be welcome anytime, even on later stages of the project;
- Using shorter timelines for creating working products. Rather than having a distant deadline, agile methodology suggests working in sprints which vary between 1- and 4-weeks length. Each of the sprints result in delivery of a software which can be presented to a customer;
- Collaboration between business stakeholders and developers. This is thought to be the most efficient way to come up with satisfactory results. This is also why regular meetings are welcome in various methods implementing agile;
- Giving autonomy to people working on a project. Agile methodologies imply that people are trusted and therefore expected to give better results. When a team is created, project managers should consider personal traits and abilities of each developer instead of solely thinking about their job position;
- Face-to-face communication. This is another thing crucial for agile projects. Most commonly a daily meeting is organized to catch up on current situation. But that doesn’t mean agile methodology can’t be applied to teams working remotely, as a conference via skype can work as well;
- Working deliverables as the main measure of success. Such products are also the main feature which allows to estimate the work;
- Sustainability. Agile methodology implies that a pace chosen for developers should be maintained indefinitely. That also means no overloads and a stress-free environment, but results in a higher quality product because no one involved in product creation feels the pressure;
- Constant improvement. Each iteration made is implemented with the aim to overcome the quality of a previous product version and come up with a perfectly working product with good design in the end;
- Simplifying the work process. Agile management means eliminating documentation, requirements and other processes which distract from the main aim of the project but still require a big amount of time in regular projects;
- Giving freedom to teams. Self-organizing teams mean that the work is done more efficiently due to team members knowing their own capabilities and cooperating in order to achieve better results faster;
- Reviewing performance regularly. That also includes feedback from the team itself. With that done it is easier to find the flaws in the workflow and generally adjust the process to current needs.
Benefits of agile methodology
Agile software methodologies suggest a great system which allows to provide results regularly. But there are certain environments where it perfectly suits the needs of workers:
- Companies which need closer contact with their customers during the whole project lifetime;
- Projects which require a base product or a prototype before working on a final version;
- Projects with multiple tasks which require strong collaboration among developers;
- Projects depending on regular customer’s feedback;
- Projects which have no specific outcome planned or those with vague set of requirements.
In those cases agile development methodologies will allow to take each necessity into consideration and eventually deliver a working product which corresponds with the demands of a customer.
But there are other benefits agile methodology can bring to any software development environment and project management in general:
- Regular updates which are associated with quicker product delivery. Instead of working on a project for a year with the only delivery of an end product which is harder to iterate, agile management suggests updates regularly in the terms varying from one week to one month. That doesn’t influence the quality in a negative way and rather 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 a final result which can’t be changed without starting the work from the beginning;
- Regular communication with a customer. Other project management methodologies, such as Waterfall, don’t imply communicating with a customer too often rather than discussing specifications in the beginning and presenting a working product at the end of a term. Agile methodology advises to organize collaboration between a customer and a team of developers which allows to keep on track with the requirements and implement iterations systematically;
- The possibility of change. With constant communication and regular delivery of a working product, customers get the chance to detect the flaws and point them out for further correction. As it is implied that the version provided is not a 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 find the forces to 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 a whole project because of a mistake which was not detected back on earlier stages. Financial risks are lowered as well, because the time spent fixing bugs is not extended. Such timely iterations eliminate the possibility to make the project longer than expected which also results in much lower financial costs from the side of a customer.
Downsides of agile methodology
Even though agile methodology might seem just perfect, there are also several important drawbacks which should be taken into consideration while choosing a methodology for your project.
Lack of documentation
The base of agile methodology is denying overwhelming amounts of documentation which distract from the main aim of a project. But that can be 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.
Difficult to follow
Agile projects can start with little to no specifications from the side of a customer and adjust to the demands as the work goes. And even though that doesn’t form any limitations to developers, it may also result in misunderstandings which lead to creating a product a 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 which were not specified initially. This also leads to costs rising.
Daily meetings as a distraction
Even though it is thought that daily meetings are supposed to enhance collaboration and clarify the issues timely, they also require time and involvement both from the side of a customer and a team of developers. Everyone should find time in their schedule which can be devoted to preparing for a meeting. Users and testers should also be available daily to systematically approve the existing result so that the developers could move further. This means even such important things as meetings might require too much energy and commitment which eventually might become an issue influencing developers’ work.
Implementing agile methodology through various systems
As we already said before, agile principles are implemented through various systems. We suggest to discover several of them.
Scrum is an agile methodology based off 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 the task into smaller pieces which can be completed within a sprint which is 1-2 weeks long. Each term has sprint backlog with requirements for the current sprint. When the sprint is over, a customer reviews a product, suggests iterations and a new sprint with a new backlog begins.
Scrum teams are usually of a smaller 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 backlog. Product owner’s responsibilities are to create a backlog and set the tasks to the right priority so that the team could come up with a working iteration;
- Scrum team is responsible for organizing their work themselves with the aim to complete backlog goals at the end of a sprint.
Extreme Programming is especially convenient for teams which face constant changes from the side of a customer. It focuses on delivering a working product which corresponds with current customers’ demands as fast as possible. These products include improvements and changes of a 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. Those are stored in a Parking lot. During this phase Stories are created and placed into a Parking lot in a correct order. Approximate timing is estimated as well;
- Execution. This is when the most of the work is done which includes coding, testing, reviewing iterations and many more;
- Wrapping. During this stage small releases are made and new stories are created if needed, improvements are made as well;
- Closure. This is a final stage leading to a product launch.
Crystal methodology is a set of ways used to implement agile. Those include Crystal Clear, Crystal Yellow, Crystal Orange and many other approaches hidden under Crystal umbrella term. Depending on which one you choose, it might be more suitable for bigger or smaller teams, longer or shorter planned project lifecycle.
Like other agile methodologies, Crystal approach means less documentation with the aim to value results and individuals more. There is a set of prescribed roles in Crystal which mainly include a Project Sponsor, Designers and Programmers, Unit Testers and Users, but the number of roles might be extended.
As any agile approach, Crystal uses three of the main principles as a base:
- Being client oriented. That means customers are involved in the work process at any given stage of product development;
- Frequent product deliveries. Those guarantee that a 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 a customer, they can be implemented regardless of the stage a project currently is on.
Lean software development
Lean software development follows these main principles:
- No waste. There are many things which 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 getting constant feedback which can be taken into consideration;
- Fast product delivery. Lean methodology addresses the question of issues which slow down teamwork which can be solved with the aim to increase productivity. The easiest solution is to simplify the tasks for the developers, but there are other issues which 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 as a Whole. Instead of addressing one issue and wasting time to solve it, Lean programming suggests optimizing the whole 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 which might be important while considering agile project management as a main approach of 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 a work environment you have.