Leveraging Software Platforms

Roman's Product Management Podcast - Podcast autorstwa Roman Pichler - Poniedziałki

Kategorie:

Be Clear on What a Software Platform Is Different people have suggested different definitions for the term software platform. Let me briefly share mine: I view such a platform as a collection of software assets that are used by several products, as the following picture illustrates. In the picture above, product A, B, and C are built on the platform and use its assets. To put it differently, the platform serves three different products. Let’s look at two examples of successful software platforms, syngo and Amazon Web Services (AWS). The former is a platform that standardises how medical images are read, stored, and shared across MRI and CT scanners as well as other Siemens Healthcare products; the latter offers cloud-based services on which other products can be built, for instance, Netflix’ video streaming. In both cases, a range of products take advantage of the services each platform offers. Consider the Benefits and Drawbacks of a Software Platform Platforms offer several benefits: They can help grow a product portfolio faster and cheaper and they can help increase revenue. Take a portfolio like Microsoft Office, for example. If the teams developing the different apps all created their own user-interface layers, there would be considerable code duplication, added development costs, and increased development time. A software platform that standardises the user interaction and offers additional shared services, like saving and opening files, avoids these issues and allows the app development teams to focus on creating the app-specific functionality, rather than having to develop infrastructure code. What’s more, opening up a platform to other companies, as, for instance, Amazon did with Amazon Marketplace, can create a new revenue source and help diversify the business. In Amazon’s case, the platform enables third-party sellers to sell products alongside Amazon’s offerings and Amazon collects a fee for each third-party sale. But platforms come with potential drawbacks. I have seen software platforms that grew so big and powerful over time that they became a bottleneck and slowed down the rate at which the end-user facing products could offer new and enhanced features. I have also witnessed a brand-new platform being retired, as it was overly complicated to use and did not meet the needs of the development teams that should have used it. As these examples show, it is worthwhile to carefully consider if a platform can benefit your business, thoughtfully building it, and carefully managing it. Treat the Platform as a Product While a software platform is a piece of technology, it is still beneficial in my experience to treat it as a product in its own right, albeit a technical one: It creates value for the product development teams by making it easier and faster to build their products and it generates value for the business by reducing cost, accelerating development, and increasing revenue. Consequently, a platform should have its own product strategy and roadmap, KPIs, product backlog, and well-designed software architecture that leverages the right technologies. Make sure, though, that the platform decisions are guided by the needs of the products it serves. After all, a platform exists to help teams build better products faster and cheaper. In other words, the platform strategy and roadmap should be derived from the strategies and roadmaps of the products that are built on it, and its architecture should be designed to make it as easy as possible to use its services. A software platform, therefore, is more than a set of APIs. It typically requires documentation that shows how the platform assets can be used. Additionally, it may require tools to allow teams to code against the platform APIs. At the time of writing, AWS comes with a cloud development kit that supports .NET and Java, integrates with different IDEs, and hence supports developers to develop A

Visit the podcast's native language site