Live data from Hacker News

How to Safely Think in Systems

lethain.com

31–40 of 40 posts

Re: How to Safely Think in Systems

#31

Earlier quoted context omitted.

Assuming you mean the connections between the components - a hodge-podge of different models, tools, techniques. There is no one way to do it, partly because of how different any given system can be from another. Even within software engineering, it really depends on the industry you're in, the application of the software, the stakeholders, the risks. But generally speaking, most people only track the connections at…

That's exactly what I meant. For standardization, does Kubernetes help in that regard? For example when using network rules to whitelist what component is allowed to communicate with what service? I imagine extracting the current rules and building a graph makes discovery easier. No tolerance/limits/throughput or availability data is included though. The approach is also limited to the cluster level, excluding out-of…

Oh, ho ho. It is so much more than network dependencies. K8s helps somewhat by pointing a possible direction, but this is truly an Alice in Wonderland, "just how deep into the rabbit hole do you want to go?" problem space. Note the following is from the big-org perspective, small organizations don't really have this problem nearly as bad, but might start seeing this more as we all move into the cloud.

IMHO, the declarative configuration management folks have their heart in the right place, but at their level we've already lost a lot of information and are just shoving around peas on the plate. Post hoc systems information capture is always a lossy, imprecise, empirically-driven affair. Service registries are only scratching the tip of the iceberg.

Everyone is afraid to bite the bullet and start Encoding All The Things, because down that path lies religious wars over what to encode and how to express the encoding. Even with a service registry, I lack information on SLO's, SLA's, RTO's, RPO's, planned outages, A/B (and C/D/E/...) state, ownerships of all kinds, responsibilities of all kinds, architecture, deps of all kinds, onboarding steps and constraints, governance gates, decomm steps and constraints, change approval gates, the timing of each of those, and so on. That's just capturing the information; now imagine the insanity of walking that nightmare graph to seek impossible interlocks (which we humans accept by overriding with outages, for example), or figure out just how long it should take to accomplish a given set of related goals.

We currently handle this as an industry through blunt force trauma on the problem space itself, while contorting ourselves as Matrix-like as possible to sustain as little in return upon ourselves in the process, through a hodge podge of techniques, tools, processes, and exasperation. At this point, I'm not exactly certain we'll fully address this space without a Culture Mind-level AI (said tongue in cheek, I really do think there is some promising work being done in this field, it is just a grind).

Re: How to Safely Think in Systems

#32
post #5

None of that has really anything to do with systems thinking. That models change, omit information and don't represent reality as such is true for any kind of thinking, systems or otherwise. That's just a truism. At its core systems thinking is an antidote to reductionism. The essential feature of a system is that it is an indivisible whole and that its features are more than the sum of its parts. Systems lose their…

To expand on that microservices point, there's a particular form of systems blindness that happens when people focus on one part of a system, think they understand that one part, and then ignore all the others, as if all you need to know is what's right in front of you. I see it every day, in every team that I work with. The team works on component A. Maybe they can see that it's supposed to work with components B an…

[deleted]

Re: How to Safely Think in Systems

#33

The authors number one recommended book is ~166 pages in total. I skimmed through and it's mostly pictures. The blog also contained no data. This is all completely fine, but it rubs me the wrong way when things are posed as scientific or rigorous, but are mostly subjective opinion pieces. I like to see what "thinking in systems" gets me with real evidence. I appreciate they took the time to create and share this thou…

I found Engineering a Safer World: Systems Thinking Applied to Safety to be a much better explainer for systems thinking than Meadows' book.

https://www.amazon.com/Engineering-Safer-World-Systems-Think...

Re: How to Safely Think in Systems

#34
post #8

Earlier quoted context omitted.

Donatella Meadows created real impact wherever she went. You might also want to look into real-life studies of efficiency and safety by people such as Deming, Weinberg, Womack, Leveson, Dekker, Shewhart, Hollnagel, Ward, etc. There plenty of evidence that it works, even if Meadow's more popular book isn't filled with references.

I read the book twice. I walked away feeling the same as OP. I would appreciate it a lot of you have any other reference material on this, any book or resource that convinced you or helped you. I feel I'm close to grasping the underlying reasoning and benefits, but think I am missing a slightly different angle on this.

I did mention several other researchers/authors, and it's hard to give a more specific recommendation without knowing what part of it attracts you.

- Deming: management philosophy

- Weinberg: software engineering

- Womack: lean vs mass production

- Leveson: accident analysis, system safety

- Dekker: system safety

- Hollnagel: operator experience

- Ward: innovation, product development

Re: How to Safely Think in Systems

#35

Earlier quoted context omitted.

I lead a team that went beyond this problem in an investment bank: we must make the trading resistant to volume increase, whatever the system. It's an exhausting exercise: we must constantly join new team, extract the source code from their grippy hands, show them how to profile, explain the globality of the problem, how doing a good job only matters if down the line people can still trade whatever the volume and yes…

Not optimized code is not code with "beginners mistakes". It is simply code that need optimisation.

Boiling water in a pot without the lid on is a beginners mistake. The fix is easy, obvious and the gains are significant. Claiming that it eventually works anyway is setting a low standard.

With code the factor can often be several magnitudes larger than the example above. Like using O(N*N) where O(N) is the norm, spawning a thread for every function call, doing rpc for things that should be local, and so on.

These things are bad practices and it’s ok to call them mistakes. Beginners will make mistakes and that is acceptable. Everybody learns.

Re: How to Safely Think in Systems

