Documentation of software in the agile methodology. What is the Agile approach and why does business need it? What is Agile

In modern management, the “flexible” management model is considered in three different contexts, which (each in its own way) define what Agile is.

Three volumes of meaning of Agile

In the first, narrower sense, this term began to be used in the field of software development in the early 2000s, when in the American state of Utah, at a mountain resort, industry experts gathered to discuss methods and practices for creating software products that were in demand by the end consumer. The result of that meeting was the Agile Manifesto for the development of software products, with 12 principles, which primarily related to the narrow scope of the authors’ activities, but could potentially be extended to some other business projects.

In the second, broader meaning of the term, Agile principles are applied to running almost any business and are used as components, for example, in the concept of a “lean startup” (Lean Startup). In this sense, the Agile Model is understood as following a flexible methodology for project development, which follows a characteristic scheme in several steps.

  1. Work on the project is carried out in iterations - short cycles (sprints). (In the case of software development, the duration of these cycles ranges from 1 week to 1 month).
  2. At the end of each cycle, a product is released that can already be used in business. For software, such a product can be an application or only a part of it, but even “raw” software can and should be tried in action.
  3. The product is tested by the customer or users, who maintain constant feedback with the developers. A client-oriented approach is applied throughout the entire project (all iterations).
  4. Any comments are quickly included in the revision, and changes that allow us to immediately correct the development of the product along the way are welcomed, since this allows us to avoid the accumulation of global system errors.

In a third, even broader meaning, Agile is part of the management model used at Toyota factories and is now one of the basic components of the management of almost any successful production. The fundamentals of Agile in this context are similar to the fundamentals of understanding technology in other contexts.

Quick feedback in setting up the final production format at Toyota factories was provided by any worker who could become the initiator of stopping the conveyor and the author of adjustments to fine-tune the production cycle. On a production-wide scale, Agile transformation can entail a retooling of production activities as a whole if the product becomes the result of a live response to current customer needs. So, if the factory produced plastic basins, and feedback from the client demonstrates the need for buckets, then quick adaptation with parallel adjustment of nuances (handle shape, size, color) will be exactly in the Agile management style (if other principles are followed).

Principles of Agile Management

Agile project management as a business process management model is used by thousands of teams around the world, and the following distinctive features of this approach are everywhere present:

  1. The consumer and the degree of his involvement in creating the result are critical to customizing the product.
  2. To make a decision, teams must be highly effective and cohesive.
  3. Step-by-step and cyclical work becomes the basis of the process. The project is divided into small parts that are completed by a certain date before the completion of the project as a whole.
  4. The focus of performance evaluation is on frequent presentations of intermediate project states.
  5. In their work, the team relies on the Pareto law, according to which 20% of efforts give 80% of efficiency, which makes it possible not to bring each individual cycle to perfection before presenting the result to the consumer. The product improves naturally with each new iteration.
  6. It is expected that one stage must be completed before moving on to the next.

The “flexible” approach has become the basis for a number of methodological practices that differ from each other, but include the ideas of Agile: Scrum, Kanban, Lean, Crystal, etc. The Scrum methodology, for example, is almost always considered in conjunction with Agile as a unified project management system for software development.

The Scrum method demonstrates how an “agile approach” can be applied in practice in specific operations. So, for example, work with project requirements is implemented using four “artifacts”:

  • Product backlog involves generating a list of requirements, created according to a single template (User Story) and sorted by priority. If there are no requirements, the project ends.
  • Sprint backlog is the requirements of the nearest sprint (stage), divided into tasks without the ability to add new requirements during the sprint. Commitments for the next stage, taken by a team with the Agile management type, are written on the board (so-called Kanban).
  • Sprint Goal - the overall goal of the sprint - a guideline for making alternative decisions.
  • Sprint Burndown Chart - “burndown diagram”. It shows how far the team has progressed during the stage.

The Agile project management format is not suitable for everyone and not always. Government structures, whose activities are based on unchanged legislation and are conservative in their goals and implementation, do not need such optimization.

Typical mistakes in implementing Agile and disadvantages of the approach

