Software is the connecting thread and primary driver of the connected landscape
IoT and the exponential increase in the number of smart products and devices has given rise to a new connected landscape. One of the defining charatcteristics of this new landscape is the emergence of a platform ecosystem, where multiple products and devices coexist and interact with each other. While this new, connected landscape offers tremendous opportunities to offer innovative services built around smart products, businesses are also confronting the challenge of designing products for the platform ecosystem, with its unique demands.
Designing and developing software products or services for a platform as opposed to a standalone offering is a completely different ball game, as non-functional aspects such as integration, interoperability, and interfaces become as important as the primary functions or features. This additional complexity makes it a great challenge for businesses to master the software that is not only the thread, but is also the primary driver of this new connected landscape.
Every company is a software company
The rapid pace of technology disruption, coupled with the impact of emerging technologies has forced businesses to realize that software is no longer an operational nice-to-have, but is a key strategic differentiator. IoT has not only reinforced this trend, but has greatly enhanced the pressure on businesses to embrace this fundamental change in mindset. In other words, in a connected world, every company is a software company, and businesses must develop mature capabilities in software innovation.
Need to deliver continuous value
In this new connected ecosystem, where the business and customer have a direct engagement, often the software is delivered as an ‘always on’ service. The emphasis is no longer merely on delivering a set of software features or functions, but on supporting a continuously evolving user-experience. This means that businesses not only need to have sophisticated capabilities in software innovation, but they should also have the ability to deliver continuous value, which calls for a mature and robust process framework for continuous software innovation.
Industrialization of software development
The often-heard grievance in the business world is “why is it so difficult to industrialize the software development process”? The obvious comparison is with the manufacturing industry’s approach (factory) for producing physical products. The key features of the factory approach are reuse (production infrastructure), repeatability (standardized process), and predictability (output and quality), which are the primary drivers of mass manufacturing, delivering unprecedented economies of scale and quality. In this modern digital landscape, where software is the primary driver, the key question that must be addressed is, can you industrialize software development?
An appliance is different from an application
Before taking this analogy too far, we must remember that a physical appliance or product is not the same as a software application. For a physical product, the underlying model and functionality delivered remains fairly constant, which makes it straight forward to standardize and manufacture on an assembly line. And even when the product design or specifications change or undergo an upgrade, modifying the assembly line tooling to accommodate the changes can be handled easily, even if it takes a little longer.
Whereas, for a software application, every requirement change results in a new software that delivers a new functionality, adding a new level of complexity that wasn’t encountered before. Add to it the complexities of dealing with emerging technology stacks, new platforms, new devices, and disruptive paradigms such as social and mobility, you can imagine the multiplying levels of difficulty in consistently producing high quality software that can accommodate all the changing needs.
In a landscape characterized by technology disruption, and continuously changing consumer preferences, it is a challenge to forecast what kind of software will address the market demand. The best that any business can do is to build a robust organizational and process framework to withstand the disruption on multiple fronts, and is equipped with the right people to quickly develop and deploy a software product to meet the emerging market needs.
Need for a software factory
This connected landscape where software is the primary driver has a significant impact on how businesses approach software development. The ability to build software in a traditional manner with a static process, is no longer sufficient. The need of the hour is to have a dynamic and agile process for rapid development and delivery of software enriched user experiences. Sometimes, the frequency of delivery could be even multiple times in a day, and this need for delivering continuous value has given rise to the demand for a software factory.
A software factory is a construct of people, processes, and tools, supported by automation and governance for continuous development and delivery of software applications. The continuous process of the software factory must be designed to ensure speed, predictability, and quality in delivery of software applications.
Co-innovation can deliver continuous value
Given the complexity of this connected landscape, it is virtually impossible for any business to master all the emerging technologies, or acquire the competencies to handle every aspect of software innovation that can deliver a WOW customer experience. Businesses must focus on their core competencies and build strategic partnerships with mature service providers, to leverage their technology strengths. Co-innovation with a strategic partner offers the widest range of benefits to software-driven businesses, helps them overcome their technology and engineering challenges, and enables delivery of continuous value.