Agile is gaining a moment. It is hard to find a company of software developers that have not made an effort to use it yet. But is it always the best choice in every case? Let’s look into problems when and why sometimes Agile is not convenient to be used.
With the help of guys and friend-software engineers from serokell.io, we’ve come up with this topic to help you see if Agile is for you or not.
Difference between Agile and Waterfall
For years companies have been using Waterfall, where each step of the software development starts when the previous one is ready.
Waterfall has its advantages. When we have a detailed software specification, when all the wishes are set and the architecture is complicated, Waterfall is the best choice.
Firstly, we have to collect the requirements, analyze the market, work out the SRS, and create the software architecture, now moving to design. Only after that do we start coding, testing, and preparing our IT product for launch. Agile suggests working on our software product iteratively when all of these processes are simultaneous. At the end of the first iteration, we have a simple working product, MVP, and we improve it with every next iteration.
There are several standards, how Agile can be implemented. For certainty, let us consider the SCRUM framework as one of the most popular. During the iteration, we work on the sprint model.
Sprint usually lasts one or two weeks, for sure, no longer than a month. And then at the end of this period, we should be ready to deliver a product increment. However, to work during Sprint mode productively, we need to have an Agile plan and the roadmap. On the roadmap where we have prioritized tasks, divided in the sprints. And then, we work on the tasks, which are only set for the current spring.
Agile or its alternatives?
Of course, Agile is attractive. Nevertheless, let’s look at a simple life example. If we are building an airplane, it should fly and be characterized as a safe and comfortable machine to carry goods and passengers. Moreover, we have strict deadlines when it must be ready. Here we cannot make just a skeleton and ask somebody for their feedback after the first flight. To do the test, we need a ready and safer product. For such tasks, Waterfall would be more appropriate, for sure.
So, when should we use Agile, and when should we use its alternatives?
Customers’ feedback is the crucial point
The main idea of Agile methodology is changing our improvement directions independence on customer feedback. However, the users can not express their opinion until they test the software. If our product aims to realize the specific function, which is clear and doesn’t need any further improvements, we’ll use Waterfall. Here using the Agile approach is absolutely inappropriate.
Moreover, we should take into account that by choosing to be Agile, we include a client as an Agile team member. They should be ready to close cooperation, test and research the software on the spiral of development, provide their valuable feedback, and correct their wishes based on the users’ expectations to let developers continue building the software.
Agile is about strict deadlines
A lot of people sharing their experience in using Agile complain about their problems in meeting deadlines. We should remember that Agile asks us to work in Sprint mode, which is a short period, and at the end of it, we must deliver our product. Understanding the actual time that is necessary for product development requires a good self-estimating. In the case of a lack of responsibility and self-estimation of our team, the customer will lose trust in us and will never be sure of our work or rely on us. Here a question arises if using Agile is a good strategy for us.
Training and experience is necessary
Being Agile means having the ability to understand how to change our code in different situations. It is necessary to see ways of estimating the case in numerical points and reverting it to hours. If we are not able to provide this analysis and solve the problem fastly, we should not start working with the Agile approach. Remember, being Agile, we have to work in the Sprint of analysis and code development. All of that is about experience and training. Only programmers with tremendous and valuable experience can allow themself to try it. That is why we should be sure that our team is trained enough to start thinking about implying Agile methodology.
The management team can block our work
There are many cases when having a management team leads to the problem while our efforts for being Agile. The managers sometimes cannot get into the Agile mindset and can continue demanding specific plans for the future, asking for meetings and different reports. That is time-consuming and can be a huge obstacle for our development team working on the project. We should thoroughly organize our communication and take into account that it will take valuable time. We cannot insert the Agile style only for one part of our team, but we have to reorganize our thinking in the roots, in all departments of our company.
We still have to have a plan for a while
If we decide to be Agile, it does not mean that we deny making any plans. In multiple cases, it leads to building a wrong software product that does not either meet clients’ requirements or makes them satisfied. The product can become worse. So, for a short period after deep analysis, we definitely need to have a plan. Moreover, we need to have several programs in the future to have options for our improvement that depend on the users’ feedback.
Communication is hard
Before using the Agile methodology, all of us have worked on some other methods. However, Agile requires all of us to unite our knowledge, to cooperate, interact and work together to save time and fully satisfy current customers’ needs. In huge companies, that condition seems unreal and sometimes can lead to spars and disorder instead of software improvements. We need to understand if it is possible to be Agile in the current project in our team.
How much will clients pay the next time?
In traditional approaches, we do have a plan for several months or even years. We have an agreement that after established implementation, we will receive a substantial amount of money. However, being Agile cannot suggest that understanding. We cannot be sure what the client will need next time. Moreover, what will be changed after multiple iterations is almost unreal to be estimated. That leads to complete confusion in estimating costs in the future. If this point is essential for us, we definitely have to refuse to use the Agile strategy.
If we are agile, then we are flexible
We should not seek to implement the Agile approach just for calling ourselves “Agile team.” Of course, it is an innovative methodology, but being Agile means changing our mindset. We have to accept this concept or decide to choose any other one. Then we have to be ready to change all parts of our team and company and to reorganize our work completely. For that, we should be sure whether our developers are experienced enough to see and solve problems in sprint mode.
Anyway, part of these problems can be regulated by pre-training and hiring competent team members or thoroughly preparing all teams that participate in the project. Scrum master is a great helper in creating effective working processes for the developer teams. A strong relationship with the customer, partnership in setting the goals for the next iteration, sharing the wishes, and accepting the rules, always bring fruitful results for the software solution.
Despite difficulties in the Agile process organization, we have significant advantages like flexibility, quick reaction to the market changes, and speedy implementation of the customer wishes into a working product. These are the reasons Agile can be your best choice.