Difficult to find a person who would not wantto be treated with respect. But for this state of affairs there must be a reason. For example, when a person is a high-class recognized specialist in the field of software development. And for this you need to learn. And within the framework of this article, it will be considered what Agile is, what is the use of it, and how to understand this technology.
general information
Первоначально давайте разберёмся с техническими moments. What is Agile? The translation (literal) of this word from the English language is “live, agile,” a little less often referred to as “flexible.” And by the way, this reduction. The full name of this approach is Agile software development.But since this is too long, it was decided to reduce. And now they say just Agile. Translation as “flexible” is used because it most closely matches the real situation.
What is included here?
We continue to consider what Agile is.Here I want to focus on the fact that this is a flexible approach, based on many different methodologies (Scrum, XP, Kanban, Lean). In order to better understand the topic, let's draw parallels. Suppose that Agile technology is the process of the origin of the Universe. The end product is the actual world itself. And the big bang is the most painful problem that one has to meet - changing the list of product requirements. Typically, creation processes involve the use of a cascade model. In this case, everything goes sequentially and in stages. This approach can be summarized briefly: I see the goal - I am going to it. And if the requirements for the final result change, then sometimes you have to redo almost everything. What else complicates such a situation is an attempt to pretend that everything is normal, and you need to move forward.
И вот Agile, методология управления, призвана fight it all 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:
- The main thing is people, not things.
- Cooperate, not read the contract.
- Documentation should not interfere with work.
- Change as fast as possible.
It may seem too vague and not accurate, but let's detail.
Device processes
Considering what Agile is, let's turn to one of the most popular tools, known as Scrum. What does she suggest? First you need to:
- Choose a product owner. A person approaches this role, that he sees, to what goal he needs to go, and what will be in the end.
- Decide on the team. For this you need a group of between three and ten people who have the skills to get a result.
- Choose a responsible specialist. This is a person who will follow the development of the project and help the team get around the difficulties.
- Deal with difficulties.All existing product requirements and priorities should be collected in one place. The product owner must collect all their wishes here. Then the team assesses them and understands whether it can be implemented, and how much time it takes.
- It is necessary to break the entire scope of work into time intervals, a week or two long, during which the team will perform certain sets of tasks.
- Meetings should be held daily, no longer than fifteen minutes. On the agenda it is necessary to discuss what was done yesterday, what are your plans for today, and the obstacles that prevent us from taking height.
- To do reviews on the basis of the week (two), during which the team tells about what was done. It is necessary to demonstrate the performance of parts of the product.
- After each time period, it is necessary to discuss problems and find solutions. Moreover, all developments must be implemented immediately.
How to identify Agile?
The management methodology, regardless of the direction chosen, always has the following features:
- Risk minimization. This is the main goal pursued by any flexible approach.
- Iterative development. In this case, it means work in small cycles.
- The most important thing is people and communication between them.
Let's imagine the river. On one side of the customer. On the second - the team. In this case, a flexible development methodology has advantages for everyone:
- The customer needs a minimally efficient product. At the same time during its creation conditions may change.
- 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 solved, the chances of being unexpected when creating a product are reduced.
Social factor
When it is told what Agile is, usuallyThey speak only about positive moments. Indeed, interaction within the team is improving. All people focus on the same idea, do not create secrets among themselves, undertake obligations. As a result, the team works in a comfortable environment and fast pace. This approach allows you to streamline chaos.
Since its formation, he was able to findrecognition in technology industries. Currently widely used to design new software products. But within the framework of general business practice, such an approach is still little known. Therefore, it is carefully treated by those who have not met with Agile before. It should also be understood that it should be used only in cases where people are faced with the task of intellectual work.
Small example
Let's take a look at how these methodologies work.software development. Suppose we have Peter, the owner of the product. He does not know the technical details, but he has a vision of the overall picture. He knows why he needs a product, what problems he will solve, and whom he will satisfy. There are also interested parties. They can use the product, support its creation, or somehow be involved in its creation. You can also add user stories in which the wishes of interested parties are expressed. For example: a ticket booking system for Moscow-St. Petersburg buses must have a search by flights. Peter will help those concerned. He will take control of the implementation of the ideas of user stories. There is also a development team. These are people who will build a working system.
Since a flexible methodology is useddevelopment, the user stories do not accumulate to a large release, but are released immediately after completion and as often as possible. The number of processed requests is the bandwidth of the team for a week. In order not to lose pace and not get bogged down in manual testing, the team should work on automated integration. What is it? For each working moment an automatic test is written. If there are too many stories, then there may be haste, loss of motivation, loss of productivity and quality. For such cases, the method of "yesterday's weather" It lies in the fact that you need to establish a rigid framework of the amount of work and carefully choose what exactly will be implemented. The previously mentioned "Kanban" offers to set a limit on tasks.
And what to do with the queue?
Okay, so the team decided that she couldhandle four stories for a week. But how to navigate in all that is? Suppose users throw up ten stories for a week. Processed four. Thus, the queue will constantly grow. In this case, there is only one effective method - the word "no." For the owner of the product is extremely important. Say "yes" is not difficult. It is much more difficult and more important to decide what not to do. And for this it is also necessary to bear responsibility. Therefore, it is necessary to decide what to pay attention to now and what should be postponed. In order to properly prioritize, you need the product owner to understand the value and scope of each story.
Make decisions
Some stories are extremely necessary.Others simply represent a nice bonus. Some stories will be developed a few hours. To create others will take months. Many often draw a ratio between the size of a story and its value. But this is not always correct. More is not equivalent. Peter correctly considers priorities helps complexity and value of the task. How to determine these characteristics in quantitative terms? Yes, nothing. This is a real guessing game. And for greater efficiency it is necessary to involve a lot of people. This is the development team that will inform about the scope of work, and interested parties. But it should be understood that all the data obtained in this way are approximate 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. It:
- Do we do the right things? This is a business risk.
- Can we implement what we need? This is a social risk.
- Will the project work on this platform? This is a technical risk.
- Will there be enough money, and will we have time? These are the risks of timing and cost.
В данном случае необходимы знания.They can be considered as opposites risks. When a significant level of uncertainty is fixed, we gain knowledge - for example, we create interface prototypes or technical experiments. And already possessing them, we make decisions about which direction to go.
How to learn?
The IT industry is developing extremely fast, andIn order not to lose in the end, you need to constantly learn, improve skills and work efficiency. Therefore, more than ever relevant issues of training and implementation. Where to begin? The best option is to cooperate with a company where Agile is already applied. Training in this case will be conducted by people who are not rumored to know what a flexible 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 its supervision. True, the services of such a specialist cost money. But if you take a really knowledgeable person, then all your expenses will pay off. Indeed, in the modern world, employee efficiency plays an important role.
What is in the future?
Software development methodologies are constantly evolving.Looking for new ways and opportunities to improve the efficiency of activities and work. To say what awaits us in the future is quite problematic. Probably, the flexible development system will be integrated with the means of automation of production processes. For example, it will be possible to solve problems, even staying at a distance from the location of the company. 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
That ended the excursion into flexible methodsdevelopment. But it should be recalled that theory is one thing, and practice is quite another. New information technologies, which constantly arise, challenge the large developer community. How to make the team more efficient? The answer to this question everyone finds himself. The information presented here can be used to form the backbone. But in practice, you will have to work with the existing model and bring the situation to a state of compliance with existing challenges. Then the team will be able to effectively fulfill its goals.