6 Hidden Costs of Custom Software Development - How To Avoid Budget Creep
September 11, 2020
Embarking on the first custom software solution for your organization is exciting. There is no more trying to fit your square peg processes into an out-of-the-box round hole. The giddy feeling is akin to moving from an apartment to your first home. There's a newfound freedom. There are no more stuffing boxes under the bed. You can paint the rooms whatever color you want, and hang pictures on the walls with real nails. But once you have bought your dream property, reality sets in. The homeowners' fees are astronomical, the windows let in drafts, and the water heater is making weird noises. The potential expenditures that you face AFTER you buy your house can be overwhelming.
Your custom software project experience can end up making you feel much the same way. The costs beyond "fingers-on-the-keyboard" development can be significant. Estimates for custom development projects can range widely from $25,000 for a small mobile app MVP to hundreds of thousands for a large enterprise rollout. Your "just a few features" application begins to become much more complex and costly. How do you prevent your software development from becoming a "money pit?" Understanding, in advance, the hidden costs that can impact your project will help you avoid potential pitfalls.
1. Technical Debt
Learn From The Titanic
You remember the movie, Jack and Rose floating on a board in a cold ocean. It didn't end well for Jack and the other two-thirds of the passengers on the ship. There undoubtedly would have been a better outcome if the Captain of the Titanic had been better prepared to deal with what lay below the ocean surface.
Custom software applications are like icebergs. Users experience just the top 10% - the stable functionality and the beautiful user interface. They don't see the other 90% - the efficiently written code, the security and risk management infrastructure, seamless payment integration, or scalability capacity. Addressing the 90% of the application iceberg at the outset of a project can minimize your potential "Technical Debt." Technical Debt is a concept in software development that reflects the implied cost of additional rework caused by choosing an easy (limited) solution now instead of using a better approach that would take longer. Agile Alliance shared an overview of its impact on projects and organizations. Ward Cunningham, one of the Agile Manifesto authors, once said that "some problems with code are like financial debt. It's OK to borrow against the future, as long as you pay it off." Cunningham added, "If we failed to make our program align with what we then understood to be the proper way to think about our [data model], then we were going to continue to stumble on that disagreement which is like paying interest on a loan. Shipping first-time code is like going into debt. A little debt speeds development so long as it is paid back promptly with refactoring. The danger occurs when the debt is not repaid. Every minute spent on code that is not quite right for the programming task of the moment counts as interest on that debt. Entire engineering organizations can be brought to a stand-still under the debt load of an unfactored implementation, object-oriented or otherwise."
Don't Feed The Freak
The slippery slope of adding "just one more" 'feature is not uncommon. Even a tech giant like Facebook can fall prey to feeding the "Feature Freak." The social media leader announced a significant new design overhaul (AKA costly) last year. Feedback was not what the development team expected. Many users complained that the new features were confusing and that they were overwhelmed by numerous ads. While even established organizations can fall prey to feature bloat, it can be incredibly destructive to cash-lean startups. Keeping an eye to the original vision for the product and its MVP will help your team manage costs.
3. Software Security
Creating A Safe Space
Beyond creating a streamlined and excellent user experience, ensuring that your software is secure is critical to customer adoption.
However, TechRepublic reports that a staggering 60% of developers lack confidence in their code security. Ensuring that your solution avoids massive security fails like those experienced by Uber, Marriott International, or Equifax is definitely possible, but certainly not free.
Key Security Considerations
Verify third party code
Test the code at each step
Look for opportunities for exploitation
Ensure global compliance - i.e., GDPR
4. Hosting and Servers
Home is Where the Data Is
Going back to our new home analogy, once you are comfortably moved in, that great stove is of no use without electricity or natural gas. The master bath is just a pretty tiled room without hot water or a flushable toilet. Just like people, the data that flows through your application needs a place to live and a way to interact with the software. Software and applications require a server to access information, manage content, store data, and to send push notifications. Amazon Web Services (AWS) is a common choice, as is building your own servers. All of this comes with a cost as well. Hosting and server costs are driven by the number of users, frequency of requests, type, and amount of data that you are managing. This is a crucial cost to consider at the startup stage as data cost can grow geometrically as you scale.
5. Maintenance Costs
You Can't Call The Super Anymore
When you had maintenance issues in your apartment, you just called the building superintendent. In your own home, you are creating a space that is yours - custom to you. Along with all the wonderful benefits of homeownership comes the responsibility of keeping it up to date. Your software, too, needs regular maintenance. It is estimated that the ongoing maintenance costs for medium-sized enterprise applications can range from $5,000 to $11,000 per month. A Forrester study reported in the mid-2000s that annual legacy outlays can grow to 50% of the original project development cost. A $100,000 solution could result in an organization incurring an additional $50,000 in expenditures annually. If a software project was designed well from the outset, why will it require so much maintenance? Well, just like a home, your application will experience wear and tear during regular use and will require upkeep to ensure that it continues to serve its intended purpose. Application maintenance categories include:
Corrective maintenance: Fixes problems discovered in everyday use
Adaptive Maintenance: Modifications to keep your software working properly in a changing environment
Updates to enhance functional capacity
Ensure that your application works with new browsers
Adapting a product to integrate changes in API connectivity with other services
Perfective Maintenance: Improvements to your software that enhance performance
Restructuring to increase speed and reduce data costs
Streamlining the code to improve readability and simplify future updates
Preventive maintenance: Updates to avoid future problems
Implementing more robust authentication for enhanced security
Addressing future core functionality issues - i.e., in Y2K - moving from utilizing two digits to four in advance of the new Millenium
6. Team Capabilities
DIY Can = More Time + More Money
We have all seen DIY television shows. You know, the ones where a couple buys the ugly neighborhood duckling and turns it into a swan - flipping it for a considerable profit - all in 30 minutes. What you don't see is that behind the scenes, a subcontractor is managing the process. The sub hires electricians, plumbers, landscapers, roofers, etc. and makes sure that the work gets done correctly, on time, and within budget. If you have undertaken a DIY project of your own, you know that it inevitably takes longer and costs more than you anticipate. Also, you likely missed out on time with your family and getting much-needed relaxation for several weekends.
The same principles apply when your small startup takes on a large custom project. While running lean is great for your burn rate, it can hinder your development efforts by extending the length of your project, costing you more cash, and increasing the chance of lost opportunities.
Working with a tech partner that has extensive experience, especially in your market, will help you navigate the complex landscape that comes with creating custom software. They are essentially your building subcontractor. They will help you find the right feature balance, reduce your exposure to risk, help you manage current and future costs, and ensure that you have the resources to keep your project in-scope and on-time. Additionally, the right partner will maximize your operational flexibility by increasing your in-house capacity while still ensuring that your vision for a custom application is realized.