The world is changing, and we all need to prepare for it. The proliferation of mobile devices we are witnessing right now, and the associated challenges related to creating applications that work across those devices, are just the thin end of the wedge of what the future holds. Cisco predicts that by 2020 each of us will own an average of 6.58 connected devices. People are interacting with organizations and services with an ever more diverse set of technologies, they are doing this in a growing number of contexts, and the data being created is growing exponentially. In two-part series, we'll look at strategies for not just surviving (part 1), but thriving in and capitalizing on the opportunities provided by our hyper-connected future (part 2).
A Shattered Future
If we look closely at the technology trends, of which mobile is just one part, it becomes clear that we are witnessing a shattering of input and output mechanisms. In the past, interactions with computers have been through fairly narrow channels. The vast majority of inputs have historically been via keyboard, and outputs were predominantly through a single fixed screen. That simple past and the strategies we developed to operate in that world are no longer useful guides to the future. We are witnessing an explosion of channels for interacting with computers. Those channels are no longer tightly coupled to each other, and even the concept of "a computer" is being blown away.
We can now communicate with modern technology by tapping a screen (iPhone), waving our arms (Kinect), speaking (Siri), running (Nike+), moving through space (GPS), standing still (CCTV plus facial recognition), being close to something (near field communication), having a pulse (consumer medical devices), or even just having a thought (EEG). The days when all this information is tied together in your pocket are just arriving.
The data from these inputs is invariably disappearing somewhere into the amorphous cloud, where we are still figuring out how to connect, draw inferences from, enrich, and react to this diverse set of information.
Outputs from the cloud are following a similar trajectory. People regularly interact with at least four screens that they own (phone, tablet, laptop, TV), many more that they don't (advertising, transit sign, retail display, checkout, and so on), and a growing number that aren't screens at all (synthesized voice, printout, car-control system, pacemaker, QR code, Roomba, 3D printer). This is just the tip of the iceberg: We don't have to look far forward to see the heads-up display, fold-out screen, robotic prosthetic, dynamically textured screen, hologram, and even brain-stem implant. I'm afraid the jetpack is still a ways off, though!
What we are seeing is the advent of ambient computing, where the computer and its interfaces disappear into the background, and we are immersed in a new world where computation is baked into the very environment. It's as though the single screens of yesterday have been shattered and the shards have been embedded into our pockets, our environment, and the products we use.
Your Pocket Is Exploding
The fact that this revolution is happening inside your pocket (in your mobile device) is fascinating to me. I remember the look of joy and wonder on my young daughter's face (then aged two) when she discovered the concept of the "pocket." You put something in there (most likely a small pebble), and it's still there when you put your hand back in a little later, even if you've moved to a different location. Most people point to the wheel as the most important human invention, or possibly the Internet if they are more inclined toward techno-utopia, but I would put a strong case for our most important invention being the humble pocket. With the pocket comes the whole concept of personal ownership, and from there flows money, modern civilization, and our beloved capitalism.
The revolution that's currently occurring involves a massive extension to the carrying capacity of our pockets (both virtual and real)—you put something into the cloud, and you expect that it will still be there, wherever you go and whenever you want it. What's more, our pockets are now connected, so we can have the same instant-anywhere access to what other people have placed in their pockets. The challenge is how to use this revolution to fashion a world that we want to inhabit. You could say we need a call to arms to occupy our pockets!
Challenges Posed by the Shattered Future
If you think it's difficult to develop services that work on iOS, Android, and mobile web (plus whatever Microsoft's comeback play will be), you're in for a shock as the wave of this shattered future gathers speed.
Many of the technology issues are already well known:
- Many people are currently facing the technicalities of delivering applications across multiple platforms and a variety of devices.
- A whole new industry is growing around managing Big Data, as well as the data scientists and data-visualization experts required to make sense of it.
- Rapid growth is taking place in managing the cloud infrastructure required to power all these services and host this data.
The scale and breadth of this data also makes it challenging to separate the signal from the noise, to integrate and seamlessly share this ambiently gathered information in a manner that's not intrusive or off-putting. Similarly, this territory is a minefield of privacy issues. And the more data you gather from disparate contexts, the more you need to be aware that people may have multiple discrete profiles or personas that you conflate at your own peril.
Along with these issues come security challenges (how to protect this sometimes deeply personal data) and integration issues (how to make the new, more responsive systems of the future work with creaking legacy infrastructure).
Business and Product Challenges
The technology challenges are hard, but the challenges related to business and product are equally difficult. User expectations are a key driver in this future. Two separate but converging trends are forcing businesses to grapple with how to put users at the center of their design thinking:
- IT is being "consumerized." As users have access to first-rate and well-designed software in their personal lives, they expect the same usability, quality of design, richness of interaction, and availability of services in their work environments and their commercial transactions.
- Mobile is personal. The device lives in your pocket and the palm of your hand. Part of the brilliance of Apple was to recognize and embrace this trend, creating devices that are delightful, tactile, and responsive to use.
Both of these trends raise the bar of user expectations for any service interaction, putting new pressures and strains on product design and service offerings.
The explosive rate of change across the technology industry makes organizations have to run just to keep up. Every day new startups and products threaten to disrupt incumbents. This threat is forcing traditional businesses to reexamine how they can innovate more rapidly and reliably. Many are investigating how to use some of the lean startup principles on a more enterprise scale.
An interesting dimension of this rapid pace is that the expected lifespan of many products is shrinking. I'm not just talking about the 18-month obsolescence window of many smartphones and other devices; whole product lines and business models are seeing a massive decrease in their typical longevity. Look at a service like Digg or a product such as Cisco's Flip for clear examples. A key insight is that the majority of new technologies and the business opportunities they support should be classed as "transitional." We are now in a constant state of transition, which suggests that an effective product strategy should embrace this trend rather than trying to fight it.
Challenges to Strategic Vision
Ultimately the true challenge is for organizations to imagine what business models and service offerings will allow them not just to survive, but thrive in this emerging new world. Traditional business models no longer work. We see a rolling wave of disruption crashing through industry after industry: Retail, music, telecoms, healthcare, photography, education, and finance are just some of the most obvious.
Strategies for Operating in This New World
It has become clear to ThoughtWorks that a three-pronged approach is necessary to prosper in this future of ambient computing, massive data, high user expectations, and breakneck pace of competitive innovation:
- Methodology for innovation
- Technology enablers
- Visionary strategies
The rest of this article will focus on the first two requirements on this list. Part 2 of this series will discuss strategies for creating value in the 21st century.
Methodology for Innovation
For a business to survive in this fast-moving environment, it must build an engine to create original product innovations that differentiate it in the marketplace. At a high level, this engine should support the business as it flows through a rapid and cyclical repeat of three stages: envision, create, and learn.
ThoughtWorks' favored approach for generating sustained innovation is loosely termed "Continuous Design and Delivery," with the goal of getting to validated learning as rapidly as possible, and then baking tight feedback loops into the delivery engine. Depending on the scale of your undertaking, the research, visioning, and creative phases will take more or less time. At ThoughtWorks, we are big proponents of compressing these phases as much as possible to optimize the time to learning. This approach ultimately leads to more of your discovery and innovation effort being spent on improving the product, rather than generating wireframes.
Stage 1: Envision
As you envision, ask questions: Who can we serve? What's the disruptive promise? What's the solution space? What's the creative platform? What's the first step or minimum viable product (MVP)? We strongly believe that these questions are best answered by a cross-functional team representing business, design, and technology, working together in rapid collaboration. Doing this well requires preparation and facilitation, but the benefits are powerful.
Stage 2: Create
Once the basic vision is in place, you can apply 10 creative levers:
- Choice of opportunity
- Value proposition
- Customer selection
- Creating value for the customer
- Experience design
- Functional solutioning
- Data/technical architecture
- Surrounding service design
- Value-centered design
- Content design
- Creating value for the business
- Revenue model
- Adoption/marketing strategy
Stage 3: Learn
As quickly as possible, engage the market and start learning from real customer feedback. Surprisingly few organizations know how to do this effectively. As you get an initial product in front of customers, you'll start learning about the validity of the assumptions you made during the earlier design phases. An important benefit of this approach is that you are validating more than just design (which can be done by prototypes and so forth); you are also validating business strategy, technical performance, and environment characteristics.
Next, respond to the feedback. Work out whether to continue, double-down, pivot, abandon, or connect multiple products together. Then you are ready to repeat.
The twin keys to this methodology are 1) bringing together people with disparate skills and ideas in tight collaboration, and 2) learning rapidly from the real world.
To execute on a Continuous Design and Delivery methodology, you need to put some technology enablers in place. Three broad areas to consider:
- Embedding designers and design activities into the delivery team
- Engineering tools and practices required to support Continuous Delivery
- Creating architectures and applications that are amenable to rapid change
My ThoughtWorks colleague John Jarosz has some good advice on tactics for embedding designers into an Agile delivery team. Traditionally, Agile teams have become good at baking QA and product owner feedback into their development iterations. Agile UX (user experience) takes this team one step further by inserting designers, whose job is to gather continual feedback from real users and translate the high-level creative vision into workable designs in tight collaboration with the developers. This is a big step toward iterating over a product design rather than just incrementally building out a preconceived plan, which is often the fate of ostensibly Agile teams.
The last decade has seen a progression from teams working out how to do continuous integration, in which everyone on the development team integrates and verifies their code every day, to embracing continuous delivery, in which the main code line is always in a releasable state, and the only manual steps required between code-commit and production release is (potentially) business-level approval. When teams achieve this state of constant flow, executing experiments and testing product hypotheses in the market truly becomes possible. The tools and techniques required for operating in a continuous-delivery model have been well documented elsewhere, but it basically boils down this way:
- Working in small, self-contained increments
- Automating all the steps from commit to release (particularly of test, build, and infrastructure)
- Strategy for "dark launching" or "feature-flagging" experimental features
- Solid monitoring of both system metrics and user or business metrics to evaluate the impact of changes
Finally, your architectural approach needs to support rapid and frequent changes in direction, called pivots in the Lean startup nomenclature. Multiple strategies exist for creating "pivot-friendly" architectures. The following list describes several useful approaches:
- Classic approach. Design well-encapsulated services with clean APIs, allowing you to compose and recompose your application in different and novel ways. This technique makes sense if your pivots can be executed by recomposing or substituting constituent services or modules (which isn't always the case).
- Test-based approach. Surround your application with a loosely coupled suite of functional tests that give you the confidence to change rapidly, while knowing that you haven't broken key functionality elsewhere. This is generally good advice, but with two provisos: These test suites come at a cost, and building/maintaining them is an art. With many major changes in direction, you will throw away many tests. It can be time-consuming to wade through your tests to decide which ones broke because they are no longer valid, and which ones point to an unintended regression.
- Fast-and-loose approach. My colleagues will likely lynch me for including this controversial suggestion. During early phases of product evolution, it may make sense to maximize for learning and speed-to-market, versus long-term quality. In other words, hack out a minimal implementation quickly, with little investment in testing or long-term architecture, and look to discard or solidify your initial work depending on the outcome of market feedback. If you use this approach, be prepared to discard much of your code each time you pivot. Because of the compounding effect of technical debt, it's much less costly to build in quality, rather than trying to retrofit it later, but this may be a worthwhile calculated risk.
The best approach for your situation will likely be some blend of these approaches, but in every case there will be a tension to navigate between optimizing for rapid learning and flexibility, versus creating a solid architecture that will scale with your success. Keep these two design principles in mind: KISS (Keep It Simple, Stupid) and YAGNI (You Ain't Gonna Need It). Nothing weighs down innovation and product development more than carrying a large inventory of unnecessary features and architectural adornments. However, this simplifying advice needs to be tempered with some longer-sighted view of where the architecture is likely to head, so you don't make naïve decisions that will bite you in the long run. Unfortunately, the only reliable way of achieving this nuanced balance is by using battle-hardened people with hard-earned experience they can bring to bear.
Hybrid Mobile Approaches
In the mobile arena, ThoughtWorks has recently recommended some hybrid strategies for developing across multiple platforms. This is a good example of an evolutionary architecture that allows you to iterate quickly in fast and flexible web technologies and then gradually migrate to native implementations as your needs and usage patterns become clearer. Facebook's rumored migration from a web-heavy to a more native implementation is a clear example of this roadmap in action.
NoSQL as an Agile Enabler
Some of my ThoughtWorks colleagues have had great success using NoSQL databases to support rapid product evolution. One of the major drivers for adopting NoSQL technologies has been to support scale—or, more specifically, to select a different set of tradeoffs around consistency and availability when scaling. However, we have also found that the "schema-free" nature of these databases is just as important as their scaling characteristics. Using a database like MongoDB can allow you to iterate quickly over your data structures without the overhead of maintaining a formal schema, and it often helps avoid the organizational impedance-mismatch of an external DBA group.
SaaS Is the New Open Source
Software as a Service (SaaS) is emerging as an important enabler for rapid product development. An array of services can be integrated to save you from writing a lot of tiresome code for commoditized functionality—everything from data persistence, notifications, and log management to gathering feedback and A/B testing. Historically, open source libraries tended to fill this role, but many valuable open source libraries are still available, if you want to maximize the speed with which you can get real feedback on a viable product, you should consider what SaaS options you can use to save valuable time and effort.
In part 1 of this series, we have looked at the challenges posed by the proliferation of new mobile and ambient technologies, outlining approaches for coping in this new world. A key take-away is that we need to look beyond the current generation of mobile devices to the more complex and shattered future that is dawning. The precise texture of this future is still unfolding, so unless we are only looking for short-term wins, we need to adopt adaptive and responsive strategies for product development, along with the technology practices that enable rapid change.
In part 2 of this series, we will explore the types of strategies and product visions that are likely to be effective in this shattered world.