What development methodology to choose for your project
Over the years of our work, we have come across all the main software development methodologies. We applied each of them separately, tried to combine different methods, used the best aspects of different approaches to meet the needs of customers. In this article, we reviewed the main methodologies and outlined the pros and cons of each.
Project type for each methodology
Startup projects where it is necessary to get ahead of competitors and release a product as quickly as possible. Projects in the field of new technologies where the results of product development cannot be predicted in advance.
Life support projects where any mistake can lead to fatal consequences.
Projects where the work of the product cannot be stopped. For example, software development for aviation.
Projects with short development deadlines.
Projects with high risks. Development of military facilities.
Agile (Flexible development model)
Agile development allows you to make changes at every stage of the project, adapt the project to the requirements of the product owner, reduce financial risks and quickly launch the product to the market.
For example, a retail company launches a portal for online commerce. At the beginning, the product framework is launched (a page with products and a basket) and tested on real users, development continues without stopping, pages with product reviews are added. Feedback from users allows you to investigate customer behavior in practice and test new hypotheses (how much the indicators will grow after changing key queries).
After the launch of the product, initial advertising campaigns are conducted and the results are tracked through web analytics. At the final stage, successful hypotheses are finalized and unsuccessful ones are eliminated.
The flexible model provides an opportunity to start development immediately after agreeing on the business model, overall strategy and functional requirements. Every day, the development team and the customer (product owner) discuss current actions, problems and future changes. New ideas are analyzed and immediately implemented.
Constant interaction with the product owner. You can track whether the product is suitable for the market, what needs to be changed and immediately make the necessary changes.
Work efficiency. Employees make their own decisions regarding the main elements of the work. Documents and tools do not define the work of the team. All processes and structures are simplified as much as possible. The team focuses only on the most important priorities in the development of the project.
Quick identification and elimination of errors. All possible problems are identified at an early stage and immediately eliminated. This also avoids problems with the discrepancy between the expected and actual result.
The danger of delaying deadlines. Constant feedback can delay the completion of the project. It is always necessary to take into account the changes that are taking place and adapt deadlines to new tasks.
It is difficult to estimate the final cost of the product. More and more iterations expand the budget and do not allow you to accurately predict the final amount.
Not suitable for new technological projects. Agile methodology is used in startups, where it is necessary to get ahead of competitors and release a product as quickly as possible, and in the field of new technologies, where the results of product development cannot be predicted in advance.
For example, when banks update software, they first discuss all the details of the project together with representatives of the bank and developers. The main purpose of the discussion is to understand how the user will interact with the system. The developers prescribe each line of interaction and carefully select the functionality. When this process is completed, all team members already understand what is required of them. At the next stage, the code is written and checked for errors. At the time of completion of the project, all the goals have already been achieved.
An Agile approach to software development, which implies openness of all work processes and continuous improvement of productivity. Each team member performs an individual set of tasks.
High concentration on current work. The team focuses on a specific task and directs all efforts to solve it. The priority of tasks may vary.
Quick troubleshooting. All team members can track progress and give feedback, which helps to promptly correct errors.
Cost optimization. Kanban allows you to analyze and predict the exact time required for the implementation of the project.
Does not meet the requirements of large teams. The method is not intended for groups of more than 5 people, and teams where employees do not know each other's functions. In such conditions, it is impossible to effectively control the implementation of the project.
A development management model with a flexible organization of work within a team aimed at creating new complex products. Scrum allows you to develop a project in close cooperation with the customer, constantly adjusting the characteristics of the product and showing the result at every stage of development.
Effective interaction between project participants. The decision-making process depends entirely on the team members. All internal processes are regulated by the developers themselves. This allows all project participants to clearly understand their functions and tasks.
Minimum control and focus on constant updates. The whole process is divided into 30-day periods with daily meetings. Any changes happen very quickly and do not require extra costs and expenses.
The high cost of developers. The result strongly depends on the professionalism of the team. Employees should have the ability to self-discipline and self-control.
Unwanted extension of the project. The lack of unified control over the implementation of the project may lead to an increase in budget spending.
Lack of flexibility in large projects. The loss of even one team member will become a serious problem and reduce the effectiveness of the project. Scrum and Kanban are used in most Agile projects.
A classic step-by-step methodology in which each next step begins only after the previous one is completed. Unlike Agile, the cascade model does not allow changes in the development stages.
Constant process control and predictability. The goals and objectives of the project are clear to developers and do not raise additional questions.
Estimation of costs and deadlines before the start of the project. All requirements are clearly stated at the initial stage and do not change during the entire process. Predictability allows you to accurately estimate future costs.
Documentation of each stage. This allows you to create a database for other projects and provide reports to the customer at any time.
It is difficult to correct mistakes. Testing takes place only at the last stages of development, so possible shortcomings must be foreseen in advance.
Lack of feedback from the customer throughout most of the project. The customer takes part in the discussion of the project goals and returns to evaluate the final result, which may not completely satisfy him.
High cost of corrections. Any mistake will lead to the need to redo the entire project. Strong and expensive business analysts who are able to accurately translate business tasks into IT language help to avoid such problems.
Where it is used
The cascade model is used in the implementation of life support projects, where any mistake can lead to fatal consequences. Waterfall is also preferred by military and air organizations, which require strict requirements for the implementation of projects. A similar model can be used in the development of software for traffic lights. At the initial stage, the project must be agreed with the customer and all documentation must be prescribed. After that, the architecture will be selected, the code will be created, testing will be carried out, integration and error checking will be carried out. Each of these stages will strictly follow one after the other.
A type of cascade model that provides for testing already at the early stages of the project. The model has gained particular popularity in the field of avionics (electronic systems on board an aircraft), where it is very important to control every single step of the software development process.
Risk reduction. Continuous testing minimizes the possibility of costly errors.
Cost reduction. The price of all stages of the project is easily predicted and does not change.
Adaptability for users. The V-model clearly captures and implements the basic requirements of users for the product being developed.
The difficulty of correcting fundamental errors. There is no specific mechanism for solving the problems identified at the testing stage.
Lack of flexibility in the development process. Development begins only after the transition to the next stage. No pre-templates are provided. This may make it difficult for the customer to understand the process.
Where it is used
In areas where the work of the product cannot be stopped. For example, the development of software for aviation is a complex documented process, where each level is carefully prescribed and any error is tracked. Testing begins only after a thorough analysis of the requirements described in the documents. This process takes a lot of time and requires a high level of professionalism from the performers.
RAD (rapid application development model)
RAD allows you to quickly get the desired result in a short time. This is achieved through constant interaction with the customer, timely clarification of requirements and analysis of results. Such a model can be used in the development of a platform for analyzing and processing purchase orders (purchase order). The rapid creation of the initial prototype is ensured through close cooperation with the procurement department. After the first launch, it is necessary to immediately introduce users to the application. This will allow you to identify and correct possible errors and inaccuracies.
Quick completion of the project. A professional team, effective tools and prototyping ensure a high speed of implementation of the development process.
Minimum budget costs. The product elements are developed and implemented separately. This eliminates the errors inherent in the cascade model.
Customer engagement. The customer becomes an active part of the project already at the early stages of development. High quality. It is provided by the constant interaction of users with future prototypes of the product.
Dependence on the customer. The customer and the developers may have different ideas about the product.
Small and medium scale projects. RAD is difficult to apply for large projects where enhanced control is required and there is no way to divide the process into small parts.
Where it is used
In projects where it is required to complete the development in a short time. So, when the financial department of a company wants to get a convenient platform for compiling reports on business trips, we can use the RAD method. Together with the company's employees, we create a convenient prototype of the product and immediately test it. This allows all users to quickly make changes and improve the platform. The result of this development is a significant reduction in the processing time of travel documents.
A convenient model for risk analysis. Ideal for solving key business tasks, launching a new product and conducting research.
Elimination of risks at the early stages of the project. This step becomes the key in this model.
Flexibility at all stages of development. The possibility of making changes exists throughout the project.
Long and expensive development. The spiral model requires a lot of time and money to implement the basic principles and attract qualified specialists.
High dependence of the result on the stage of analysis. If a mistake is made at this stage, then changes to the project will require large costs.
Where it is used
In projects where it is necessary to analyze a large number of risks. It is often used in the development of satellites and military facilities.
A small life hack
Choosing only one method does not guarantee the successful completion of the project. The customer must take into account various aspects of the product when choosing a particular type of development. We sometimes combine different approaches to achieve the desired results. Each of the listed methodologies has its own purpose and scope of application. Our experience allows us to determine the type of development that suits the customer. We are always ready to help in choosing the optimal approach to solve the problems of your business.