Digital technology enables organizations to boost productivity and better engage with customers. However, many technology initiatives continue to see cost overrun, damaging the bottom line and undermining the value of software development efforts.
Estimating costs is no simple task. Companies have to account for human resources, user requirements, application features, infrastructure, and even the cost of coding in specific languages. Smart budgeting requires a forward-thinking approach to project planning, with a strong vision of the software’s purpose and its ability to deliver on business goals.
In serious situations it can become necessary to go back to the drawing board and reassess how to fund your IT initiatives. To avoid this, here are some practical tips for creating an effective software development budget in 2020.
Agile is a collaborative, iterative approach to software development in which engineers perform multiple sprints to quickly produce a functional minimum viable product (MVP) that delivers business value. In budgetary terms, this translates into smaller payments per iteration, as opposed to larger sums at set intervals, which may bear little relation to the actual progress of your initiative.
Quality assurance is a core part of Agile, with early problem detection reducing the costs associated with buggy code in production. There’s also an overarching focus on collaboration and communication, which allows business leaders to see where the budget needs tweaking and what decisions will ensure the project meets the right objectives.
“Velocity” in an Agile development setting refers to the time taken to perform work within each sprint. Each individual piece of work – for example, adding a function or designing a single page – is also known as a “work unit”, which can be measured to break down the calculation even further.
A smart software development budget is based on an estimate of how many units the team can complete in each sprint. These points will help determine the length of time it takes for each iteration, and thus predict the team velocity and overall project cost.
Once you know how much each sprint will cost, you need to understand the best-case, worst-case, and most likely cost scenarios. As an example, if in the worst case you’ll need to do eight sprints, the most likely scenario could be six sprints and the best case four. In making these estimations, consider the experience of your team and the accuracy of past estimations – more mature, experienced teams should be able to estimate accurately. Make sure not to use the same velocity metric across different teams and projects – each team has its own characteristics, and own approach to user stories.
However, be aware of a risk when you are involving your colleagues from other functional areas as their knowledge of Agile might be either low or non-existent and they may be tempted to force you to use these estimates to request fixed bid contracts from vendors with the idea that this might be lower cost or more predictable. The truth is that the majority of failed projects and blown software budgets happen exactly for this reason. Even with the best estimating techniques, almost every software piece is a unique endeavor so it’s hard to predict with 100% accuracy the cost and duration of every feature.
If you need to outsource some or all of your work your best route is to not abandon agility, but rather engage with your software development partner in an agile manner. Here you can maintain visibility and control over the work that is being conducted and you and your partner can engage in sincere, collaborative discussions to prioritize work according to current business priorities rather than what was needed months ago when the budget was put together. Remember that the goal of software is to create value as soon as possible, to your users, to your customer and to the company overall, so managing only to budget may not be the best approach.
Whether you’re budgeting for a brand-new deployment or the improvement of an existing platform, prioritize features and functionality that will guide the project in the short term.
With an MVP, the emphasis is on the M, for “minimum”. Keep it simple by prioritizing the most essential aspects of the software and budgeting for them accordingly. This approach makes it easier to estimate the potential value of the software after each iteration.
From a planning perspective, it helps to produce design ideas and wireframes, or at least share examples of competitors’ products, to give developers a sense of how the software should look, feel, and function. Along with increasing the overall agility of the team and reducing costs, this process helps to link functionality to tangible business benefits and makes it easier to maintain a dynamic software development budget that doesn’t overrun.
For many years, organizations have been enlisting the support of third-party vendors to reduce costs and gain much needed skills and capabilities. For companies looking to improve the results of their software development budgets, outsourcing is a tried-and-tested method of reducing overall costs while introducing long-term value to the business.
While you may be able to achieve some form of agility with partners in Asia and Eastern Europe as an American client, if agility is a top priority, Latin America offers great alternatives with companies that have almost two decades of experience practicing Agile methodologies as their geographical proximity, time overlap and culture offer great advantages.
Software development projects are continuous endeavors that are far from complete after version 1.0. This means it’s important to budget for the continual evolution of your applications – and setting aside time and resources to handle your technical debt. Failure to address technical debt can lead to problems down the line – as you’ll be so focused on handling existing problems, you can’t keep up with competitors who have a more nimble and flexible technical stack.