Software project budgeting is a tricky field, as you might have already noticed from my previous articles on the topic. Balancing staff, money, timeframes, and return on investment may sound simple enough, but in practice, it is often easier said than done. When one component “outweighs” the others (or, on the contrary, is not given enough “weight”), the balance might be thrown off and cost you a project.
In this short article, I would like to share some recommendations on avoiding common budgeting mistakes and creating realistic, well-balanced project estimates.
Don’t Hope for a Quick Production-Level Solution
It is vital to distinguish between a prototype and a production-level solution. A prototype is built to test a technology or demonstrate an idea. However, a customer might think that if that much of the application is ready, it won’t take long to develop a production-level solution. This logic leads to inaccurate time estimates and budget overspends.
Once production has started, what has been learned from the prototype can be included in the design, but generally, production takes time due to multiple details that need addressing. You plan to publish your app on Google Market? Don’t forget security testing. You want to develop software for medical devices? Be sure it is interoperable and compliant.
Thus, you should understand that if prototype creation takes a month, development of a production-level solution might take a year or longer.
Don’t Rely on Interns for Mass Software Production
Imagine you’re running an innovative software development project. Who would you hire: a smart tech student or a team of skilled and experienced pros? In practice, many prefer the first option because, not surprisingly, it is less costly. An eager and savvy intern can indeed help you with simplified prototype development and testing. However, when it comes to the mass production of complex software systems, one man is simply not enough.
Software production is “where the rubber meets the road.” That is, it’s the point at which not only developers but also third-party users interact with your software and test its performance. Reliability, scalability, usability, security, and compliance are only a few things that come to the fore. An engineering team can deliver it within a reasonable timeframe and budget; one person (even the smartest MIT student) can hardly deliver this at all.
Thus, production is a multifaceted process that requires a team of experts working synchronously under the guidance of an experienced project manager.
Don’t Ingnore Interim Releases to Ensure Desired Results
It cannot be overemphasized that high customer involvement is very welcomed in software development projects, and in Agile projects, it is necessary. In the changeable tech environment, requirements evolve rapidly, and regular releases help us keep pace with the pulse of change.
The main aim of our demos is to get customer feedback to make sure we are moving in the right direction or make timely corrections and reformulate goals when necessary. It saves time and speeds up delivery. Otherwise, you might be dissatisfied with the developed solution.
I strongly recommend you, as a customer, keep track of interim releases to ensure the actual results match your expectations.
Don’t Underestimate Software Testing
Why do we test software? Can’t we produce code without bugs straight away? Unfortunately, we can’t, as we are only human and humans make mistakes. However, what we can do is quickly identify and fix them.
Moreover, mistakes come in various forms; for example, functional errors (Help, I see the blue screen of death in Windows!), verification fails (OMG, we forgot to implement that critical requirement!), and other critical bugs that only a professional tester can find.
Test early, test often, test everything. A skilled test engineer helps you diagnose a variety of issues and ensure high performance of your solution.
In conclusion, no matter the timeline, size, or budget, project estimation is no easy feat. Incorporate a healthy dose of realism into your budget; think of a suitable approach and the various risks you may encounter. Finally, learn from others’ mistakes to avoid making your own that could be difficult to reverse.
— Vyacheslav Vanyulin, General Manager, Auriga, Inc.