The same factor that is considered a strength of the approach in some cases can lead to problems in others. So “flexibility” often becomes the reason for blurring focus. In the absence of a methodological basis, there is a loss of guidelines and the replacement of the primary with the secondary. To prevent such “distortions,” they use ready-made methodologies or their own developments that more strictly regulate the content and sequence of operations during the implementation of the project. However, in this case, errors are possible in Agile-management.

Common implementation errors include the following:

Despite all the difficulties of implementing a flexible approach, in general it is more effective than traditional “slow” production when it comes to quickly creating a new customer-oriented product. While traditional production is bogged down in bureaucratic delays, the Agile approach provides natural movement immediately after the launch of the project.

18 Oct 2017

If you look into a real Russian company over 30 years old and with more than a thousand employees and say the word Agile, the reaction will be at least wary. People there have already heard stories similar to “How to tell your grandmother” or “How to tell your grandfather” and watched all of Gref’s speeches, received a dozen proposals to introduce flexibility within a week, some of the employees even worked with Scrum for a year, but one question remains:

“What should we do with this? We only have a website from programming?”

As a result, for approximately 100% of companies, Agile looks like quackery.

But here’s a paradox - in the world, 77% of companies* using Agile in projects are not engaged in software development at all.



*From a large annual survey of companies from VersionOne

Instead of a definition. What to say about Agile when different people from different departments gathered

Agile is not a software development method. Wikipedia definitions are difficult to understand if you are not a developer.
These are the principles of organizing project activities and are applicable in any field. In practice, the most sensitive difference for people is the departure from hierarchy and the disappearance of one center for generating precisely described tasks. This is teamwork with roles, responsibility for the overall result and a flat structure of interactions.

The team in the game "What? Where? When?" exists according to Agile principles. Interactions play a key role. The captain plays the role of the customer of the product (the correct answer), 2-3 scholars sort through arrays of information, someone keeps track of time, there is a person who analyzes, asks questions and encourages communication, anyone can speak out and lead to a result or fail everything, beyond games have a debriefing (retrospective).

The counterweight to Agile is a conveyor (cascade) method with a strict hierarchy and precise tasks set as close to SMART as possible. According to these principles in "What? Where? When?" the captain would have to give out precise tasks - to whom to think in what direction and try to put it together in response. Each participant would have to maintain decorum and speak up when it’s their turn. In case of failure, someone would need to be demotivated or fired, and the captain would make this decision.

The main reason for the emergence and development of Agile is that more and more projects do not have 100% understanding of what should be in the end. It is simply impossible to describe exact tasks. And they decided that free interactions are more important than instructions, and readiness for change is more important than plans.

Agile methodologies are a response to uncertainty; it is not completely known what needs to be done and what should be the result. It would seem, what is incomprehensible about developing, for example, a website or building a house or preparing a hamburger at McDonald's? These projects are on stream, where is the uncertainty?

But. Even if you are a web studio and this is your thousandth site, for the client this is the first time. And his desires will remain uncertain until the very end. Many studios make 3-4 versions of the main page and set aside a week for unforeseen improvements. Everyone I know works in iterations, followed by a demonstration and discussion. Communication with the customer is more important than the signed contract.

In the construction of a house there is a project plan, calculation of materials and labor costs. But for some reason the deadlines always drag on. It happens that the foundation floats, or the screed dries out, something starts to crack, or the timber is damp, or the brick is too porous, or the cement was brought in of the wrong brand, or the client changed his mind and decided that now it will be a bathhouse. The foreman is a human orchestra, he decides everything that comes up, constantly deviating from the plan for the sake of the result. A normal house is much more important than a description.

Okay, there's no uncertainty about making a McDonald's hamburger. The process has been developed over 70 years and reproduced in 125 countries. Yes, this is a conveyor belt where it is better not to interfere with flexibility. Agile is not applicable to processes that have been well-established over the years. True, opening a new restaurant under a very precise franchise is always a unique project. Where there will be an iterative approach, reduction of iterations, distribution of roles, open interaction, visualization of the project on the Agile board, retrospective, daily planning meetings.

Total key values ​​of Agile (manifesto):

  • free interaction in a team
  • project effectiveness (cool product)
  • partnership communication with the client
  • readiness for change

What are teams with roles?

In a typical team there are two roles: Chief and Subordinate, one is smart and the other is a fool. In Agile, three are fundamentally important: Product Customer, Methodologist, Team Member.

