Preempting Software Complexity

Sam Lin
4 min readMay 4, 2022

This April, Toyota is recalling 460K cars because of an SW error. “Coincidentally”, Tesla also recalls about 63K Model 3s due to an SW glitch. Unfortunately, it may become more often because SW is getting more complex each day. While OTA becomes a survival skill, what could be a strategy to attack?

Rhus Ridge Trail, Los Altos, CA

Understanding Complexity

To be fair, most people try their best to fix known issues before shipping. Just, complexity gets better than us. Complexity is the root cause of every problem. And, it grows exponentially as the system size increases. SW has become the most complex artifact than other human constructs & its nonlinear growth can increase faster than everything else. Because Software(SW) becomes the most flexible, fast & low-cost way to add feature/complexity to a product, aka Software-Defined. Under a such trend, the question is how can we understand them with our linear capability.

There are 3 typical approaches to understanding the complexity of a system: Testing, Monitoring & Reasoning. Everyone tests one way or the other. Because if they don’t, users become the ultimate testers to suffer more bugs. Top connected service providers typically monitor as a part of service operation. So, they can compete better because they are more “data-driven”. For people aims for the next level, reasoning has to be a part of the equation. Which is necessary to sustain the growth of complexity. Because when the complexity is inflating, adding more warm bodies is the wrong answer.

InformationIsBeautiful.Com: Codebases — Million Lines of Code

Augmented reasoning

Shift-Left with machines has been super charging development velocity & quality capability. Reasoning may be the one more “lead bullet” to upgrade the capability further. Because reasoning provides the leading signal to preemptive problems. While testing reveals errors, reasoning reduces errors being created as Out of the Tar Pit suggested.

The classical reasoning solutions are documentation, code-review & even hiring talents with skills & experiences. So that, people may foresee the implications of a change to a complex system. However, these will not be enough as the lifetime, system complexity, change volume & context variants grow.

Generative SW architecture oracle proposes a systematic approach to analyze & connect the development metadata to improve the reasoning capability at scale. It also shows up-to-date system information, illustrates the relationships of components, and enables traceability. Which mitigates Changeability & Invisibility difficulties in SW development according to No Silver Bullet.

Generative SW Architecture Oracle

Beyond borders

Nowadays, even for an app can be worked by hundreds people across teams in a company & using 3rd party framework, SDKs & libraries are common. Even for startups, no one have the time & money to build everything in house anymore. Knowing when & what to build and how to buy is an art worth mastering.

So, what could be a better way to develop in the furnishing SW supplying ecosystem? The common practice relies on release noes & test reports. For example: some top development team even automating issue bisecting to help narrow down offending changes quicker because that save them a lot of developer hours. Furthermore, extrapolating information & even knowledge from the codebase has became a critical bit if to sustain the growth of complex system, as:

  1. The metadata provides additional transparency to rationalize complex bugs & plan integration across parties when sharing the source is not possible. Even for open source projects, it’s much better to have high-level information to make reasoning easier anyway.
  2. The metadata can increase the confidence of incremental testing, make risk anticipation easier, and shed more light on technical debt.
  3. The patterns across branches or folks are valuable feedback to make the design more generic. This is especially useful for a platform building to to minimize modification, and therefore reduce total cost, complexity & fragmentation.
toggl.com: Heroes and Villains of Software Development

Full Disclosure

The opinions stated here are my own, not those of my company. They are mostly extrapolations from public information. I don’t have insider knowledge of those companies, nor a whatever expert.

--

--

Sam Lin

A Taiwanese lives in Silicon Valley since 2014 with my own random opinions to share. And, they are my own, not those of companies I work for.