In this article, we'll explain why we switched from Waterfall to Agile and the outcomes that followed.
We used to use the waterfall methodology for managing our products. It was natural as its easily understood and widely used across different sectors. It's also taught in every management field at universities.
The methodology we follow involves gathering all inputs from the customer at the beginning of a project, which serves as the foundation for the entire project. Any changes or differences are addressed first from a contractual point of view before implementing them in the code. Based on the agreed-upon inputs, we offer a fixed price for the project. To manage the project effectively, we divide it into phases, and the customer pays after each completed phase.
Our methodology consists of four phases:
In this phase, we conduct a thorough analysis of the customer's inputs, business goals, processes, and marketing strategies. We also determine functional and non-functional requirements and supported devices. This analysis helps us create project documentation, which outlines the proposed solution, sometimes including wireframes. Additionally, we perform a technical analysis to describe the proposed architecture, technology, and database.
During this phase, we divide the project into technical tasks, estimate the tasks, create a budget, and provide the customer with an overview of the expected costs of implementation.
This phase involves working on the graphic design of the solution. We provide the customer with 2-3 iterations of feedback on the design before beginning the implementation of the planned tasks. Throughout this phase, the customer receives periodic updates on the progress of the project, with a final product delivery at the end. Any new requirements introduced during this phase are considered as additional work and must be estimated and approved by the customer.
After delivering the finished product to the customer, we typically agree on an SLA contract and provide ongoing support for the solution over a defined period. If the customer would want to leave at any phase of the project we would have to agree on terms & conditions of cancelation of orders and the contract.
We do not say that this approach is completely wrong. It can fits for some small projects, or building the same software solution for every customer. But this is not what we usually do. We build custom software for our customers. We are able to provide rouch estimates based on our previous experiences but the more complicated project is or big it becomes impossible to specify every detail at the beginning of project by us or even by the customers.
Sometimes happened to us that during the development the responsible person from the customer part or their company process changed. Or that when customers finally saw the developed feature or graphic they find out that it needs to work differently or needs to change something due to changes in end users' behavior or in the market.
All these things meant changes in the requirements usually of the already developed product. At the end customer was not satisfied with the project because the original requirements were not reflecting the real needs and we were not satisfied with the project because of the growing costs of the project and very hard negotiation with clients about additional resources needed.
Limitations of Waterfall methodology:
That is why we slowly started to change the approach with new clients.
In the beginning, we did something between Agile and Waterfall more like a hybrid. Customers were not used to agile and did not trust it much at the beginning so we compromised. We agreed on Fix Timeline and approximate budget based on specified requirements. The difference from the previous waterfall methodology is that we used close cooperation with clients from agile. We divided the delivery into sprints, we did a demo to the customer every 2 weeks and we were working on specifying the requirements at least sprint ahead.
The cooperation with the client and their satisfaction with the end product was much better but still, the product backlog grew during the project so the timeline had to move also. The disadvantage of this cooperation was again a lot of time spent on reporting and defending every additional hour we had to spend. It was not a win-win partnership we wanted to have.
We knew that the next cooperation had to be purely agile. We reworked our contracts and over the years the Agile methodology and its benefits started to be more known among customers.
Why Agile?
We prioritize honesty and transparency when starting a project with clients. Rather than promising fixed dates and prices, we provide rough estimates based on initial ideas or specifications.
However, we work closely with the client to refine the end user needs and requirements, and to adjust the scope of the project to fit within a possible budget.
Our primary objective is to provide exceptional quality work to our clients, and we prioritize this by relying on our extensive experience, expertise, and unwavering commitment to every sprint. We believe that by closely collaborating with our clients and consistently refining end-user needs and requirements, we can deliver high-quality work that is aligned with their expectations. Furthermore, we are committed to ensuring that our clients have complete control over their projects and are free to choose another software provider if they are dissatisfied with our services at any time.
We believe that our success as a software development company is ultimately dependent on the satisfaction of our clients, and we strive to ensure that every project we undertake results in a positive outcome for both parties.
From the agile methodologies frameworks we use mostly Scrum but for some projects also kanban. We mostly work in short - 2 weeks iterations and show, discuss and iterate on the results with customers at the end of a sprint. We gather feedback, transfer it to task and prioritize based on agreement with the customer.
If a customer needs a sudden change of direction its not a problem because in agile we are not bound by any fix contracts or any rigid processes. We just clarify the needs with the customer and plan the change from the next sprint if necessary.
Blog posts you may be interested in
New blog posts you may be interested in
We help startups, IT companies and corporations with digital products.