The Software-Driven Business: The “How” of Digital Transformation
During a three-hour layover in Los Angeles on my way back home from a business meeting, in addition to the email, texting, and social media that is business as usual in this second decade of the 21st century, I transacted business with an airline, my financial advisor, my company’s payroll provider, my auto repair shop, my pharmacy, and an on-line retailer. And (in the interest of productivity) I also prepared the bulk of my expense report for the trip. All without interacting with another person. All without opening up my laptop even once. All without even opening a browser on any of my mobile devices. All thanks to apps.
And I am probably nowhere close to being a cutting-edge consumer of today’s digital economy.
The anecdote above simply serves to put a personal face on a previous post: on how market forces are transforming businesses across all industries into becoming software-driven. The need for digital transformation is quite easy to grasp. But how does an enterprise start down the path of executing such a program of digital transformation? It starts with three simple high-level questions.
What is the software-driven experience that I want to provide to the end-user?
How can I most effectively leverage existing platforms in support of this experience?
What process will most rapidly drive my transformation into a software-driven business?
An outstanding software-driven experience is paramount. Becoming software-driven is immaterial unless the transformation connects customers to the business. And it is an outstanding customer experience that drives this connnection. “Experience” in this context means total customer experience, and goes well beyond functionality and the traditional notions of UI or UX. Performance at scale matters. Responsiveness matters. Data security matters. Availability matters. Disconnected operation matters. Cross-device consistency of experience matters. Continuity of experience across multiple interactions matters. All of these are fundamental design decisions that need to be taken early on in the transformation process. Note the domain-independent nature of the issues. While the content of the experience clearly depends on the nature of the business, the other components of experience are standard software engineering issues pertaining to the environment within which the app operates.
Platforms encapsulate, abstract, and export a set of core features and services, letting the developer focus on adding the remaining pieces of application logic. The necessary specialization of the platform to the problem domain is generally accomplished through configuration, which is much simpler than programming the features from scratch. A good platform (whether at an infrastructure level or at a middleware level) comes with a level of testing and robustness better than anything developed from scratch. It provides a clear separation between what is built “on” the platform and what is “in” the platform. It provides (or will provide, in future versions) additional advanced features that the app can exploit over time. And it provides access to a platform ecosystem, which can provide further opportunities for innovation. Therefore, unless the requirements of the domain are unique, investing in an appropriate platform is the right decision for both the short term and the long term.
Finally, today’s market dynamics require that the transformation proceed at a fairly fast clip. In my next post, I will discuss how a nimble software development and deployment process (Agile, DevOps, …) must be employed so that this transformation can deliver results continually and speedily.