A Software Platform is just another Platform
Let’s start by defining a Software Platform, starting with Platform:
Platform: a platform provides low-level functionality ready-made as an accelerator to a consumable solution.
A platform is not a complete solution but requires additional effort to complete the solution. The benefit of a platform is to provide commodity capabilities faster and cheaper while maintaining the ability to differentiate through customization.
A platform can be anything. One of the earliest examples of a platform is the automobile platform. The auto industry builds core components on a common assembly line. Exterior and interior features differentiate the final, consumable solution. The benefit is cost savings due to economies of scale. Under pressure from Japanese manufacturers to cut costs, US car manufacturers in the late 1970’s may have taken the commonality too far. Luxury models lost their price premium because they looked too much like economy models as shown in the following graphic. Don’t make this mistake!
An Internet of Things (IoT) solution may utilize a platform consisting of a printed circuit board with an embedded GPS sensor, Wi-Fi radio, microprocessor, and a temperature sensor. To make it consumable, it requires firmware, power, and an enclosure.
A common software platform for IoT (a.k.a. an IoT Platform) consists of software, virtual servers, and the capability to receive, and make accessible, data for processing.
If you are buying a finished product, a car for example, and you are satisfied with the product, delivery date, and price, there is no need to worry about the fact that the car was built on a platform. In fact, that detail probably saved you some money. However, would you buy the platform by itself and complete the car with your own sheet metal, paint, and interior? Only if you had the skills, time, and desire. Few people do.
In the software world, the trend has been to sell the platform and let the “consumer” (in most cases another business) build out the end solution. But do they have the skills, time, and desire?
Is a software platform right for your use case? What do you think?
Understand What You’re Buying
It is imperative to understand the pros and cons of buying a software platform versus building it from scratch (using Make or Buy logic) or buying a finished solution. If you are evaluating a software platform, here are a few basics to consider:
- Low-level functionality provided
- Platform license fees
- Cost and responsible party for completing the final solution
- Cost and responsible party for maintaining the final solution
- Cost and responsible party for future upgrades to the final solution
- Quality and performance expectations and commitments
List the requirements and functionality you want to deliver and categorize based on commodities and differentiators. The differentiating category includes areas you would not want your competition to acquire. Commodity items may be non-core to your business or standard functions required to make the solution work.
Your platform evaluation will be first against commodity functions and then evaluate the leaders against their ability to make, and protect, the differentiating functions by customizing the platform. Now apply make or buy logic.
Assess your capabilities and costs to both complete and maintain the end solution over time.
Ultimately, the software platform should give you a head start at a lower cost (reducing time and saving you money). By the very nature of a platform, you must assess your capability and cost to complete and maintain the solution over time. Also assess the platform’s ability to support your end solution. Is it reasonable to expect to put a Winnebago body on a Volkswagen chassis?
Your Team Requirements
Let’s assume you found a software platform that provides a good head start with its ready-made functionality and the subscription fee is well below what it would cost to build. You have verified that the platform is capable of being customized to meet your differentiating requirements (let’s call these “gaps”). What will it take to close the gaps and complete the solution?
Any end solution must start with an overall architecture. You will need an Architect who understands the entire system technically, as well as the use case of the end solution.
You will need developers. They can be on staff already, you can hire them, or perhaps you can contract with the platform provider or one of their partners. Even if the platform advertises – “no coding required” – you will need people trained on the platform that can produce the end solution (close the gaps).
Will you be able to attract and retain developers to support your solution to the end of its useful life? How much trial and error will you tolerate?
You can reduce your risk if the platform provider will develop and maintain the solution. Or, select a software platform that leverages a modern development stack, perhaps open source, where you can find motivated developers. Proprietary solutions will require training and developers may find them career limiting.
You will need to account for a supportive and proactive monitoring service. This would include an infrastructure or cloud team. Depending on the nature of the solution, you may also need a formal technical support group and ticketing system to be able to receive requests for assistance and troubleshoot until an issue is isolated and can be passed onto a development team. If you cannot dedicate developers to ongoing support, you will need access to developers to fix issues (plan for disruption on future projects if they are not dedicated to support).
Development does not end. Plan for evolving enhancements as well as deployment of bug fixes. If your solution must be available without significant downtime, development, QA, and operations need to work together with common processes and tools to orchestrate updates.
Key Takeaways from this Overview of Software Platforms:
A software platform accelerates development but is not a consumable solution to the end user of a software system. Therefore, treat a software project starting with a platform as a custom development effort. Assess your skills, time, and desire then plan accordingly.
Bridgera offers an alternative. We’ve developed a software platform to accelerate IoT development by providing ready-made scalable capabilities for ingesting, processing, and storing device data. The IoT platform also provides application capabilities commonly required in IoT. The biggest difference is how Bridgera closes the gaps. Bridgera builds, supports, and continues to enhance the end solution for each customer use case. Eliminating the “team” requirement described above.