Custom Software: Expectations vs Reality for Businesses
Deciding what software to run your business on is one of the most important technology decisions you will make. Sometimes during this process, it can feel like there are very few good options to pick from. Having custom software built for your business has its perks, though pitfalls can complicate things; however, this can be said of commercial software too.
In this article, I will discuss:
- The differences between Commercial and Custom Software
- The differences between Configuration, Customization, & Integration
- And finally Total Cost of Ownership
How to tell Commercial from Custom Software
What is Commercial Off the Shelf Software?
Commercial Off the Shelf Software, or COTS, is a term that refers to software that has been developed and refined for resale. These commercial platforms are designed to accomplish specific tasks within their area of expertise and are often built to be somewhat generic. By generic, I mean that they can span many different industries and verticals of customers. As a result, these platforms can sometimes do many things that you do not require for your business, but they support other industries that also use the software. Some COTS platforms may allow customization through scripting or integrating while others may only allow configuration of predefined functionality.
Some of the reason you would lean towards this approach include:
- If you have seen a product that follows best practices and general market strategies to drive results
- If you have a strict budget
- If you have shorter timelines that cannot be extended
- If you pre-built features direct from the vendor
COTS software comes in many different packages today. The most popular of which is Software as a Service or SaaS. SaaS platforms are web-based applications that you subscribe to, and which host your data on their servers.
What is Custom Developed Software?
Custom Software is software that was developed for your unique use case and specifications. It involves hiring developers/software engineers, architects, user experience (UX) analysts, project managers, and more, to build a solution from scratch.
Some of the reasons you would lean towards this approach include:
- If you have exhausted all COTS options and found nothing suits your business and user requirements
- You have strict workflows that cannot be altered nor adapted to fit existing systems
- You have found suitable COTS solutions, but the amount of “customization” required is cost prohibitive
- You require complete control over customization
Depending on your business model and budget, you may decide that hiring a software development company with all these resources has a better ROI than hiring employees directly. Building a detailed design specification that explicitly outlines all the functionality, workflows, and the user interface is crucial to a successful project to ensure you get what you are asking for. While this will be much more time-intensive than most COTS solutions, the result will be tailor-made to your business.
Configuration, Customization, and Integration.
These three (3) terms are used throughout the software industry and are often confused by the lay person. While all of these will allow for a software solution to be changed and/or enhanced, the changes and enhancements are done in very different ways.
Configuration
Software configuration is about settings that developers have exposed via user interface and allows the users of a solution to do things such as enabling features, customizing display of data, setting user permissions, and much, much more. Configuration does not allow you to change everything about a solution, rather only the options that have been made available. Both COTS and custom software can have Configuration available. With COTS, the more configurable the solution is, the more features, power, and complexity the solution should have.
With custom developed software, Configuration is typically only provided when business needs dictate them, which means Configuration does not indicate the features, power, and complexity of such a solution. This is due to the nature of custom developed solutions that are designed to meet the business needs rather than relying on Configuration to tailor a more generic solution to more closely fit those needs.
Customization
Software customization typically happens in one of 3 ways: 1) Integrated Scripting Support, 2) Highly Complex Platform Editors, or 3) Changing of Source Code. With COTS, the ability to edit source code is not an option. The exception to this would be COTS solutions that are considered Open Source, meaning there is a community that built the solution, and the source code can be changed under the Open Source licensing agreement it is published under. Not all COTS solutions provide scripting support nor platform editors, so it would be something to look out for when differentiating ability to change the solution.
It should be noted that Customized COTS solutions and COTS solutions are not in the same league when it comes to cost and effort. Even small customizations to COTS solutions can incur large timeline increases, significant development overhead, and higher costs due to limitations imposed by COTS solutions. Highly customized COTS solutions can even be more expensive and complex than a full custom developed solution.
Custom developed solutions typically mean you own the source code the solution is developed with. This means you have full control to customize the solution to meet your business needs. While a custom solution can have scripting support and platform editors added, this is typically not done as the return on investment is very low when compared to changing the source code. This means you can customize the solution as much as you want.
Integration
When it comes to software, integration refers to having external software communicate with the system to either pull or push data. How interactions are done is dependent on the platform the software was built on. For example, web versus desktop versus mobile. Integrations are typically used to extend functionality of one system by using prebuilt functionality from another system. This can be seen in a scenario where your software is used for managing projects and you want to extend it by integrating with an accounting system to track costs and produce invoices.
While both COTS and custom software can have integrations, not all systems are designed with integration in mind. Many COTS solutions do not offer integration capabilities and custom software needs to have integrations built from scratch. This means if integrations are crucial to your business, you will need to consider the options and costs associated with either COTS or custom software solutions.
Total Cost of Ownership
Concerning software, Total Cost of Ownership, TCO, is typically the all-in costs for licensing, implementation, infrastructure, and maintenance over a five (5) or ten (10) year period. TCO is typically used to evaluate the financial viability of a technology solution to allow you to compare options fairly.
What is the Total Cost of Ownership?
By considering all financial costs over five to ten years, you can account for solutions that may have a low upfront cost and high ongoing cost versus a solution with a high upfront cost and a low ongoing cost. Another thing to consider is that if a solution is advertised as free licensing it does not mean that there are no other costs associated with it. For example, you may decide to use an Open-Source licensed web-based application. While there are no license fees associated with this, you will still have implementation costs, ongoing hosting costs, and potentially ongoing consulting fees for assistance.
Custom Development TCO
When it comes to Custom Development, the associated costs are sometimes not apparent. Depending on the development firm you are using, you may have some or all the following costs to consider:
- Upfront Costs
- Software Design and Scoping
- Software Development
- Including developers, user experience design, business analysis, etc.
- Graphic Design & Branding
- Copywriting
- Quality Assurance Testing
- Project Management
- User Acceptance Testing
- Bug Fixing
- Go-live Migration
- Ongoing Costs
- Framework and Library Licenses
- App Store Developer Accounts
- Payment Processing Fees (if you process payments)
- Web Hosting (for developer, testing, and production environments)
- Bug Fixing
- Feature Enhancements
- Maintenance & Support Agreements
Commercial Software TCO
For Commercial Software, the costs associated are more clearly defined. Depending on the vendor and the licensing model they are using, you may have some or all the following costs to consider:
- Upfront Costs
- Perpetual License Fees
- Implementation Costs
- Consulting Fees
- Training Fees
- Customized COTS
- Development Costs
- Increased Licensing Fees (in come cases)
- Ongoing Costs
- SaaS License Fees
- Web Hosting
- Maintenance & Support Agreements
- Consulting Fees
- Ad-hoc Support Costs
- Customized COTS
- Bug Fixing
- Updating Customizations to Support New COTS Versions
Comparing TCO’s
Custom developed software has a very high upfront cost when compared to commercial software counterparts. While ongoing costs are typically much lower, that is not always the case. The exception to this is Customized COTS solutions which can have both higher upfront costs and higher ongoing costs. To make sure you are truly comparing “apples to apples”, ensure you capture all costs involved. The key when comparing solutions from a cost perspective is to ensure you are comparing over a five (5) or ten (10) year period. This will give you a proper long-term comparison of costs. If you only compare year one costs, you may not be including larger recurring costs that could greatly affect your decision.
In addition to hard costs that are easily definable, you may want to include soft costs. These are less definable but can have a large influence on your costing decision. For example, you may want to consider the cost saving from automating a previously manual process. Such an automation would free up user(s) for other revenue generating tasks. The potential cost implications from this can be twofold: 1) higher productivity, and 2) generating more revenue.
Pros & Cons
Commercial Software
Pros
- Meets general needs of business
- Shorter implementation timelines
- Easier to research based on other user experiences
- Typically, very configurable
- Shorter implementation timelines
- Meets general needs of business
- Typically, lower upfront investment
- Typically, very configurable
- Shorter implementation timelines
- Easier to research based on other user experiences
Custom Software
Pros
- Meets exact needs of business
- You own the source code
- You can work with any developer/firm
- Provides a competitive advantage due to uniqueness
- Highly customizable
- Provides a competitive advantage due to uniqueness
- Meets exact needs of business
- Highly customizable
- You own the source code (no licensing)
- You can work with any developer/firm
- Provides a competitive advantage due to uniqueness
Cons
- Sometimes requires changing business processes
- Dependent on Software Vendor for enhancements/new features
- Limited to no customization capabilities
- Customized COTS has long implementation timelines
- Highly configurable solutions typically have high up-front consultation and implementation costs.
- Sometimes requires changing business processes
- Limited to no customization capabilities
- Customized COTS has long implementation timelines
- Customized COTS can have high upfront investment
- Ongoing licensing costs
- Dependent on software vendor for enhancements/new features
- Highly configurable solutions typically have high upfront consultation and implementation costs
Cons
- Longer implementation timelines
- Scope can easily creep and expand
- Longer implementation timelines, when not compared to Customized COTS
- Configuration capabilities can increase TCO
- Typically, higher upfront investment
- Longer implementation timelines when not compared to Customized COTS
- Configuration capabilities can increase TCO
- Scope can easily creep and expand
Conclusion: Deciding Your Path
The decision between a Custom and COTS solution is one that can have broad consequences that are experienced years later. When making such a decision, it is vital to consider your specific business requirements and each software system will need to be evaluated individually. If you need something you can plug in and use right away and are comfortable changing your processes to match that of the solution, then you should choose COTS software. If, however, you find that your requirements are very unique, have the time to implement, and the budget to accommodate, then you should choose custom software development. When making this decision, try not to let the cost be the only factor you consider if wavering between both options, choose wisely. Once you decide to commit to a product, it will be a very large effort and expense to change to something else afterwards.
Originally posted by Chad Ross on DevFacto.com in a 3 part series as Part 1, Part 2, Part 3