In simplified form:
Customer- tells what product is needed, why it is needed, arranges discussions around requests from the market, makes decisions on priorities.
Methodist- makes sure that the customer does not turn into a boss. Well, also the implementation of other practices, for example, so that all tasks are rated or that task estimates do not exceed 80% of the available time, if there is such an agreement.
Team- evaluates, distributes and implements tasks. Always demonstrates a version of the product, not individual completed pieces.

To put it very simply, in Agile a person is required who makes sure that the team receives the maximum amount of information about the required product in all details from different sides and takes an active part in the discussion of how to implement it. I did not receive the task as a directive from above, but a description and understanding of what should be done for the user when the product is developed.

From the outside, what distinguishes an agile team from a traditional one is the presence or absence of the so-called narrative collaboration. If there is a discussion about the question “How to implement the product?” at all levels, which means the team is flexible. If they are looking for who is to blame for not completing a list of specific tasks, then everything is as usual.

The main question: “How to manage resources when everything is so flexible?”

All these stories about responsible teams and the history of the emergence of the method are perceived as complete garbage if there is no answer to the questions:
“How can we more accurately manage resources?”, “How can we understand earlier that there were not enough resources to complete a project?”, “We have always set and distributed tasks among performers and could predict the result, but what now?” To talk about Agile, you can only answer this question.

It should be noted that in general, all of Agile is designed specifically to solve the problem of resources “How to effectively manage resources in a project with unpredictability.” The methodology would not have been born if the main goal was the comfort and freedom of people in the team.

There are several important principles and methods that are clearly aimed specifically at resource forecasting:

1. Visibility of the necessary resources. Agile boards are inextricably linked to the methodology. This is when tasks are distributed into columns, and the columns determine the stage of the tasks contained in them. This is the most visual tool for visualizing the state of the project. Ideally, it should be clear to any outsider what stage the project is at and how much time is left until the end. If it suddenly becomes obvious to everyone that there are not enough resources or priorities need to be changed, this will happen by itself.
Issues of predictability of results and management of priorities are resolved precisely through visibility.

2. Priorities and backlog. When planning, it is taken into account that not all tasks can be completed in the allotted period of time. There is always a list of what must be done and what would be nice to do (this is the backlog). The priorities are set by the team in discussion with the internal customer of the product. If it happens that there is time left, tasks of the second degree of importance are solved; if they do not have time to close even tasks marked Mandatory (Critical), the team is strained further.

3. Short iterations(sprints). This approach, like no other, allows companies to try something from Agile. The management agrees to an intermediate result in a couple of weeks without getting involved and assigning tasks to everyone. It would be impossible to agree to such a work schedule for six months.
A sprint (iteration) is a period of time of several weeks. For us, most often it is 2 weeks. The most important thing in a sprint is determining what intermediate result should be obtained. This result is good to call an iteration, for example, “Release boards with rights” or “Release site for testing.” If work proceeds in segments of time, but each segment does not lead to any specific result, then this is no longer an iterative approach.

4. Estimation of problems in T-shirt sizes. People don’t really like to give precise estimates to tasks, but estimating roughly on a scale of large, medium, small is normal for most. Below are the world's most popular methods for estimating problems without high accuracy. With percentages based on frequency of use.


We use the third one, but the ratings are only 1h, 2h, 4h, 8h.

The point of the approach is to avoid trying to catch someone making inaccurate assessments of their work. They are already exemplary from the very beginning. The focus is on the fact that during the sprint everyone would strive to score the maximum number of points, which are approximately related to time.

5. Burndown chart(combustion schedule)
A very simple thing is a graph with two lines; the first is how much time has been burned and this is always a straight line, the second is how many tasks in terms of resources have been closed and fluctuations are possible here. In fact, this is a graphical answer to the question of whether the team is on track or behind schedule.


Only general approaches are presented here without details; perhaps it is worth writing a separate material with the details of resource management. But if we summarize here in two lines, it will turn out:

  • the most common mistake is trying to hit the estimates very accurately, the team stops working on the result
  • the most successful approach is to build in a time reserve and plan for 80% of resources

Insider from the largest, oldest and most famous SEO studio in Russia- they reserve resources twice, the first during discussion with the client, the second during internal planning.

