What is agile?
The family of agile development processes refers to the previously reviewed iterative model. The essence of them is to obtain immediate feedback and as a result – a pain-free response to changes in the project (priorities, the list of works, new ideas of the client). As well as in the general iterative scheme this is realized through the reduction of the development process to short iterations, which typically last for several weeks. The result of a team’s work on each iteration by itself looks like a miniature software project and includes planning, requirements analysis, design, coding and documentation. At the end of each iteration the team evaluates its performance and plans to work on the next stage. The main result is a working software product.
The values and principles of agile methodologies are embodied in the document «Agile Manifesto», which was developed and adopted on February 11-13 2001 at the ski resort The Lodge at Snowbird in the mountains of Utah, USA.
Despite the huge number of advantages of agile methodologies, many companies face significant challenges in trying to move to the actual use of them. Let’s consider their essence and how they can be smoothed.
Adaptation to the new roles. Members of the project team are initially reluctant to perform unusual for them roles, even if they understand that it will bring undoubted benefit to the project. Problems of this kind are easily noticeable in the project and, as a rule, resolved on retrospectives by the team itself.
The habit to documents. Initially, the developers expect from the client’s some document, in which all the requirements for the project will be explained. But since this is not the most efficient method of transmitting information, developers must learn to work directly with the client. After some time working in the project and communicating directly with the client, developers will be able to navigate in business and will be able to take decisions in some obvious questions. After all, even if they make a mistake, it is sure to be seen by the client at the end of the iteration, and then it will be possible to correct.
New team. The real problem for the project manager is a new team, where the working relationships between the people have not yet formed. People do not know each other, embarrassed to ask for help and are afraid to openly criticize each other for the wrong design decisions. The project manager should help the team to establish informal relationships as soon as possible. Very useful are various activities for team building, such as a joint dinner or sporting events.
Problems with communication. Unfortunately, not all people are by nature extroverts and able to communicate openly. At the initial stage of the project all meetings between members of the project team must be conducted by the project manager to achieve productivity and efficiency.
Pressure connected with terms. Client requires the fulfillment of established terms. He needs to get the desired functionality on time. The team’s task is to meet the required deadlines, without sacrificing product quality. Otherwise, the speed of development in the long-term will fall as the cost of the changes due to the low quality will increase. In addition, poor quality negatively affects the motivation within the project team. The project manager’s task is to constantly remind the team and the customer of the need to maintain high quality.
Creativity. Not all tasks in the project are equally interesting. Developers often want to make design decisions that go to the detriment of the project but are original technically. However, the design solutions should be simple. You should not do anything that is not absolutely necessary in the foreseeable period of time. How to teach the team to take simple decisions? It may be useful to allow the team to make a mistake once and then retrospectively analyze examples so that developers will come to the conclusion in the future. Almost in any project from time to time there are research tasks (new technologies, new technical areas of knowledge). It is here the place for all sorts of trials and experiments.
Evaluation of time. When estimating the timing for the task, developers often forget that, in addition to writing code, the task at least includes the development of design and testing. For this reason, at the beginning of the project developers often overestimate their performance. In retrospect, they mark these mistakes and make the conclusions for the future. Subsequently, the team learns to correctly assess their capabilities and eventually (after 3-4 iterations) the accuracy of the established terms is increasing along with the productivity.
Agile methodologies for today are the most advanced and effective. However, not everything goes smoothly when you try to move to them. For the teams united in a fundamentally different culture it is very difficult to migrate to new operating principles. So if your company develops quality software, the team is satisfied with the working conditions, work processes are stable and the clients are satisfied with the provided products, maybe you should not experiment with transition to agile. It`s up to you.