By Antonio González & Rubén Fernández
Why Did Agility Appear?
Around 50 years ago, code was written without any plan and the architecture design was determined from many short-term decisions. This worked well for small systems, but as they grew it became harder to add new features and to fix bugs.
After some years, methodologies were introduced in software development to solve these issues. Methodologies are strict processes whose aim is to make software more efficient and predictable. Traditional methodologies (for instance Waterfall) are plan-driven and require a big effort at the beginning of the project in order to define requirements and architecture properly. As you may notice, these processes can be frustrating and not very open to changes.
Nowadays, technology and software applications evolve quickly – faster than we expected. Therefore, time-to-market is critical in determining whether a product will succeed or fail. Reaching the market before your competitors might actually mean victory. Thus, it is very important to have the right methodology that embraces and responds to the continuous changes we are experiencing. That is the main reason why, in 1975, practices based on iterative enhancements were introduced. In other words, let’s call it agility.
What Are Agile’s Main Characteristics?
Reading the Agile Manifesto it states that the Agile framework is based on:
- Individuals and interactions over processes and tools.
- Working software over comprehensive documentation.
- Customer collaboration over contract negotiation.
- Responding to change over following a plan.
What this means is that the Agile framework focuses on working software rather than a definition of strict requirements. Another pillar of its philosophy is granted autonomy and shared responsibility of all individuals within the team. It means not only thinking about the client, but also motivating and involving programmers, analysts, and QA engineers to work towards a common goal.
What Is It about Agile That Is so Interesting?
With this brief description, we start to observe why AGILE is so important: response to changes. Often, new companies do not know very well what their clients want or how to define their roadmap, hence pivoting and iterating until they reach their expected results is almost mandatory. Agile development allows small companies to refine their products and goals on the go.
Nonetheless, Agile also works well in big companies. Multinationals are more than ever required to move fast and adapt to the new environment. Besides, as we all know, the customer is always right. So why leave them out of the development process? Agile involves the client in the project, so companies can understand better and in greater detail what the customer wants.
But these are not the only reasons why Agile is important. There are plenty more. Below are several explanations of why it is reasonable and suitable to use agile in software development from different perspectives and points of view.
What Advantages Does Agile Have for Product Managers?
Product managers would like to know exactly what their customers want, but this is a hard task and unlikely to happen. Agile provides the appropriate framework for adapting the product to the customer’s actual needs. There is no need to define the product perfectly at the beginning, but, as iterations are done, it is easy to get feedback from clients and refine the product, implementing only those features that provide value.
Furthermore, Agile is well-known for its transparency. Product owners are always aware of what is being done and what actions are being taken by the development team. With Agile, product owners do not need to wait until the end of the project to know what the team has implemented.
What Advantages Does Agile Have for Analysts?
Imagine you could gather data and valuable information about a product before its final version is released. If you are a data scientist, this may sound perfect to you. That is what Agile gives analysts – continuous information from real clients, and a real product before it is completely implemented.
What Advantages Does Agile Have for Developers?
Developers are the core of an agile team. Therefore, it is highly important to provide the right tools and methodologies so they can do a good job. Agile gives freedom to developers to estimate and write code as they prefer, and motivates people to share how things are done and work as a team.
With traditional methodologies, software engineers often feel they mostly do work that has no meaning for the client, or that this work will be removed from the final product. Agile focuses on doing tasks that provide value to the customer, so wasting time and effort on writing useless code is minimized.
Finally, in Agile there are no senior or junior levels. Everyone is a team member, so everyone’s opinion is valuable. Agile helps people to share their opinions so the whole process may benefit and improve.
What Advantages Does Agile Have for QA Departments?
With traditional methodologies, QA engineers were left out of the project until the product was about to be released. QA activities were understood as a “one time” action at the end of the project, and this obviously generates big risks and uncertainty about the product’s quality. In traditional methodologies, black box testing was prioritized over user interface, and every test case and test plan had to be well documented.
The introduction of Agile frameworks benefitted the role of QA engineers, as they became more relevant. They need to be pro-active from the start of a project by developing proper measures to assure the quality of the product. In general, the QA role in Agile should:
- Help Business Analysts to define stories and their acceptance criteria so they to know whether they are satisfying customer requirements.
- Integrate with the development team to assess the adoption of code standards and the improvement of the code base through refactoring.
- Provide developers with high level test cases and scenarios for the stories before coding. Respond to change-over following a plan.
- Ensure black box testing over the user interface and white box testing to gain knowledge of the internal workings of the application.
- Increase automated testing, so the team’s speed will increase.
- Introduce quality control into every iteration.
What Advantages Does Agile Have for Management?
Are There Any Managers on Agile?
The Agile Manager is responsible for supporting the development team, clearing any blockages, and keeping the Agile process consistent.
The Agile Manager is the development progress facilitator, and his/her main task is to maximize the team’s effectiveness rather than controlling how they work, which is more usual in traditional project management where project managers act as authority figures. In Agile environments there is no authority role.
The Agile Manager ensures that the right people are on the project, mentoring, training, guiding, and motivating everyone to reach a common goal. This important task helps the team to feel ownership of the project and gives them great motivation to achieve their goals.
Then, Is Agile Perfect?
Of course not. The first thing to note is that Agile is not about perfection, it is about bringing value to your organization and to your customers in the most cost-effective and transparent way. For this reason, you need to be patient when adopting Agile frameworks. It is very important that the executive team believes in Agile methods. If it happens, your probability of project success increases considerably.
Moreover, Agile has several disadvantages. As it focuses strongly on people, if someone leaves your team, it is likely you will be losing a lot of information and cohesion from the group. Besides, as the team is self-managed, maturity is required in all team members and this is often hard to obtain.
Finally, there are common mistakes in adopting Agile that cause more inconveniences than advantages. One common mistake is trying to adapt your organization to Agile. Agile is a framework that provides methods for being more productive, so the trick is to determine which methods provided by Agile are suitable for your organization and to tune your methodology to fit your individual or team needs. Another error is believing that Agile means that everything can be done at any time. Agile is about flexibility, but if development of a feature has started, it is not possible to change it before it is finished.
Does It Only Work in Software Environments?
No, it could work in different environments. For example, think of this article that we wrote in a kind of agile way. We first defined what we wanted to do (high level) and we started one week iterations of writing. After every iteration we asked for feedback from experts and people whom we considered to be important stakeholders. Using this information, we improved our article and kept on writing. When we had completed ten iterations, our stakeholders told us it was good enough for them, so we decided to close the article. Obviously we were not 100 % agile as we did not release our article before it was finally completed.
As said, Agile does not only work for software projects, but it is true that it might work better with small budget projects, as refining your product every iteration may incur unexpected expenses. Moreover, Agile is very effective in environments where changes in the requirements happen quite often due to various business reasons.
Agile is not a one-time aspect in the development process of a company. It is a development philosophy that helps to deliver frequent releases with high quality to final customers, through team collaboration, transparency, and continuous improvement.
These benefits imply a transition to Agile, which is not an easy task. Teams and companies that do not fully believe in the adoption of Agile will give up their adoption of it as soon as the first problems are encountered. A good agile team understands the benefits of Agile and believes in its adoption, choosing the management and technical methods provided by the Agile framework that work best for them. If this occurs, the adoption of Agile is likely to succeed.
Acknowledgements to Gonzalo Vázquez for his wonderful illustration.