Top 5 most popular Agile practices that are understandable to everyone

Let me emphasize once again that Agile at the basic level of application is simple. There are no super complex techniques that take a long time to learn. Below, as an example, are the 5 most popular practices (according to the same survey from VersionOne)


All of them are applicable to projects from any field and are simple enough to use instantly. All are united by the common idea of ​​an iterative approach.

1. Iterative planning- sprints (90% of teams use)
Working in small runs with intermediate results is good practice. A sprint is several weeks. Too short or too long segments are bad. The same interval for all occasions is also not suitable. The sprint should have the most precise goal, and the duration is determined based on this.
The most common mistake is that teams get used to simply scheduling tasks once every two weeks, and the processes of setting intermediate goals and summing up at the end are lost. The work falls into the usual flow of tasks with updates once per sprint. The problem must be solved by the methodologist.

2. Daily planning meetings(88% of teams use)
The goal is for the team to confirm the same direction of movement of all participants every day. According to the classic description, everyone on the team answers three questions:

  • What has been accomplished so far from the sprint?
  • What's planned for today?
  • What problems have arisen or what is stopping you?

In our practice, teams quickly get bored with this and become a routine or formal reporting. What helps:
Change planning meeting time - 6 months. morning, 6 months In the evening.
Change the leader of the planning meeting every time; there should be no person to whom they report. An excellent option if the leader is drawn by lot. Product customer, share customer stories at the beginning of the planning meeting. Discuss general topics and only then move on to questions. Do not allow anyone other than team members to attend planning meetings.

3. Retrospectives(83% of teams use)
Meeting at the end of the iteration. Discussion of what worked and what didn’t. The most important goal is to draw conclusions about how to change.
The customer of the product - about how best to show user expectations, the methodologist - about how to encourage dialogue and fulfill the agreements of the chosen approaches, the team - about how to take into account new emerging factors when making assessments. As a rule, retrospectives are fun - the iteration is over, you can breathe out and discuss the results. It is good practice to drink or eat something during breaks from this process.

4. Iterative shows(81% of teams use)
This is a demonstration from the team once every few iterations of the results of the project, usually in the form of a speech. The main point is to have a “session” and it’s okay if it becomes like reporting to management. The main difficulty is to get someone other than the team to gather, and even understand the meaning of what is happening. In our practice, it takes root only with very strong leadership.

5. Short iterations(71% of teams use)
The point is that you should constantly try to shorten the cycle of obtaining small intermediate results. If this is not done, the cycles will naturally grow or be constant, regardless of intermediate goals. The shorter the cycle, the fewer errors during iterative planning. This is the task of the methodologist; it is worth remembering this at least once every six months.

How to understand whether a project is being carried out using the Agile methodology or not yet?

A diagram of how many companies are changing Agile to suit themselves looks like this:


The flexibility of the approach extends to the approach itself. This is the first thing a team needs to learn if they are to become more flexible. You cannot be 100% Agile by following all the requirements. No one strictly follows the rules in their pure form; in practice, each company has its own modifications.

The most popular Agile methods are easy to implement, produce results, and won’t turn the company upside down. It is for this reason that 98% of those who use something from Agile say that approaches are successful.


If you start, for example, with morning planning meetings, then nothing bad will happen in the team, but simple daily dialogue between people within the project makes the process more flexible.

The combination of flexibility and rigidity is always individual and depends on many factors: the manager, the complexity of the project, team size, budget, etc. But if at least one approach has been meaningfully implemented, then this company works according to the Agile methodology and it would not be amiss to proudly announce this within the team.

It's hard to find a person who doesn't want to be treated with respect. But there must be a reason for this state of affairs. For example, when a person is a highly recognized specialist in the field of software development. And for this you need to study. And within the framework of this article, we will consider what Agile is, what are the benefits of it, and how to understand this technology.

general information

First, let's deal with the technical issues. What is Agile? The translation (literal) of this word from English is “alive, mobile”; “flexible” is mentioned a little less often. And by the way, this is an abbreviation. The full name of this approach is Agile software development. But since it was too long, it was decided to cut it short. And now they just say Agile. The translation as “flexible” is used because it best corresponds to the real situation.

What's included here?

