15 comments

[ 4.1 ms ] story [ 29.4 ms ] thread
Unlike the real periodic table, here you can add new elements also
My pet peeve on the internet (and the only one I consistently rant about) is "Periodic Table of X" The data is often visualized to look like the Periodic Table of Elements. At least this one doesn't make that mistake!

But then, are the system design principles periodic in some way? Does adding Y to one of the principles turn it into another? And if you add enough Ys, does it turn back into the same group again? Here, I find it's a resounding no.

Better to call it a Taxonomy of System Design instead.

/rant

Somehow the TABLE is missing.
A periodic table with no table and no periodicity.

Wouldn’t “Elements of System Design” have worked?

Author here, appreciate the share :) I was not expecting this to get so much attention.

To clarify: this is indeed just a taxonomy of classic system-design principles. The periodic-table styling is a familiar metaphor; there is no claim that principles repeat periodically. The goal was to outline a mostly orthogonal set of design principles and highlight cross-domain connections across computer systems so it is easier to discuss designs precisely. Thanks for all the thoughtful feedback!

As more of an embedded and electronics engineer, I've mentally toyed with extending these software principles into broader engineering, and some of them work decently. However, there is questionable value in making things like bridges modular. Either way, I did need a system design almanac like this one.
(comment deleted)
As a systems engineer who works in SysML near daily, these System Design pages really are not general enough to apply to any system. Really the focus is on software and it’s very opinionated. Arguably, the different “systems” could be “subsystems” described herein
I believe this sort of thing will continue as people use LLMs to produce artifacts.

It will produce beautiful and thoughtful-looking work to even those with a discerning eye, but keep picking at it and you’ll see that bias and unintentional deception is endemic.

It’s not that LLMs can’t be used thoughtfully, but that it is essentially a bird laying rotten egg solutions by default, and only through conscientious continued hand-held process, throwing away the rotten yolk regularly, can it be used, and even then with care and only in certain circumstances. But, as it’s crafted to in its very nature to deceive in order to provide what is desired, it will eventually fool even those that understand its nature, with larger and larger consequences.

I have seen disease and famine destroy, and I don’t want to prevent solutions, but this is a beast, a great deceiver; have we not learned by now the story that will be told now that Pandora’s box has been opened?

i feel bad for anyone who has to deal with sysml, cameo and all that proprietary crapfest bolted on. couldnt pay me enough to go back
It always strikes me how much commonality exists across different software engineering disciplines—not to mention across fields outside of engineering (e.g., how double-entry bookkeeping mirrors immutable design principles, or how federalism resembles class-based OOP).

Great to see an attempt at describing this phenomenon. A great start to what will surely be an awesome resource.

I don't remember the exact book/article that prompted me, but I believe it's because everything software is designed by humans for humans. We invented formalism because it's a nice way to communicate truth about the world. Then we invented computers that act based on formal instructions. Then it's been us trying to replicate the world on top of computers. Paradigms are models of communication, data structures are models of information, algorithms are reusable instructions.
I've never seen these attempts at categorizing and operationalizing system design be effective in getting people or teams to design better systems. There's an exception to basically every rule, and good system designers often break any individual rule with good reason.

You have to grow system designers the hard way. Lots of iterations, go off and write up a design, get feedback, repeat. And then dogfood the design, whoever designed it should also do the brunt of the implementation and maintenance. That forced contact with reality leads to well designed systems, and people who produce them consistently. A second order effect is a culture of valuing well designed systems, people clustering around good system designers. No one wants to be on the project that is too complicated or unlikely to work or a high maintenance burden.