Who pays for bugs? Short answer – you do, but hopefully you have a professional software team to help you minimize and control any issues.
Prospective clients are often under the assumption with custom software projects that they are paying us for a bug-free, final software product. However, that is simply not the case. It’s not even a product you’re paying us for.
The “Professional” Analogy
Just like you hire other professionals (attorneys or CPAs or doctors) for their time and expertise, we are software professionals hired for our time and expertise. You’re paying for our team’s collective knowledge and skills to build you a high-value, maintainable software product that’s perfectly fit for your needs and is easily maintainable. What you’re not paying for is a finished, bug-free product that’s already been built and polished to the point that it’s 100% free of errors.
Simply put, our clients are responsible for picking a team that they trust, work well with, has the right capabilities, and has a set of best practices for delivering high-quality and maintainable software. It’s our job to ask the right questions to seek understanding, relentlessly attack uncertainty and risk and educate clients about the risks and options all along the way.
Budgeting for Bugs
Now just because you are responsible to pay for bugs doesn’t mean you’re out in the cold wondering if, when, and how much bugs will cost you. Part of our process is helping you budget for bugs and other ongoing costs such as maintenance and support to avoid any surprise costs or issues; this allows realistic expectations to be set from the beginning since there is no such thing as bug-free, maintenance-free software.
Just like any other valuable asset (home, building, tractor), custom software is an asset that requires regular attention and maintenance over time.
In fact, according to the Standish Group, 70% of the total cost of ownership (TCO) for software is in maintenance, not the initial development.
Keep Quality Top of Mind
Software quality means more than just the number of bugs in the application. Quality is about the maintainability of the code, the correctness of the solution to match the real-world problem, and more. Finding a team that you can trust to build you a quality product is imperative because it’s inevitable that your software will need to be repaired and enhanced over the time. Software that is easily maintainable makes these updates easier…and cheaper.
A team that is mindful of the system’s usefulness, architecture, structure, organization, readability, and extensibility are the ones that keep quality top of mind – and the ones you want building you a maintainable product.
As software engineering professionals, we take an engineering approach to our projects:
1. We take a little more time upfront to understand the real problem that needs to be solved and the context of that problem
2. We come up with a plan of action to solve it
3. We implement the solution
4. We review the solution to ensure it’s correct
Every product we build has a data model that matches real-world business concepts, is built in an organized, clean and well-structured way (but not over-engineered), undergoes manual and automated testing, frequent code reviews, and has oversight. The skeleton/scaffolding work is implemented by our most experienced team members. Practices like these, and more, mean that quality is baked into our process and into our DNA as software engineering professionals.
Overall, it is important to understand what you are getting yourself into early in the process – the costs associated, the risks involved and the team you hire because we guarantee you there will be bugs!