Go to ...

RSS Feed

Learning to Live with (Windows) Complexity

Every now and then when I’m working with Windows 10 I ask myself this question: “Does it have to be this difficult?” Given that the OS is truly a  complex system, with 50-60 million lines of code, 20-30 million individual files in its executables, and 4+ GB of content altogether, I’m sorry to say the answer really, truly is “Yes!” (Information sources: Quora and notes from MVP Summit.) For the title and inspiration for this editorial, I drew on a 2011 article from the Harvard Business Review. It’s entitled “Learning to Live with Complexity” by authors Gökçe Sargut and Rita Gunther McGrath. I think it’s worth reading all the way through, but I’m happy to hit its high points as they relate to Windows operating systems in general, and Win10 in particular.

7 key aspects of complex systems

Organizational map for complex systems (source: Wikipedia)

Complex vs. Complicated

Turns out there’s a whole science around the topic of complex systems. I ask those who don’t like or respect Wikipedia for their indulgence in advance, because their coverage of “Complex system” actually provides a useful and informative introduction to the subject. Both the HBR article and Wikipedia agree that complex systems share a variety of key characteristics:

  • Complex systems are hard to model, which means that it’s critical to understand the very characteristics that defy easy categorization and analysis. In other words, understanding what’s tricky and difficult is important to really understanding such systems in general (and, I’d argue, Windows in particular).
  • Complex system are composed of a number (sometimes large) of individual interacting components, whose organization is best understood as that of a network, defined as a collection of individual objects and the relationships between them. Lots of moving parts, with lots of relationships among and between them.
  • Complex systems are nonlinear, which means that they can (and will) respond to the same inputs in different ways depending on their current state or context. In other words, what works under some circumstances might not work under others. Also, what doesn’t work in one situation or context may work in another. Weird, eh?
  • Complex systems are emergent, which in the simplest of terms means that you can’t tell how they will behave by studying individual components on their own. Behavior in such systems comes from the interactions, relationships and dependencies that occur when all the pieces and parts come and work together. You have to let them rip and watch what happens to understand their behavior and capabilities.
  • Complex systems can be subject to cascading failures, which means that because individual components are coupled together, a failure in one component can lead to failures in other components, in cascading fashion. As Wikipedia dryly observes, and most Windows users already know, such failures “may have catastrophic consequences on the functioning of the system.” In fact, complex systems can exhibit both spontaneous failures and spontaneous recoveries (other phenomena familiar to Windows users).
What does HBR Recommend?

One interesting thing that comes from this article is the observation that small decisions or changes can have unintended consequences. I take heart from this, because one thing I’ve learned working with Windows over the years is that it’s not a good idea to just mess around with things (especially the Registry) so you can “see what happens.” All too often, what happens is something you don’t want or don’t need and may be hard-pressed to reverse or repair. “If it ain’t broke, don’t fix it” is a truism that’s especially apt, and important for inveterate tinkerers (including yours truly) to remember.

Another interesting and important thing from the story is the idea that people are constrained by cognitive limits to the understanding of the impacts of changes, additions, and actions. There’s so much going on, in other words, that we may not even be able to sense all of the bits and pieces involved. This also comes with the unfortunate side effect of incomplete information leading directly to incorrect understanding, unwarranted assumptions, invalid diagnoses and more in that vein. I’ve certainly experienced this with Windows troubleshooting, when my initial understanding of what was going on and where problems lay would later be completely revised and rebuilt as more (and more relevant or meaningful) information became available. As an added wallop, the article observes that “focusing on one thing can prevent us from seeing others.” Thus, we may think we know what we’re seeing (and doing) and because of that knowledge miss other important cues and clues as to what’s really going on. Yes indeed: been there, done that.

Some of the story’s recommend behavior mods are also pretty interesting. They counsel against building strategies and responses based on averages or common experiences. Their counter to this reads “outliers are often more interesting than the average case.” The weird stuff on the fringes is often where the best clues about problems, mistakes, misconfigurations, and so forth come from. Thus, they’re also important to take into account as well as “business as usual” stuff. My favorite example from the story: a couple of complexity researchers observed that 16,000 minor earthquakes occur in California every year, but a really BIG ONE happens only every 150-200 years. When it comes to building codes, they oh-so-correctly observe, what matters is by no means the average, but rather the big one. Get it?

Shoot! The story even sheds light on the Windows Insider program as it talks about the importance of modeling complex systems based on feedback. It helps me to understand that the big data that comes out of Insider telemetry and input to the Feedback Hub helps immensely with the development process. That’s because it provides early and frequent information about what is and isn’t working, and helps the OS evolve to meet users’ needs (and not trample on their data and applications) ever better over time.

The story also makes a crucial argument for the importance of Windows backups, even though that has nothing to do with the point they’re trying to make. They observe that “With Windows, the operating system and your data are tightly entwined; when you upgrade to a new version of the system, all your information is erased, meaning that you need to back it up and reload it to your computer.” Of course, they’re really talking about a clean install, but you can apply the lesson of that section to decouple your data from your OS by always and religiously backing up before making any major changes. That way, you can at least get back to where you started. And if you use a tool like Macrium Reflect, you can even roll forward to a new OS, and use viboot to mount the old backup image to recover whatever you want from the prior incarnation.

There’s no doubt in my mind that Windows 10 is a complex system that must be managed with some degree of care, and a bit of delicacy, too. It’s just part of what it means to work with that kind of structure, but also what is means to limit the risks of trouble and tribulation one must take on as a result. After reading this over, I hope you agree!





Author: Ed Tittel

Ed Tittel is a 30-plus-year computer industry veteran. He’s a Princeton and multiple University of Texas graduate who’s worked in IT since 1981 when he started his first programming job. Over the past three decades he’s also worked as a manager, technical evangelist, consultant, trainer, and an expert witness. See his professional bio for all the details.

Tags: , , ,

Leave a Reply