What is Agile

The term Agile is a methodology for modelling and documenting software systems based on best practices. It is a collection of values and principles that can be applied to an (agile) software development project. This methodology is more flexible than traditional methods, making it a better fit in a fast-changing environment.

As Agile gained widespread popularity, some people began having the illusion that Agile methodology is a panacea in project management. If you think so too, I will disappoint you. There is no one perfect approach. It is necessary to study all available methodologies, then choose either a single model or create a hybrid model for a specific project.

The fact is that most IT projects are not undertaken with a complete understanding of the final intended result. Most often, both the customer and the developer are undertaking this project for the first time so initially, it is impossible to precisely describe all the tasks and objectives. Therefore, it was decided that individuals and interactions are more important than processes and tools. In addition, responding to changes is more important than following a plan. Flexible methodologies are the answer to inherent uncertainty and change that are present until the end.

A little bit of history

Humanity passed through three main “waves” in the development of society:

  1. The first big transformation was the Agricultural Revolution. People stopped wandering the earth as hunter-gatherers and instead began living and working in one place.
  2. The second transformation was the Industrial Revolution when people left farms and moved to cities to work in factories and plants. The Waterfall Project Management was created at this stage.
  3. The third transformation was the Information revolution. This revolution was based on knowledge and intangible objects. Agile methodology was created at this stage.

In 2011, the Agile Alliance created the Guide to Agile Practices (renamed the Agile Glossary in 2016), an open-source of the working definitions of agile practices, terms and elements, along with interpretations and experience guidelines from the worldwide community of agile practitioners.

Let’s compare the characteristics of industrial (tangible) work and knowledge (intangible work):

Industrial WorkKnowledge Work
Results and processes are visibleResults and processes are invisible
Work is stableWork is changing
HierarchyEquality
Unwelcome changesWelcome changes
ControlAuthonomy
Workers are seen as a costWorkers are seen as assets
Defined processesEmpirical processes
Structure with fewer decisionsLearning through discovery

Show the prototype!

In Agile methodology, the main measure of effectiveness is a working product. Instead of preparing documentation, agile teams seek to present a workable prototype. The main rule is to implement a Minimum Viable Product and start testing it, create the next one and so on. This process is called “Iterations” or “Sprints”. Iterations have the same duration throughout the project and on average are two weeks in length, although the weekly option is also possible.

How does an iterative approach provide flexibility? Due to the fact that individual processes can occur in parallel and independently from each other. Also, after each iteration, the team provides the minimum viable product and the customer can immediately draw conclusions: whether he wanted it or not, if he needed those features or not, and make changes accordingly. With a cascade model, the result is provided at the end of the project, which makes it very difficult to make changes.

No hierarchy

The key principle behind the formation of an Agile team is the self-organization and relative equality of all participants. Even the product owner, who sometimes is thought of as the head of the project, merely plays the role of a carrier of knowledge about the expected final result. This person is not the manager in the standard sense. The collective responsibility of team members towards each other is the ideal in agile development.