Inherited Management Complexity
How many times have you found yourself entangled in a web of technical complexities that seemed far greater than the sum of their parts?
You’re not alone.
Today, I found myself waiting for an AWS CodePipeline to retry while simultaneously watching QuickBooks Desktop Enterprise try to update itself (a software many businesses still rely on, surprisingly). As I sat on a call with two other architects, it became clear that what appeared to be a simple task was, in reality, a labyrinth of inherited management complexity.
The Invisible Layers
On the surface, updating a .NET program on a server sounds straightforward. But in a live production environment, it ain’t. Consider the following:
OneXFinance runs on a server because it must interface with QuickBooks, which is also hosted on that same server (for more on hosting QuickBooks Desktop in AWS, see this article). This setup involves a managed directory, an EC2 instance, workspaces, and various network configurations. All these components must be traversed by the pipeline to successfully deploy the updated oneXFinance code into production.
This is inherited management complexity in action. A task that could have taken a few clicks in isolation now resides within an intricate automated process requiring active management.
Dealing with the Complexity
Ok, I’ve got inherited management complexity — what am I supposed to do about it?
As with most things, there is no single solution, no global solution, no everlasting solution; managing such complexity is inherently challenging.
There are traps you can avoid though!
Trap 1: Too Much Measurement
Trying too hard to quantify complexity can be a pitfall. Complexity is inherently difficult to measure and often frays at the edges. Over-analysis can lead quickly to paralysis, preventing timely decision-making and introducing further complexity. A truly hellacious cycle.
Trap 2: Too Little Measurement
On the flip side, pretending complexity won’t impact your project is equally dangerous. I’ve encountered this issue way more often than the aforementioned. Lots of “oh I’m sure this’ll sort itself out”-type logic. Scary stuff. This approach might seem to work sometimes in fast-moving domains where technology evolves rapidly enough to outpace accrued technical debt, but I mean…you’re putting it all on red.
Ignoring complexity leads to micro-processes that are automated and then abandoned. I’ve seen so many half-filled Smartsheets, forgotten Monday.com boards, Asana projects left in limbo, orphaned database records.
I’m sure they were well-intentioned initiatives. But they also couldn’t be sustained — victims of inherited management complexity.
Strategies for Managing Complexity
Here’s how I (generally) think about — and try to prepare for — inherited management complexity:
1. Assess the Scale of Your Process
First (roughly) quantify the scale of your process using some complexity factors:
Note: Adding 1 to A prevents division by zero when no administrators are available.
Interpreting the Complexity Score:
2. Calculate the Critical Mass for Adoption
Critical mass adoption is the minimum level of engagement needed for your process to be effective and self-sustaining. It’s influenced by factors from Step 1.
Weights should sum up to 1 for a balanced equation.
Example Calculation
External users needed for adoption: E=50
Internal users needed for adoption: I=20
Total users: U=70
Weight for external users: We=0.6
Weight for internal users: Wi=0.4
Interpreting the Adoption Threshold:
3. Set Realistic and Measurable Metrics
Keep your metrics SMART:
4. Engage Stakeholders with a Structured Plan
-Identify and Categorize Stakeholders
-Develop Engagement Strategies
-Create & Execute a Communication Plan
5. Maximize Existing Resources
Before investing in new tools or systems, make the most of what you already have! Inventory all software, platforms, and tools currently in use. Assess whether existing tools can be repurposed or extended to meet new needs. Compare current capabilities with requirements identified in your process. Look for ways to integrate existing systems to enhance functionality. Many platforms have underutilized features that could meet your needs. Invest in training team members to better utilize existing tools.
A Real-World Example: The BotOracle Developer Ambassador Program
When we started building the BotOracle Developer Ambassador Program, we faced our own inherited complexity. We really didn’t want to create just another waitlist. Instead, we are crafting an experience and providing genuine value to participants.
We are aiming for:
Given our limited time, budget, and resources, we are leveraging what we have. We are creating social proof badges and an award system, asking the developer community to help with technical challenges. In return, they received recognition they could showcase in their professional endeavors.
We officially kick off the program on November 25th and have already filled 4 out of 250 slots. We’re committed to providing a meaningful experience and offering developers the opportunity to be part of the first wave creating Automations for the Bo-Verse.
The Takeaway
Inherited management complexity is an unavoidable aspect of modern technology projects. Systems are interconnected, dependencies abound, and what seems simple on the surface usually hides layers of intricacy.
The key isn’t to eliminate complexity — that’s often impossible — but to manage it effectively:
By approaching complexity thoughtfully, you can navigate these challenges and keep your projects moving forward.