Let's continue to look at what Agile is. Here I would like to focus on the fact that this is a flexible approach, which is based on many different XPs, Kanban, Lean). In order to better understand the topic, let's draw parallels. Let's say that Agile technologies are the process of the birth of the Universe. The final product is the existing world itself. And the big explosion is the most painful problem that one has to face - changing the list of requirements for a product. Typically, creation processes involve the use of a waterfall model. In this case, everything happens sequentially and in stages. This approach can be expressed briefly: I see a goal - I go towards it. And if the requirements for the final result change, then sometimes you have to redo almost everything again. What makes this situation even more difficult is the attempt to pretend that everything is normal and we need to move forward.

And now management is designed to combat all this thanks to its flexibility. This hodgepodge minimizes various risks through the use of sets of principles. All of them are reflected in the Agile Manifesto, released in 2001. In short, they sound like this:

  1. The main thing is people, not things.
  2. Collaborate rather than read the contract.
  3. Documentation should not interfere with your work.
  4. Change as quickly as possible.

It may seem too vague and not precise, but let's get more specific.

Process design

Considering what Agile is, let's turn to one of the most popular methodologies, known as Scrum. What does she offer? To get started you need:

  1. Select product owner. A person is suitable for this role, what he sees, what goal needs to be reached, and what will happen in the end.
  2. Decide on a team. This requires a group of three to ten people who have the skills to get results.
  3. Select a responsible specialist. This is the person who will monitor the development of the project and help the team overcome difficulties.
  4. Deal with difficulties. All existing product requirements should be collected in one place and prioritized. The product owner should collect all his wishes here. Then the team evaluates them and figures out whether it can be implemented and how much time it will take.
  5. The entire scope of work should be divided into periods of time, a week or two long, during which the team will perform certain sets of tasks.
  6. Meetings should be held daily, no longer than fifteen minutes. The agenda should discuss what was done yesterday, what are the plans for today, and the obstacles that prevent you from achieving heights.
  7. Do reviews at the end of a week (two), during which the team talks about what has been done. In this case, it is necessary to demonstrate the functionality of parts of the product.
  8. After each time period, problems must be discussed and solutions sought. Moreover, all developments must be implemented immediately.

How to recognize Agile?

The management methodology, regardless of the chosen direction, always has the following features:

  1. Minimizing risks. This is the main goal of any agile approach.
  2. Iterative development. In this case, we mean working in small cycles.
  3. The most important thing is people and communication between them.

Let's imagine a river. On one side is the customer. The second is the team. In this case, the agile development methodology has advantages for everyone:

  1. The customer needs a minimum functional product. However, conditions may change during its creation.
  2. It is useful for the team to communicate with colleagues and the customer. In this case, the risk of being misunderstood is minimized, the transparency of processes increases, problems are quickly resolved, and the chances that there will be a surprise when creating a product are reduced.

Social factor

When talking about what Agile is, they usually talk exclusively about positive aspects. Indeed, interaction within the team improves. All people focus on one idea, do not create secrets among themselves, and take on obligations. As a result, the team works in comfortable conditions and at a fast pace. This approach allows you to bring order to chaos.

Since its formation, it has been able to find recognition in the technology industries. Currently widely used for designing new software products. But within the framework of general business practice, such an approach is still little known. Therefore, those who have not encountered Agile before are wary of it. It should also be understood that it should only be used in cases where people are faced with the task of intellectual work.

A small example

Let's take a look at how these software development methodologies work. Let's say we have Peter, the product owner. He doesn't know the technical details, but he has a vision of the big picture. He knows why the product is needed, what problems it will solve, and who it will satisfy. There are also interested parties. They may use the product, support its creation, or be otherwise involved in its creation. You can also add user stories that express the wishes of interested parties. For example: a ticket booking system for Moscow-St. Petersburg buses must have a search by flight. Peter will help interested parties. He will take control of the implementation of user story ideas. There is also a development team. These are the people who will build a working system.

Since an agile development methodology is used, user stories are not accumulated until a major release, but are released immediately after completion and as often as possible. The number of requests processed is the team's capacity for the week. To avoid losing momentum and getting bogged down in manual testing, the team should work on automated integration. What is it? An automatic test is written for each working moment. Too many stories can lead to rushing, loss of motivation, and loss of productivity and quality. For such cases, the “yesterday's weather” method is provided. It lies in the fact that you need to set strict limits on the amount of work and carefully choose what exactly will be implemented. The previously mentioned “Kanban” suggests setting a task limit.