#36
post #5

None of that has really anything to do with systems thinking. That models change, omit information and don't represent reality as such is true for any kind of thinking, systems or otherwise. That's just a truism. At its core systems thinking is an antidote to reductionism. The essential feature of a system is that it is an indivisible whole and that its features are more than the sum of its parts. Systems lose their…

> I think microservice architectures are almost always the result of ignoring systems thinking lessons. Pretty much. The current hope is This Time It's Different, because of various self-discovery service registries, observability approaches, more orchestration, and so on. We've arguably made some progress; FAANG's wouldn't be be able to operate at their scale if something hadn't been accomplished on that front. But…

Yep but my beard isn’t completely white yet and I don’t like umbrella drinks. But seriously, my position was “eliminated” just prior to the pandemic, largely because I tried to convince the CIO that a financial company with a million customer target, probably didn’t need a cloud-based, micro services architecture. I was deemed a dinosaur. He wanted the marketing buzz. They still don’t have their new product.

Re: How to Safely Think in Systems

#37

Earlier quoted context omitted.

Assuming you mean the connections between the components - a hodge-podge of different models, tools, techniques. There is no one way to do it, partly because of how different any given system can be from another. Even within software engineering, it really depends on the industry you're in, the application of the software, the stakeholders, the risks. But generally speaking, most people only track the connections at…

That's exactly what I meant. For standardization, does Kubernetes help in that regard? For example when using network rules to whitelist what component is allowed to communicate with what service? I imagine extracting the current rules and building a graph makes discovery easier. No tolerance/limits/throughput or availability data is included though. The approach is also limited to the cluster level, excluding out-of…

You're spot on, it would provide limited information. In fact, it may be better to use a network monitor to trace network connections and graph that. Old network rules stick around, and so a graph of just the rules would show you connections that may not exist. And network rules are often made of CIDRs or port ranges, so it's not telling you what actual nodes are receiving traffic. If the CIDR and port range includes multiple networks with multiple components each, you don't really know what's connected to what. Distributed tracing is basically that from the application layer (and includes network calls).

Like yourapostasy says, this kind of post-hoc system design can lead to fallacies, and doesn't contribute to the initial design of the system. If you have nothing else to go on, it helps. But your time is probably better spent investing in formal specifications, and then developing components, connections, and all the operational aspects as implementations and validations of the specification.

Many papers have been published about this, spanning from the 70s to the late 90s, talking about the evolution of software systems engineering. After the 2000s, software engineering became more art than science when the Agile Manifesto gave everyone an excuse to stop caring about rigor.

Re: How to Safely Think in Systems

#38

Earlier quoted context omitted.

I lead a team that went beyond this problem in an investment bank: we must make the trading resistant to volume increase, whatever the system. It's an exhausting exercise: we must constantly join new team, extract the source code from their grippy hands, show them how to profile, explain the globality of the problem, how doing a good job only matters if down the line people can still trade whatever the volume and yes…

Not optimized code is not code with "beginners mistakes". It is simply code that need optimisation.

Not understanding how your software fits in the overall system and not understanding what is important is a beginner mistake.

Re: How to Safely Think in Systems

#39
post #8

Earlier quoted context omitted.

Donatella Meadows created real impact wherever she went. You might also want to look into real-life studies of efficiency and safety by people such as Deming, Weinberg, Womack, Leveson, Dekker, Shewhart, Hollnagel, Ward, etc. There plenty of evidence that it works, even if Meadow's more popular book isn't filled with references.

I read the book twice. I walked away feeling the same as OP. I would appreciate it a lot of you have any other reference material on this, any book or resource that convinced you or helped you. I feel I'm close to grasping the underlying reasoning and benefits, but think I am missing a slightly different angle on this.

Try Business Dynamics by John Sterman.

I lent my copy to my brother over a decade ago. Still haven't got it back...

Also Exploring Requirements: Quality Before Design by Donald Gause and Gerald Weinberg. Really useful advice about questions to ask people to understand what the system really does/should do.

Re: How to Safely Think in Systems

#40

Earlier quoted context omitted.

> I think microservice architectures are almost always the result of ignoring systems thinking lessons. Pretty much. The current hope is This Time It's Different, because of various self-discovery service registries, observability approaches, more orchestration, and so on. We've arguably made some progress; FAANG's wouldn't be be able to operate at their scale if something hadn't been accomplished on that front. But…

Yep but my beard isn’t completely white yet and I don’t like umbrella drinks. But seriously, my position was “eliminated” just prior to the pandemic, largely because I tried to convince the CIO that a financial company with a million customer target, probably didn’t need a cloud-based, micro services architecture. I was deemed a dinosaur. He wanted the marketing buzz. They still don’t have their new product.

> ...a financial company with a million customer target, probably didn’t need a cloud-based, micro services architecture.

Only a million? There aren't hugely many scenarios where cloud-based microservices would beat a monolith at that small scale.

Where many such decisions bog down is in re-engineering existing processes into microservices, or cloud, or simultaneously both. If you're starting out brand-new in a white space, then yes, by all means dive into that if you also possess the operational expertise to run it (another area I see a lot of stumbling). Functionally lift and shift strategies into the cloud is still frequently decided upon by well-meaning C-levels even this late into the cloud era, and they are still unerringly shocked at the resultant bills. Those with massive legacy infrastructures get seduced by the promised 10X cost reductions, and overlook the fine print it will cost them 10-100X current total spend as capital spend to get there. The future is always unevenly distributed.

Post reply on HN