Innovation can be an exciting endeavor and on occasion management and developer decisions will optimistically estimate the cost implications for the project. The optimism can sometimes come from a short-sightedness or knowledge gap in understanding what is involved in the total cost of ownership for developing embedded software. Let’s look at the five major cost contributors that affect the total cost of ownership.
Contributor #1 – Software Licensing
The number one misunderstood cost contributors for developing embedded software is the cost of licensing third party software. Now don’t misunderstand, using third party software is absolutely critical to controlling costs and getting to market in a reasonable timeframe. Despite the development costs to create software, many development teams hate paying for software and rather than license a commercially available product with exemplary support, they would rather use open source software. Open source software can be excellent but teams habitually underestimate the time it will take to get up to speed on the free software, the time spent in lonely debug sessions with no support and integrating the software with other components. So even if the software is “free”, the cost to use that software is not zero since time must be spent learning, educating, integrating, testing, debugging and maintaining the licensed software. I suspect the price tag for all that is not free but many teams that I encounter overlook these critical points.
Contributor #2 – Software Development
The cost contributor that most teams are familiar with and focus the most on is the development costs! How many hours will it take to build widget X? Teams always seem empowered by throwing out some imaginary number that is based on intuition and guesswork rather than any metric or historical data and then marching madly towards the time abyss. At the projects end, development costs include all the hardware, software and infrastructure required to develop a system in addition to the fully loaded labor costs (salary, vacations, benefits, taxes, insurance, etc) associated with the developers, managers, interns and their favorite source of caffeine.
Contributor #3 – Software Maintenance
The cost to maintain embedded software can be the single greatest factor to the total ownership costs. All the focus is on what it takes to get to market and rarely does anyone consider up front the cost to maintain the software so that it remains marketable. Software maintenance requires keeping key personal available to the project after all the fun development has been completed and must deal with team member turn-over. Undoubtedly requiring investment in training junior engineers or new personal. Maintenance engineers must add new features, remove bugs, tool updates, revision control and customizations to name a few. Depending on the product, just maintaining and keeping software versions straight can require a significant investment. Despite all these factors, usually only the development costs are initially considered when developing a new product.
Contributor #4 – Certifications
Just because a development team can do something doesn’t mean that they should. Sure, a team could design, build and implement their own radio module for a product in order to save a dollar on the hardware cost but in many cases just the cost to certify the module is a deterrent. Certifications, while a necessary evil, are expensive and can range from tens to hundreds of thousand dollars to get the module in the field. Showing compliance through a certification is a great thing but is the time and cost worth the investment or is it easier to just find an expert with the solution and move on?
Contributor #5 – Sales and Marketing
So far, each of the contributors makes sense and seems justifiable but what on Earth does sales and marketing have to do with software? The fact is that even as development and certification is underway, there is at least one person if not more working diligently to sell the end product and position it properly within the target market. All those activities associated with the firmware product are still time and monetary investments that must be taken into account to calculate the total ownership cost. Without this contributor in the equation, the resulting return-on-investment calculation will be skewed and not take all the factors into consideration.
The total cost to own firmware is far larger than the development costs. In order to truly understand the full investment necessary to be successful, companies and teams need to expand their considerations and understand how software licensing, certifications and even the maintenance cycle will affect their return on investment. Without all these pieces the story is incomplete and the chances for success may be drastically reduced.