What to do with the queue?

Okay, so the team decided that they could handle four stories for a week. But how to navigate everything that is? Let’s say users submit ten stories per week. Four are processed. Thus, the queue will constantly grow. In this case, there is only one effective method - the word “no”. As a product owner, this is extremely important. Saying yes is not difficult. It is much more difficult and important to decide what not to do. Moreover, it is also necessary to bear responsibility for this. Therefore, you should decide what to pay attention to now and what should be postponed. To do it right, the product owner needs to understand the value and scope of each story.

We make decisions

Some of the stories are extremely necessary. Others are simply a nice bonus. Some stories will take several hours to develop. Others will take months to create. Many people often draw a correlation between the size of a story and its value. But this is not always correct. More does not equal better. Peter is helped to correctly consider priorities by the complexity and value of the task being performed. How to quantify these characteristics? No way. It's a real guessing game. And to be more effective, it is necessary to involve quite a lot of people. This is the development team, which will inform about the scope of work, and interested parties. But it should be understood that all data obtained in this way are rough guesses. There are no exact numbers here. Initially there will be misses. But as you gain experience, their number and scale will decrease.

Possible risks

To avoid problems, you need to give honest answers to a number of questions. This:

  1. Are we doing the right things? This is a business risk.
  2. Can we implement what is needed?
  3. Will the project work on this platform? This is a technical risk.
  4. Will we have enough money and will we make it in time? These are risks of implementation time and cost.

In this case, knowledge is required. They can be seen as the opposite of risks. When a significant level of uncertainty is detected, we acquire knowledge - for example, we create interface prototypes or technical experiments. And already having them, we make decisions about which direction we should move.

How to learn?

The IT industry is developing extremely quickly, and in order not to lose in the end, it is necessary to constantly learn, improve skills and work efficiency. Therefore, issues of training and implementation are more relevant than ever. Where to begin? The best option is cooperation with a company that already uses Agile. Training in this case will be conducted by people who know firsthand what agile development is. But this, alas, is not always possible. Most often, a third-party specialist is involved who knows what Agile is. The implementation of this approach is carried out under his supervision. True, the services of such a specialist cost money. But if you get a truly knowledgeable person, then all your expenses will pay off handsomely. Indeed, in the modern world, employee efficiency plays an important role.

What does the future hold?

Software development methodologies are constantly evolving. They are looking for new ways and opportunities to improve the efficiency of activities and work. It is quite problematic to say what awaits us in the future. It is likely that the flexible development system will be integrated with production process automation tools. For example, it will be possible to solve problems even while located at a distance from the company’s location. In many ways, the future is determined by new information technologies. After all, when they arise, you need to learn new methods of working with them. And in this case, development occurs, closed in a cycle.

Finally

This is the end of the excursion into flexible ones. But it should be recalled that theory is one thing, and practice is quite another. New information technologies that constantly emerge pose challenges to the large developer community. How to make a team's activities more effective? Everyone finds the answer to this question themselves. The information presented here can be used to formulate the skeleton. But in practice, you will have to work with the existing model and bring the state of affairs to a state of compliance with existing challenges. Then the team will be able to effectively achieve its goals.

In modern management, the “flexible” management model is considered in three different contexts, which (each in its own way) define what Agile is.

Three volumes of meaning of Agile

In the first, narrower sense, this term began to be used in the field of software development in the early 2000s, when in the American state of Utah, at a mountain resort, industry experts gathered to discuss methods and practices for creating software products that were in demand by the end consumer. The result of that meeting was the Agile Manifesto for the development of software products, with 12 principles, which primarily related to the narrow scope of the authors’ activities, but could potentially be extended to some other business projects.

