Unprecedented things can happen in the development world. COVID-19 has drastically changed the pace of our daily working habits, resulting in some hard delivery requirements. With or without COVID-19, the hard truth is that challenges posed even by agile product development remain the same.
Sometimes deadlines are pushed back. Sometimes the budget must increase. However, it is sometimes imperative that the project is delivered with a fixed budget, by a date that cannot be changed.
Whilst this may sound extremely difficult in today’s circumstances, it doesn’t have to be that way. Agile is invented to be flexible and to work in the favor of the team and client.
There are a number of tips to consider to increase your chances of success within the necessary parameters; which do not involve 13 cups of coffee and drastically increased working hours.
If you are new to the agile way of working on your business project, these tips will come in handy especially if you are a startup.
So, how do we manage Agile Product Development on a fixed budget?
#1 Establish the Scope for successful project delivery
This is a step that cannot be swept over no matter which project is in question. You must carry out extensive trials, product testing, user testing, and prototyping to accurately determine the scope. Without carefully considering the scope any development could go very wrong. Ensure that you define the scope in an extremely detailed manner, including a definition of the acceptance criteria.
Stanislava: Agile product development allows you to incorporate a much more flexible process in deciding the scope, as doing more detailed specifications comes later on when the sprint is about to start. Still, during this process you need to define detailed user flows, to have considered all possibilities and limitations. The detailed the better, which allows you to do a more precise estimation and eventually a successful project delivery.
#2 Provide a detailed Product Backlog
If you define the bare minimum when it comes to the product backlog, you can run into problems that require extra work as time goes on. This is not a good look for the client.
Make sure that rather than doing enough analysis and design, you are predicting, anticipating, and devising solutions. Spend time to understand what the supporting artifacts and feature details are within the project. Inform the client of these too and ensure that you are educating them every step of the way.
#3 Take advantage of the Discovery phase
Always ask to organise a discovery phase with each client before you start to work on the project. Use the discovery phase to understand the shortcomings of the project, the type of problems that may arise during the launch and how to rectify them.
Nikola: I have to conduct a discovery phase and understand the client’s requirements and wishes when starting complex Symfony projects. Sometimes, if they aren’t so tech-savvy this helps to shape up their visions. The bottom line is that the discovery phase gives a precious foundation upon which we make further estimations. This is of utmost importance, especially when we work with a tight schedule and budget fixed project.
#4 You only have one team and the client is on your team
You must collaborate with your customers by asking them questions, gathering information and analysing their reviews. In addition to this, you must set expectations for this stage of the development process. Take into account the customers schedule, as they may not be available at the times or for the duration that you need them for your data collection phase.
Educate the client about agile product development and communicate with them honestly. With complete understanding, you can avoid confusion and delays throughout the continual course of the project.
#5 Devise a Timeline for the project delivery.
Once you determine the scope, you can set a timeline for development. Of course, there may be errors, unprecedented challenges and external dependencies that change your timeline as the project progresses. However, it is still important to provide a reasonable estimate which your team will follow to the best of their ability.
The word estimate here is important. Another team would likely provide a different estimate for the same project. There is no definitive time taken to complete particular aspects of the project, so every developer that you ask is likely to provide a different length of time when asked how long a development task would take to execute.
Nikola: When we estimate tasks and determine the workload, we try to be as precise as possible, especially when there is a fixed budget. However, we tend to show projections which are later on discussed with the client, and only after that, we proceed into the development phase.
If the project is a large one, you should divide your timeline into sections of lasting around 3-5 months. This ensures increased credibility and accuracy when it comes to estimates. You do not want a dissatisfied client or team of developers when you realise that you have underestimated man hours (and therefore expenses).
#6 Manage expectations closely. Be realistic.
Remember that we should expect change as we can never predict the exact course of a project.
Stanislava: When we are limited by the time and budget, clients should be aware that sometimes the best solution is to make compromises in task complexity. In other words, we may not choose the best solution but the one that is optimal for the current situation.
#7 Choose a reasonable budget
Your analysis of the scope and the timeline for the project provide you with the information to estimate the budget. How many working hours and developers are required? Do you need any extra materials for the project? These are the factors that will influence the size of your budget.
This is why the first few tips are so important. If you want to complete your project on a fixed budget, the initial work and analysis that you conduct to devise the timeline and scope are indispensable
Every budget should include a risk margin. This can vary depending on the reliability and credibility of your team.
Always analyse your performance
If your team always delivers the project by the deadline within the budget requirements, your risk margin can be a small one. If this is not the case and your team has a history of increasing budgets and delaying deadlines, increase the size of your risk margin.
Delivering a project on a fixed budget is considered extremely difficult due to the unpredictable nature of project delivery.
Maybe there will be additional resource requirements, unprecedented extra work to ensure functionality, external dependencies and errors that appear during the execution of the project development. Unfortunately, there are no psychic developers who can estimate all three of these pivotal project requirements to their exact value.
However, with detailed work and extensive analysis, testing and research, it is possible to reduce the chances of delays and extra costs when it comes to project development.
Plan to the best of your ability, clearly communicate the possibilities of change, do not cut corners in the initial stages of development and maximise your chances of success.