TE
TechEcho
Home24h TopNewestBestAskShowJobs
GitHubTwitter
Home

TechEcho

A tech news platform built with Next.js, providing global tech news and discussions.

GitHubTwitter

Home

HomeNewestBestAskShowJobs

Resources

HackerNews APIOriginal HackerNewsNext.js

© 2025 TechEcho. All rights reserved.

Ask HN: Best resources on abstracting and dealing with complexity

88 pointsby tinktankover 1 year ago
What would be your recommendations on resources that teach on how to abstract away and cope with complexity and hierarchy in technical domains?

22 comments

Layvierover 1 year ago
In software, "A Philosophy of Software Design" is a must read imo. Otherwise Rich Hickey's talks are always very insightful.
评论 #38635223 未加载
评论 #38635749 未加载
评论 #38635805 未加载
评论 #38645057 未加载
runningmikeover 1 year ago
I created my own guide after reading too much books: Simplify IT, The art and science towards simpler IT solutions , it’s cc-by on <a href="https:&#x2F;&#x2F;nocomplexity.com&#x2F;documents&#x2F;reports&#x2F;SimplifyIT.pdf" rel="nofollow noreferrer">https:&#x2F;&#x2F;nocomplexity.com&#x2F;documents&#x2F;reports&#x2F;SimplifyIT.pdf</a><p>I also keep a very sort overview of imho good resources on Problem Solving Methods at <a href="https:&#x2F;&#x2F;www.bm-support.org&#x2F;problem-solving-methods&#x2F;" rel="nofollow noreferrer">https:&#x2F;&#x2F;www.bm-support.org&#x2F;problem-solving-methods&#x2F;</a>
bob1029over 1 year ago
Out of the tar pit changed how I look at everything.<p>Relational modeling can be the ultimate answer for wrangling complexity. It supports real world messy things like circular dependencies without a hitch. You can achieve the same in OOP, but then go and try to serialize or persist an instance of such a thing... you will find a very unhappy variety of dragon lurking in that stack trace.
simneover 1 year ago
Good question. Good answers. I&#x27;ll add one :)<p>If considering not just software, but engineering or systems overall, best of all I seen is Goldratt, Theory of Constraints (usually named TOC).<p>Resources (mostly books) are many, they even created their own accounting system and simulation software. For intro good books The Goal (1,2,3), they are for different markets and shows look on different aspect of TOC, and easy to read.
评论 #38635736 未加载
golfinho23over 1 year ago
This is a manual solution. Create system sequence diagrams of your domain as you’ll learn a great deal in the process and have a visual heuristic to revisit when needed.
评论 #38641976 未加载
bionhowardover 1 year ago
Great question, I personally recommend:<p>1. Simple Made Easy by Rich Hickey (video <a href="https:&#x2F;&#x2F;www.infoq.com&#x2F;presentations&#x2F;Simple-Made-Easy&#x2F;" rel="nofollow noreferrer">https:&#x2F;&#x2F;www.infoq.com&#x2F;presentations&#x2F;Simple-Made-Easy&#x2F;</a>)<p>2. Thinking in Systems by Donella Meadows (pdf <a href="https:&#x2F;&#x2F;wtf.tw&#x2F;ref&#x2F;meadows.pdf" rel="nofollow noreferrer">https:&#x2F;&#x2F;wtf.tw&#x2F;ref&#x2F;meadows.pdf</a>)<p>3. Raymond Hettinger’s content about CHUNKING is classic for this (one example video <a href="https:&#x2F;&#x2F;youtu.be&#x2F;UANN2Eu6ZnM?si=TnLLj1CASwubkAS2" rel="nofollow noreferrer">https:&#x2F;&#x2F;youtu.be&#x2F;UANN2Eu6ZnM?si=TnLLj1CASwubkAS2</a>)<p>4. The classic tome on Abstraction is Gödel, Escher, Bach: an Eternal Golden Braid, by Doug Hofstadter (<a href="https:&#x2F;&#x2F;en.m.wikipedia.org&#x2F;wiki&#x2F;Gödel,_Escher,_Bach" rel="nofollow noreferrer">https:&#x2F;&#x2F;en.m.wikipedia.org&#x2F;wiki&#x2F;Gödel,_Escher,_Bach</a>)<p>5. Finally, I’ll cut myself at lucky number five by pointing you toward Jüergen (You-Again!) Schmidhuber’s fascinating webpage: <a href="https:&#x2F;&#x2F;people.idsia.ch&#x2F;~juergen&#x2F;" rel="nofollow noreferrer">https:&#x2F;&#x2F;people.idsia.ch&#x2F;~juergen&#x2F;</a><p>Honorable mention to Margaret Hamilton’s T-Maps and F-Maps. Use a hierarchical numbered outline.<p>Zoom in and out of the fractal network. Remember your working memory holds seven (7) concepts, plus or minus two (2) … so chunk size around five (5) or less is ideal for cognitive accessibility.
riversflowover 1 year ago
I swear I got this recommendation here, but I can&#x27;t remember who to credit and can&#x27;t find the post.<p>Anywho, this is arguably the overarching reason <i>Design Rules: The Power of Modularity</i>[1] was written, at least in the abstract way you are asking it.<p>The book tells you about the process that led to the creation of IBM&#x27;s System&#x2F;360, and it shows how a set of patterns and rules have converged in parallel industry sectors. It was honestly one of the most interesting books I&#x27;ve ever read, and that&#x27;s <i>exactly</i> what it is about. Highly recommend this book to virtually anyone on this board.<p>[1] ISBN10: 0262024667
评论 #38635752 未加载
recursivedoubtsover 1 year ago
own-horn tooting, but... don&#x27;t:<p><a href="https:&#x2F;&#x2F;grugbrain.dev" rel="nofollow noreferrer">https:&#x2F;&#x2F;grugbrain.dev</a>
whalesaladover 1 year ago
<a href="https:&#x2F;&#x2F;www.manning.com&#x2F;books&#x2F;grokking-functional-programming" rel="nofollow noreferrer">https:&#x2F;&#x2F;www.manning.com&#x2F;books&#x2F;grokking-functional-programmin...</a><p>the concepts here are re: functional programming, but they apply to everything tbh.<p>whether your system is a single monolith or a bunch of microservices, the core ideas hold true: think about your system in the form of actions (mutations), calculations&#x2F;computations (reads), and data as data.
评论 #38635081 未加载
valandover 1 year ago
Not software engineering exclusively, but this article in system domain in general <a href="https:&#x2F;&#x2F;donellameadows.org&#x2F;archives&#x2F;leverage-points-places-to-intervene-in-a-system&#x2F;" rel="nofollow noreferrer">https:&#x2F;&#x2F;donellameadows.org&#x2F;archives&#x2F;leverage-points-places-t...</a>
评论 #38635353 未加载
Nidhugover 1 year ago
I recommend David&#x27;s Shapiro series on Systems Thinking that can be found here: <a href="https:&#x2F;&#x2F;www.youtube.com&#x2F;@Systems.Thinking" rel="nofollow noreferrer">https:&#x2F;&#x2F;www.youtube.com&#x2F;@Systems.Thinking</a><p>It deals with more than just software, as it can be applied in many systems.
charlyslover 1 year ago
Principles of Computer System Design<p><i>This textbook, an introduction to the principles and abstractions used in the design of computer systems, is an outgrowth of notes written for 6.033 Computer System Engineering over a period of 40-plus years. Individual chapters are also used in other EECS subjects. There is also a web site for the current 6.033 class with a lecture schedule that includes daily assignments, lecture notes, and lecture slides. The 6.033 class Web site also contains a thirteen-year archive of class assignments, design projects, and quizzes.</i><p><a href="https:&#x2F;&#x2F;ocw.mit.edu&#x2F;courses&#x2F;res-6-004-principles-of-computer-system-design-an-introduction-spring-2009&#x2F;" rel="nofollow noreferrer">https:&#x2F;&#x2F;ocw.mit.edu&#x2F;courses&#x2F;res-6-004-principles-of-computer...</a>
max_over 1 year ago
Take Leslie Lamport&#x27;s TLA+ course. [1]<p>And learn TLA+. The core idea of TLA+ is that any problem, how ever complex can be represented as a state machine i.e a sequence of variables or states that change over time.<p>It can be used to describe software, hardware and theoretical concepts like consensus algorithms.<p>I suspect one low hanging fruit for TLA+ is to use it for describing physical phenomena gravity, magnetism, boiling etc. This I haven&#x27;t seen work using it for that yet.<p>[1]: <a href="https:&#x2F;&#x2F;lamport.azurewebsites.net&#x2F;video&#x2F;videos.html" rel="nofollow noreferrer">https:&#x2F;&#x2F;lamport.azurewebsites.net&#x2F;video&#x2F;videos.html</a>
waynesonfireover 1 year ago
SICP.<p>I will never forgive my college professors for not teaching this to me. Many years later, when I discovered SICP on my own, I recognized that my high-school CS teacher wanted expose me to this. I was too young at the time to understand. Bummer.<p>SICP is about managing complexity.
评论 #38639110 未加载
sirwhinesalotover 1 year ago
The greatest advancement in computing, IMO, was structured programming. Ifs, Loops, Functions. What do they have in common? They got rid of goto spaghetti.<p>Erlang actors excel in part because they are structured in supervision trees. There&#x27;s that word again.<p>If you can, structure things as a tree. If it is not possible, make a DAG. Only use arbitrary graphs as a last resort.<p>This is why so many OO codebases turn into a mess, every object has references to who knows what, forming a complex dependency graph full of action at a distance.
3npover 1 year ago
You don&#x27;t mention where you&#x27;re at.<p>You&#x27;re describing a major part of Software Engineering. Most reasonable university&#x2F;college SE 101 courses will focus here. Which is to say, if you haven&#x27;t (or it&#x27;s been a while), check reading lists for university SE classes and pick the ones that focus on modeling. steer clear of process&#x2F;agile material.<p>Commonly used and recommended books would be GoF (if you&#x27;re not familiar with the patterns already), Code Complete, and The Pragmatic Programmer.
hiAndrewQuinnover 1 year ago
Useful heuristic for me: Organize everything so that it doesn&#x27;t require more than 4 chunks of short term memory to work with.<p><a href="https:&#x2F;&#x2F;hiandrewquinn.github.io&#x2F;til-site&#x2F;posts&#x2F;the-rule-of-four&#x2F;" rel="nofollow noreferrer">https:&#x2F;&#x2F;hiandrewquinn.github.io&#x2F;til-site&#x2F;posts&#x2F;the-rule-of-f...</a>
EdwardCoffinover 1 year ago
Butler Lampson&#x27;s 2020 expansion of his 1983 paper <i>Hints and Principles for Computer System Design</i> [1]<p>[1] <a href="https:&#x2F;&#x2F;arxiv.org&#x2F;abs&#x2F;2011.02455" rel="nofollow noreferrer">https:&#x2F;&#x2F;arxiv.org&#x2F;abs&#x2F;2011.02455</a>
paulorlandoover 1 year ago
Takes more of a humanities approach to technical domains, but there&#x27;s <a href="https:&#x2F;&#x2F;unintendedconsequenc.es&#x2F;" rel="nofollow noreferrer">https:&#x2F;&#x2F;unintendedconsequenc.es&#x2F;</a>
o_nateover 1 year ago
Mark Seemann&#x27;s book &quot;Code That Fits in Your Head&quot; has many practical ideas about how to manage code complexity with examples.
swahover 1 year ago
One thing that really works but I only did once or twice is throwing it out and starting again.
davedxover 1 year ago
Out of the Tar Pit.