Understand firmware's total cost
Innovation can be an exciting endeavor but on occasion management and developer decisions will optimistically estimate the cost implications for a project. That 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 contributor for developing embedded software is the cost of licensing third party software. Now don’t misunderstand me; using third party software is absolutely critical to controlling costs and getting to market in a reasonable timeframe. Yet despite the development costs to create software from scratch, many development teams hate paying for someone else's software. Rather than license a commercially available product that has 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 the time spent integrating the software with other components. So even if the software is “free," the cost to use that software is not zero because time must be spent learning, educating, integrating, testing, debugging, and maintaining it. I suspect the price tag for all time that is not low, 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 to get 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. Yet at the project's end, development costs involve more than the time to build X. They 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 in the total ownership cost. For most teams all the focus is on what it takes to get to market. Rarely does anyone consider up front the cost to maintain the software so that it remains marketable.
Software maintenance requires keeping key personnel available to the project after all the fun development has been completed. Maintenance must deal with team member turn-over, undoubtedly requiring investment in training junior engineers or new personnel. Maintenance engineers must add new features, remove bugs, and handle tool updates, revision control, and customizations to name a few key tasks. 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 that selling the solution and move on?
Contributor #5 – Sales and marketing
So far, each of the cost contributors makes sense and seems justifiable. So 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 such activities are still time and monetary investments associated with a firmware product and 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 just 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 a product's financial success may be drastically reduced.
Jacob Beningo is an embedded software consultant who currently works with clients in more than a dozen countries to dramatically transform their businesses by improving product quality, cost and time to market. He has published more than 200 articles on embedded software development techniques, is a sought-after speaker and technical trainer and holds three degrees which include a Masters of Engineering from the University of Michigan. Feel free to contact him at firstname.lastname@example.org, at his website www.beningo.com, and sign-up for his monthly Embedded Bytes Newsletter here.