Live data from Hacker News

How to Safely Think in Systems

lethain.com

21–30 of 40 posts

Re: How to Safely Think in Systems

#21

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…

judging the quality of the book by number of pages or picture vs word density is like judging the quality of a program by line of code. i'm sure you know this, just gently reminding you of the natural bias we all have

Re: How to Safely Think in Systems

#22

Earlier quoted context omitted.

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…

How are all connections usually tracked, if they are?

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 design time, as an artifact of overall architecture. And this isn't great, because as the system changes (modern software systems change constantly) the entire system development lifecycle is not being re-assessed every time some component changes.

So in the best case, with a Waterfall model, you have very well defined connections in design, and you have to pray that your SDLC validates that design. But most people prefer Agile, which in practice means "I don't need a well defined system! #YOLOEngineering". So everything is built ad-hoc and nobody even attempts to figure out the entire picture. And in that case, Operations may be told to figure it out (they're the ones running it all, so they have the best vantage), and they tend to implement monitoring and distributed tracing that enables cobbling together a picture of how things are actually working. But that's not fed back into teams' designs, it's just used for addressing problems after the fact.

To be specific: you might use ADRs and manually crafted diagrams to map out the connections, or UML, or some other systems diagramming tool/standard. But often that's created only at a certain level of the system, and doesn't dive deep into component interfaces or tolerances/limits or availability. So the full picture can never be seen from one view, and it's almost never the teams themselves mapping it out.

Re: How to Safely Think in Systems

#23
post #13
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…

> At its core systems thinking is an antidote to reductionism. This is a brilliant insight.

It's also wrong :)

Systems thinking incorporates reductionism - you do think about the individual parts as well as the hole. Systems thinking is a synthesis of reductionism and holistic/emergence thinking, and both are necessary.

From Meadow's "Thinking in Systems": I start with the basics: the definition of a system and a dissection of its parts (in a reductionist, unholistic way). Then I put the parts back together to show how they interconnect to make the basic operating unit of a system: the feedback loop.

It is not an antidote so much as an acknowledgment of the incompleteness of reductionism.

Re: How to Safely Think in Systems

#24

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…

What does your current way of thinking get you? Do you have tangible evidence for that? Not just "it's my way of thinking, and I create output, therefore", but the causal relationship you demand from this book?

"How to think" is always subjective, and additional ways to think get us additional tools in our toolbox. I'd strongly recommend you at least skim the book, and see if it's applicable to your world of problems. (It's 166 pages and "mostly pictures", so it should be a quick read - and it only needs to make minimal impact to repay the time you spent)

Re: How to Safely Think in Systems

#25
post #13
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…

> At its core systems thinking is an antidote to reductionism. This is a brilliant insight.

Thanks for the references bmitc.

Sorry that your comment is dead for some reason -- so I couldn't reply directly.

Re: How to Safely Think in Systems

#26

Earlier quoted context omitted.

How are all connections usually tracked, if they are?

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-cluster communication, while having everything in the cluster may not be that secure.

Re: How to Safely Think in Systems

#27

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…

Someone always has to come with this particular middle-brow dismissal whenever anything subjective gets posted to HN. Not that I think this is the most brilliant article, but like most things in general-purpose high-level software engineering management, the ideas presented are not quantifiable or specific enough to be tractable for rigorous scientific exploration, you just have to consider them within the framework of your own expertise and experience. Trying to force a data-driven approach on top chaotic human systems where the inputs and outputs themselves are vague and subjective is a quick path to the McNamara Fallacy and other management theory quackery.

Re: How to Safely Think in Systems

#28

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…

Someone always has to come with this particular middle-brow dismissal whenever anything subjective gets posted to HN. Not that I think this is the most brilliant article, but like most things in general-purpose high-level software engineering management, the ideas presented are not quantifiable or specific enough to be tractable for rigorous scientific exploration, you just have to consider them within the framework…

We're in complete agreement then. The data-driven approach need not be applied to everything. My point was subjectivity trying to chalk itself up as rigorous using scientific sounding terms simply rubs me the wrong way.

Re: How to Safely Think in Systems

#29

Earlier quoted context omitted.

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…

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.

Re: How to Safely Think in Systems

#30
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 I'd wager there is a lot more systems thinking that goes on in those architectures than is being let on in public.

Management is not a substitute for leadership. Throwing together components is not a substitute for systems thinking.

There are no silver bullets, whocoodanode?

It is curiously ironic to me that we're traveling around to a similar kind of (yet still different) environment as mainframes, with well-published interfaces, inscrutable non-realtime chargeback style billing, vendor lock-in, lots of scrutiny upon fine-grained transaction monitoring, and so on. Somewhere over in a well-earned retirement, probably sits some white-beard, chuckling to themselves as they down another plate of chicken wings and quaff a fizzy umbrella drink.

Post reply on HN