Exploring digital business as a system

I love to write about innovation in the way business uses and delivers technology. I wrote about cloud computing starting in 2006 (that first post is here) and continued writing until about the summer of 2014 (see CNET and GigaOm). At that point, I felt I’d written all I could about cloud computing (although there is still much to be done before the cycle is complete). So, aside from a few posts written for my employers from time to time, I stopped writing.

Now, I’m excited again. I’m seeing a significant revolution underway in digital businesses — businesses or business units that deliver their goods or services primarily over the Internet. This is a change fed by cloud computing, big data, continuous improvement (and optimization), machine learning, IoT, and the changing expectations of the customer/user.

But explaining this transition has been difficult. You often see system integrators and software companies talk about “digital transformation”, but that’s hardly a definitive statement. Transformation of what? Into what? And— perhaps most importantly — why? Others have played with the term “BizOps”, which plays off of the now ubiquitous “DevOps”, but that’s not wholly accurate either. (It probably comes closest, however.)

So, instead of trying to define a term right now, let me tell you a story about what’s happening. Beware, this will be a buzzword laden story, but there is a reason — so many trends are coming together that its hard not to tell the story without using common tags.

Once upon a time…

Back in the early to middle 1990s software was different. For one thing, scale was limited, generally, to the number of internal employees using a business application. Often, the issues of scaling were rested entirely on the database, and on the increasingly large (and hot) servers hosting them.

Occasionally you’d find a forward thinking development team deploy a so-called “three tier application”, where business logic was also hosted server side, but most often it was true “client-server”, where tens or hundreds of identical clients containing most business logic would talk directly to databases which would offload some logic into stored procedures.

This worked because there were few moving parts, and the demand for scale was low. These applications looked like simple, isolated digital machines, and as such were engineered (or architected) with strict definition of mechanisms, protocols and — most importantly — structures.

But as larger and larger companies moved away from paper processes to online databases and business process applications, the question of meeting demand started to stress simple architectures, so methodologies and frameworks were developed to try and handle “complicatedness” in a way that was simple for the developer to create, while ensuring stable operation in production. These methodologies and frameworks were “good enough”, but often failed to keep up with business dynamics.

The web changed everything…

When the World Wide Web and other Internet innovations enabled businesses to offer content and applications directly to customers, there was a rapid spike in demands on scale, resilience and interconnectedness. Suddenly, 10,000 users became 100,000,000 users. 99% uptime targets weren’t nearly good enough. And new dependencies were being created every day across the Internet, across company boundaries and across customer demographics.

The combination of interconnected applications and large scale changed the dynamics of software design forever. “Architecture” in the sense of defining a rigid blueprint for application design wasn’t going to work for large scale systems. Even crazier, the Internet itself was becoming one huge complex adaptive system on which all businesses were increasingly dependent.

This old Stockholm telephone tower demonstrates the futility of trying to centralize control as the complexity and scale of a distributed system increases.

So, the nature of software development evolved with the times. Companies like Amazon, Google and Facebook went “off the reservation” in terms of standard development practices, and introduced entirely new ways of thinking about software at scale.

The emergence of digital

The idea of a digital business emerged from practices and mindsets like game days, devops, agile development, service composition (including microservices) and data driven decision making. The combination of these practices (and others) have evolved (and continue to evolve) as a strong way of dealing with these increasingly complex systems.

Part of that process — and this is what really excites me — is the increasing use of data and APIs to break down communication issues between organizations without requiring the people in those organizations to explicitly communicate with each other. In other words, we can create a communication backchannel that avoids much of the politics, bandwidth constraints and simple inefficiency of human-to-human communication.

This to me is a disruption in the making. If I am right, so many of the limitations of the human brain, in terms of scale, social instincts and cognitive biases will be increasingly bypassed as this phenomenon evolves. On the other hand, as with any complex system, there are huge risks, both to individuals and the system as a whole, that could make things worse before they get better.

This is what I want to explore here. I’m not claiming to be an expert in the topic, rather I write to learn. Thus, I hope you’ll join me in my journey, and contribute when you can — either with the response bubble below, or on Twitter at James Urquhart.

Let’s see where this takes us…