In the second, broader meaning of the term, Agile principles are applied to running almost any business and are used as components, for example, in the concept of a “lean startup” (Lean Startup). In this sense, the Agile Model is understood as following a flexible methodology for project development, which follows a characteristic scheme in several steps.

  1. Work on the project is carried out in iterations - short cycles (sprints). (In the case of software development, the duration of these cycles ranges from 1 week to 1 month).
  2. At the end of each cycle, a product is released that can already be used in business. For software, such a product can be an application or only a part of it, but even “raw” software can and should be tried in action.
  3. The product is tested by the customer or users, who maintain constant feedback with the developers. A client-oriented approach is applied throughout the entire project (all iterations).
  4. Any comments are quickly included in the revision, and changes that allow us to immediately correct the development of the product along the way are welcomed, since this allows us to avoid the accumulation of global system errors.

In a third, even broader meaning, Agile is part of the management model used at Toyota factories and is now one of the basic components of the management of almost any successful production. The fundamentals of Agile in this context are similar to the fundamentals of understanding technology in other contexts.

Quick feedback in setting up the final production format at Toyota factories was provided by any worker who could become the initiator of stopping the conveyor and the author of adjustments to fine-tune the production cycle. On a production-wide scale, Agile transformation can entail a retooling of production activities as a whole if the product becomes the result of a live response to current customer needs. So, if the factory produced plastic basins, and feedback from the client demonstrates the need for buckets, then quick adaptation with parallel adjustment of nuances (handle shape, size, color) will be exactly in the Agile management style (if other principles are followed).

Principles of Agile Management

Agile project management as a business process management model is used by thousands of teams around the world, and the following distinctive features of this approach are everywhere present:

  1. The consumer and the degree of his involvement in creating the result are critical to customizing the product.
  2. To make a decision, teams must be highly effective and cohesive.
  3. Step-by-step and cyclical work becomes the basis of the process. The project is divided into small parts that are completed by a certain date before the completion of the project as a whole.
  4. The focus of performance evaluation is on frequent presentations of intermediate project states.
  5. In their work, the team relies on the Pareto law, according to which 20% of efforts give 80% of efficiency, which makes it possible not to bring each individual cycle to perfection before presenting the result to the consumer. The product improves naturally with each new iteration.
  6. It is expected that one stage must be completed before moving on to the next.

The “flexible” approach has become the basis for a number of methodological practices that differ from each other, but include the ideas of Agile: Scrum, Kanban, Lean, Crystal, etc. The Scrum methodology, for example, is almost always considered in conjunction with Agile as a unified project management system for software development.

The Scrum method demonstrates how an “agile approach” can be applied in practice in specific operations. So, for example, work with project requirements is implemented using four “artifacts”:

  • Product backlog involves generating a list of requirements, created according to a single template (User Story) and sorted by priority. If there are no requirements, the project ends.
  • Sprint backlog is the requirements of the nearest sprint (stage), divided into tasks without the ability to add new requirements during the sprint. Commitments for the next stage, taken by a team with the Agile management type, are written on the board (so-called Kanban).
  • Sprint Goal - the overall goal of the sprint - a guideline for making alternative decisions.
  • Sprint Burndown Chart - “burndown diagram”. It shows how far the team has progressed during the stage.

The Agile project management format is not suitable for everyone and not always. Government structures, whose activities are based on unchanged legislation and are conservative in their goals and implementation, do not need such optimization.

Typical mistakes in implementing Agile and disadvantages of the approach

The same factor that is considered a strength of the approach in some cases can lead to problems in others. So “flexibility” often becomes the reason for blurring focus. In the absence of a methodological basis, there is a loss of guidelines and the replacement of the primary with the secondary. To prevent such “distortions,” they use ready-made methodologies or their own developments that more strictly regulate the content and sequence of operations during the implementation of the project. However, in this case, errors are possible in Agile-management.

Common implementation errors include the following:

Despite all the difficulties of implementing a flexible approach, in general it is more effective than traditional “slow” production when it comes to quickly creating a new customer-oriented product. While traditional production is bogged down in bureaucratic delays, the Agile approach provides natural movement immediately after the launch of the project.

Software development is work that requires making the right decisions in a timely manner. CTOs, architects, team leads and developers themselves regularly make choices in favor of certain tools, platforms and frameworks.

But all decisions made need to be “synchronized” somehow. One of the Hacker News residents noted that he had to watch how five hundred developers in one large company were allowed to make some decisions on their own, “in isolation” from the team. According to him, it was chaos. And although the team began to work faster, it went nowhere because later problems arose during the software support stages.

