Domain Driven Design (DDD). Agile at Scale. Enterprise Design Systems. All three terms share a desired outcome – increased communication between disparate groups within an organization. Each discipline requires multiple teams to collaborate through an ever-evolving common set of terms that describe their effort: a common language. As multicultural teams become standard, organizations who lack this common language to describe core disciplines will find much is lost in translation.
A key driver of these initiatives is the push towards increased organizational agility – or the measure of an organization’s ability to quickly adapt to changes in customer needs. In hindsight, it’s obvious to see why companies like Blockbuster, Kodak, or Borders failed – as the digital revolution of the 90s and 00s unfolded, they didn’t adapt fast enough to keep pace. As a result, their market share was scooped up by agile competitors who were able to learn from and adapt to new technologies in order to meet changing customer expectations.
Today, we are seeing a similar inflection point in Financial Services. Particularly in the B2B arena, client expectations are evolving rapidly as demand increases for a digital experience that more closely aligns to the consumer space. Few firms today possess the agility or know-how to respond to this, making it a key competitive differentiator in today’s markets for those that can.
Organizational agility is the measure of an enterprise’s ability to quickly adapt to changes in customer needs and expectations.
In Search of Stability
Of course, thought leaders across the globe have spent the last decade espousing the need to introduce ‘lean development practices’, or to ‘move fast and break things’, while often glossing over the fundamental bottleneck towards increased agility: the lack of stability. The ability to learn, adapt, and recover is fundamental to trying new things at pace. The model must be able to maintain a stable equilibrium throughout to ensure that as you are moving fast and breaking things, you are also evolving for the better.
If the digital architecture of a business is built like a deck of cards or, as the image below suggests, a delicately stacked collection of individual projects with no common language or support, its structural integrity will not withstand any ‘breakages’. Businesses must therefore find a way to be both nimble and resilient to change.
Systems that are both nimble and stable can accept change quickly without creating unwanted effects elsewhere, enabling the embrace of change but also withstanding disruption. It is the connective tissue between the building blocks that makes the difference, and in a modern enterprise’s digital architecture, language is that crucial connector.
You can’t have agility without first creating stability.
Enterprise software is inevitably subject to multiple rebuilds and rewrites over time. While these rewrites are occasionally caused by a fatal flaw in the original design, most often they’re the result of context changing over time. One of the biggest challenges in building complex software is making it resilient to such unavoidable change. If each idea or change is supported by a common language and set of coding principles, an enterprise will be able to move fast, break things, recover, adapt, and evolve as it needs to.
Why Language Matters
Marcin Treder, CEO of UXPin, describes language as the ultimate medium of our culture, created to foster communication and collaboration and to evolve. Further, he describes how the advent of software has given us the ability to create new languages – but noted that we often struggle to find the connections between the visual representation of ideas and the code written to express them. A common language is that connection.
Let’s consider for a moment an archetype for a modern enterprise:
- Dozens of product teams
- Dozens, perhaps hundreds of products / assets
- Hundreds of engineers
- Thousands of team members supporting SDLC (the software development lifecycle)
Without a common language to describe an organization or product, every one of the several thousand people involved in bringing software to market will construct their own mental model – meaning thousands of unique models influencing thousands of decisions (in the aggregate) daily, with a high improbability of everyone pulling in the same direction. Death by a thousand cuts.
Words matter. A lot.
Collaboration and problem solving become much easier when the individuals responsible for building and maintaining a system have curated a shared understanding of that system. The individual components that comprise a system are increasingly likely to interoperate well if that shared understanding propagates throughout each of the components. As it turns out, language begets stability begets agility.
A Shift in Perspective
Many new tools have evolved over the last twenty years that enable effective software development and the creation of products, including Scrum, design thinking, product management, agile at scale, experience design, domain driven design, enterprise architecture, design systems; the list goes on. These tools have influenced the different roles in the enterprise and created increased specialization, leading to more sophisticated and diverse teams that need new modes of collaboration. The core disciplines of modern software development are only becoming more complex. They are no longer a set of static rules, domains, or components, but are living ecosystems which require nurturing, care, and improvement. These disciplines are providing a common set of terms from which teams can come together and collaborate effectively.
As organizations strive for agility in response to the ever-changing needs of their customers, it remains critical for the teams responsible for designing and developing their digital architectures to learn, adapt, recover, and evolve as one group, using one language. By embracing a common set of terms and tools, businesses will find themselves with a stronger foundation, able to support innovation and adaptation at pace.