If developed without a methodology, a product may not work, and resources will be wasted. In this article, we’ll explain why OrbitSoft uses Agile and Waterfall methodologies.
What is a Methodology
When we say methodology, we mean a work planning tool for a development team. Two popular methodologies are Agile and Waterfall. There are others, but they are less often used, so we won’t discuss them in this article.
Waterfall is project management methodology that involves a sequential transition, from one stage to another, without skipping or returning to previous stages.
Agile is a system of ideas and principles of flexible project management. The key principle is development in short iterations. The project is divided into several functions, with each function being developed in parallel.
Methodology Selection Criteria
Customers who outsource development don’t always have a preference in methodologies. In this case, we consult with the client and ascertain the needs of their business. We choose a methodology based on the following criteria:
Criterion 1: Are clear technical tasks defined? The technical tasks are needed so that the developers understand precisely what kind of product the business wants to realize. An architect, designer, or analyst asks the customer what tasks the product should handle, and then describes the functions in the form of these requirements. Next, the time frames and budget are calculated, and the project is sent to the customer for approval
Waterfall requires an exact technical task. The customer formulates the task just once, describes the requirements in detail, and sets deadlines. There’s no need for them to get further involved in the process.
Agile allows you to get started on a project with just a rough understanding of the finished product. But with each iteration, the customer evaluates the results.
To understand the degree of uncertainty in the requirements, we ask the customer the following questions:
- How would you describe the project? As a startup, or a ready-made system?
- What functions do we need to create?
- Are there documented business requirements?
- Is it possible that the requirements may change?
- Will feature improvements be needed?
|Project Description||Example of a technical assignment||Which methodology to use|
|Fintech Start-up||Develop an application for different types of platforms for transferring money to foreign partners||Agile|
|Functioning system, banking application||Connect an additional payment gateway for receiving payment via mobile phone||Waterfall|
Criterion 2: The importance of timing, and the required level of quality. When choosing a methodology, you need to understand which is more important to the customer right now: launching the product by a specific date? Or qualitatively finalizing the functions (without a strict time limit)?
Waterfall helps a team create a complete product, as well as adhere to deadlines, as long as there are few development functions, and they are detailed. If the product is complex, and the implementation takes a long time, there is a risk that the project could become outdated and irrelevant at the end of the process.
Agile allows you to launch a project with a short time frame, but with truncated features. It’s assumed that the refinement of functions will occur in the process of use. The methodology forces you to prioritize which functions are more important than others, and which can be developed later.
To understand which more important, timing or quality, we ask the following questions:
Do you need to develop the product by a specific time?
- What exactly should work by a specific deadline?
- Without which functions is it impossible to start the project?
- Which features can we sacrifice for quick launch?
- What is a completely finished product for you?
|Project description||Example of ratio of timing and quality||Which methodology to use|
|Application for ordering cleaning||It’s important that, after a month, customers can order cleaning. The function of choosing a cleaner can be added later.||Agile|
|Flower shop app||The function of placing an order by phones of florists by March 8||Waterfall|
Criterion 3: Customer development budget. The budget includes the cost of services of specialists and development tools, i.e., renting servers, clouds, purchasing licenses, paying for consulting, etc.
Waterfall can be more cost-effective for the customer than Agile. Usually, tasks are well described and understandable. A specialist won’t need to frequently switch between different tasks, making changes in the process. Initially, it’s clear what kind of specialists will be required to complete the tasks at hand.
Agile is more demanding on the customer’s budget than Waterfall. Developers must not only be able to program, but also follow the rules of the system, participate in meetings, and conduct retrospectives. As product requirements can change, there’s a chance that the customer may have to hire new specialists during the development process.
To calculate a budget estimate, we ask the following questions:
- Will your specialists participate in development?
- Do your specialists know how to work in Agile?
- Are you ready to hire specialists during the development process?
- Are you ready to describe the product in detail?
The choice of methodology depends on the requirements that the business and users have for the future product. For some projects, Agile is appropriate. For others, Waterfall.
|Project||For startups and products with a high degree of uncertainty||For small projects with a low degree of uncertainty|
|Functional requirements||No need to describe in detail||Detailed terms of reference required|
|Product testing||Separate, ready-made features are tested every spring||After completion of development, the product is tested comprehensively|
|Documentation||Upon completion of the project, during the development process, instead of documenting, Scrum, and Kanban boards, are used||Documentation at the design stage|
|Team||Need a high-level, cross-functional team||Mid-level developers|
|Release||Viable tools are released after each spring||The product is fully released after all functions have been implemented|