To avoid such situations, a family of agile development processes is used. Their implementation allows company management to increase the interest and motivation of employees, as well as speed up delivery of the product to the customer. Recently, this topic has become increasingly popular, because the heads of the largest corporations are drawing public attention to some Agile methodologies.

That's why we decided to start a series of posts about "agile" methodologies to take another look at their features, compare options and help your companies optimize processes. Today we are talking about Scrum, Kanban and Extreme Programming.

Scrum

Scrum is an agile software development framework that is considered the "default" methodology. For many, it is synonymous with Agile. According to 2016 statistics provided by VersionOne, Scrum is used by 58% of agile companies. Moreover, it is supported by many SaaS platforms. For example, the ServiceNow solution, of which the Agile Development tool is part.

Scrum has gained immense popularity throughout its existence and is used by development teams even in large companies. However, during this time the community also identified certain shortcomings.

For example, among them they note an excessive focus on scoring points. When planning, the team selects stories that it can complete by the end of the sprint, based on the speed of the previous stage. The main purpose of these glasses is to make planning more reliable and provide a clear perspective.

However, there is a problem here: since the developers’ work is assessed in points, they will try to earn more of them and optimize their activities accordingly. What does not improve the code base does not make it simpler.

Another problem is long meetups. Moreover, meetings are held synchronously with all development participants, which becomes a problem for specialists working remotely. People have to fit hours-long meetings into their schedules to exchange information that could be conveyed in other ways.

As for stories not changing during a sprint, this also leads to problems on a large scale. Programmers do not have the ability to redistribute work when new features are discovered. Scrum doesn't allow you to rebuild the ship while it's sailing, so you have to wait until the end of the session to make changes.

Extreme Programming

The peculiarity of Scrum is that this framework pays little attention to development practices. Therefore, some agile companies (about 10%) combine it with Extreme Programming (XP).

Extreme Programming gained attention in the late 90s. The concept originated in the Smalltalk community, and its authors are considered to be developers Kent Beck and Ward Cunningham, who wanted to create new practices in software development made for people.

The first project created using the Extreme Programming methodology was the Chrysler Comprehensive Compensation (C3) payment control system in the mid-nineties. The term “extreme programming” appeared in 1997.

The concept is based on twelve techniques:

Kanban

Scrum continues to be an effective methodology that is popular. Especially in combination with extreme programming. Together, their usage rate among Agile teams reaches 68%.

However, today many teams are considering other options and paying attention to other methodologies. One of them was Kanban. ConvertKit CTO Grant Ammons says companies are first adopting Scrum, which teaches them the necessary disciplines for software development, and then looking for a more convenient alternative and turning to Kanban.

Kanban is a technique for managing development where the development process is viewed as a pipeline of feature requests that deliver improved software.

Kanban originated as part of Toyota's just-in-time production system, so the methodology eliminates unnecessary accumulation of tasks. For example, if testers test five features in a week, and developers and analysts implement ten, then the "total pipeline throughput" is limited to five features. This is to prevent the QA team from piling up work, otherwise they might start cutting corners and accidentally let a low-quality product into the market.

In this case, it is also possible to redistribute resources: when programmers and analysts have fulfilled their quota, they can help with testing and writing automated tests. In the future, this allows increasing the throughput of the conveyor.

And Kanban easily identifies such bottlenecks. In its simplest implementation, it is a large board with lined columns in which sticker cards are placed. The bars represent stages of the development process, and the stickers represent work tasks. The numbers at the top of each column show how many cards are allowed to be “accumulated” in it.

However, as noted in the HN community, this approach also has certain disadvantages. In Scrum, short sprints have a positive effect on the motivation of developers. Programmers know that work on the product will end when the entire list of requirements for 30 days is completed. In the case of Kanban, it is a constant and never-ending stream of tasks. However, there is a way out - a brief discussion of task lists for a week (or two).

Also, due to its specificity, kanban is not well suited for long-term planning and is inconvenient for large development teams (more than five people).

Finally, we note that the use of Agile methodologies places serious demands on the experience of team members and their ability to effectively interact with each other. Moreover, each more or less common methodology has its own strengths and weaknesses, as well as areas of application. For this reason, new frameworks appear and “old” ones are improved.