What captivated me about Heisenberg's Uncertainty Principle, was not just the principle itself, but its fundamental nature. It was not the lack of advancements in equipment that prevented the simultaneous measurement of position and velocity.

It was nature herself, no matter how sophisticated your measurement equipment is.

Take a pause and think about it. How profound it is. Nature has given us constraints to operate in, non-negotiable constraints.

There is a similar law in software design known as Conway's law.

Any organization that designs a system (defined broadly) will produce a design whose structure is a copy of the organization's communication structure.

— Melvin E. Conway

Conway stated this law in 1967, but its power was appreciated only when micro service-based architecture became mainstream. Since communication structure is organization structure, people were stunned when they saw how closely service architecture resembles org charts.

Like the uncertainty principle, this law is fundamental and does not depend upon tooling advancement. 

There have been various attempts to change organizational structure to meet technology needs, especially in the name of agile self-organizing teams. It's futile and breaks the core premise of technology to serve the business and not the other way around.

 

Domain Driven Design: Celebrating the Constraints

Organizational constraints exist because that's the effective way to operate.

For example, when I worked for a bank, the production database's unapproved look-up of celebrity account information was subject to immediate firing. I am sure this rule was the same when this bank had mobile branches on a stagecoach in the nineteenth century.

In DDD, these clusters, where everything is aligned to a specific function, are called domains. A service (or a set of services) only has meaning when looking from the perspective of a domain; therefore is called bounded context. Each bounded context can be a fiefdom with its own rules and model.

 

Business vs. Engineering

At the aforementioned stagecoach bank, I noticed another interesting dynamic. The engineering and business teams were like water-tight compartments despite being on the same floor. In addition, in all my working experience, I experienced the most organized requirements with minor scope creep there.

This puts into question the idea of self-organizing teams, an agile tenet that sometimes is taken too far. Within a domain or, even more specifically, within a bounded context, self-organizing teams work like a charm. When you cross those boundaries, technology needs to align to respect those boundaries.

 

Icon_Preview-1How to overcome established boundaries between product managers and software engineers with the power of ephemeral environments and preview URLs

One boundary which needs to be navigated skillfully here is between product managers and engineers. Product managers typically either have to sit next to developers (breaking the natural boundaries) or wait for the release to happen before they are able to give feedback.

The Roost platform solves this problem.

It provides product managers the ability to provide live feedback on a release with the power of preview URLs. It's done during the critical path of a release rather than asynchronous process. 

 

Rishi Yadav

About Rishi Yadav

Rishi is the CEO and Co-Founder of Roost and has over two decades of experience in leading enterprise application teams. He is a published author and active blogger.

Please Share this Blog

You may find these blog posts of interest too.

How to use Event Framework for Complex Test Environments
How to use Event Framework for Complex Test Environments
August 31, 2022

With the increasing number of services in cloud-native applications and their dependence on various third-party applicat...

How to Create a Docker Image from Dockerfiles for Fast K8 Testing
How to Create a Docker Image from Dockerfiles for Fast K8 Testing
August 31, 2022

Build a Docker Image from Dockerfile Using Ephemeral Environments How to Work with a Docker Image A Dockerfile is essent...

Accelerate Software Delivery Releases - Eliminate Staging Environment
Accelerate Software Delivery Releases - Eliminate Staging Environment
August 31, 2022

Current Testing and Staging Processes are Slow & Cumbersome Current DevOps pipelines have multiple test environments...