Live data from Hacker News

How to become good at system design?

news.ycombinator.com

11–20 of 29 posts

Re: How to become good at system design?

#11

Please don't bother with the whole charade of you have to do it to learn it. This kind of advice places more importance on people working at internet companies which have achieved scale. If you are at these companies then you have nothing to worry, experience will teach you. If you are not, follow @cppr's advice and read through DDIA. It will give you good enough introduction to data systems - not just databases. The…

One topic I haven't seen widely discussed in books but happens in the real world is back pressure. I think you're getting to this with "attack your designs", though I find it hard to predict.

Have you any thoughts, books or resources you turn to, to make sure the whole pipeline is balanced - or doesn't fall over when one part is overloaded?

Re: How to become good at system design?

#12
In addition to the responses talking about getting better with software specifically, I think it's helpful to work get better about thinking in a systems way, generally. There are systems all around us, providing plenty of opportunity to practice systems thinking. For instance right now looking out my window at my backyard I see a drainage basin with frozen water there. I can start asking questions like "where did that water come from," "how long will it stay in that drainage basin", "where does it go when it leaves," etc. Or looking at the next house over and seeing the steam coming out a chimney -- where does that steam come from? What is the heat source? How did that heat get to that house? Etc.

System design is, primarily, a way of thinking -- identifying how given things are actually connected, thinking through how they are connected, what happens up and down those connections as things change. Software systems are just one particular example of this (and, as a bonus, when you start to include non-software parts, such as the humans actually using the software, your software system design will be stronger).

I'm sure others will cite this too, but I don't see it yet at the time I'm writing this, so for a specific book let me recommend Thinking in Systems by Donella Meadows[0]

[0]https://www.chelseagreen.com/product/thinking-in-systems/

Re: How to become good at system design?

#14

In addition to the responses talking about getting better with software specifically, I think it's helpful to work get better about thinking in a systems way, generally. There are systems all around us, providing plenty of opportunity to practice systems thinking. For instance right now looking out my window at my backyard I see a drainage basin with frozen water there. I can start asking questions like "where did th…

I want to second the book recommendation, it changed how I viewed the world and politics.

Re: How to become good at system design?

#15

In addition to the responses talking about getting better with software specifically, I think it's helpful to work get better about thinking in a systems way, generally. There are systems all around us, providing plenty of opportunity to practice systems thinking. For instance right now looking out my window at my backyard I see a drainage basin with frozen water there. I can start asking questions like "where did th…

2nd (3rd?) the recommendation on the book

Re: How to become good at system design?

#16
In addition to the great resources already mentioned here, we’ve been making hands-on videos and lessons at Exponent that show you system design in practice, with interview prep as the main focus but advice and discussions with people across the industry.

Check out some of the free videos on our site[0] and YouTube channel.[1]

[0] https://tryexponent.com/courses/system-design-interview

[1] https://youtube.com/c/exponentTV

Re: How to become good at system design?

#17
The book System Design Interview is quite good and pragmatic. Personally, I found Designing Data-Intensive Applications less useful because it works on a much lower level. Like if you want to know how database internals work, then read DDIA. If you want to understand how to author a scalable API with layers of caching and distributed data storage, read SDI.

Re: How to become good at system design?

#18

Earlier quoted context omitted.

Good judgment comes from experience; experience comes from bad judgment

Good judgement comes from a mix of positive and negative experiences while paying attention to the right things.

Without experience you simply cannot know right from wrong

Re: How to become good at system design?

#19
my advice is that you need to both consume and produce system design.

don’t rely on interviewing people to test yourself. you have to practice talking or writing and stop settling with the feeling that you just learned something and will have the judgement to know when to use xyz when problem abc comes in front of you.

i built enumerable.co so that i can evaluate myself, to practice producing the knowledge i’m consuming, and reach the edge of my understanding.

there’s no database and i built over a few days, so it’s just a single player way to figure out how much you really don’t know

Re: How to become good at system design?

#20

In addition to the responses talking about getting better with software specifically, I think it's helpful to work get better about thinking in a systems way, generally. There are systems all around us, providing plenty of opportunity to practice systems thinking. For instance right now looking out my window at my backyard I see a drainage basin with frozen water there. I can start asking questions like "where did th…

Adding one more thing to my comment -- I think an important skill is the ability to put details in boxes and then kind of forget about them. Eg when thinking about a software system, being able to look at it with the appropriate "zoom level." The shape of the boxes, and how they relate to each other, are what you need to look at. Crucially, though, this doesn't mean details aren't important, it means they're not important _right now_. That's why I picked the analogy of the boxes; you will at some point need to open up the boxes again.

Or another way to try and explain it -- you can't keep everything in your mind's "RAM" -- when trying to think systematically, you need to offload the details onto disk for later retrieval. Don't throw them away! People who are "vision people" and brag about not sweating the details become really annoying to work with as a software engineer -- but you won't be able to grasp the system if your mental RAM is cluttered up with those details all the time.

Post reply on HN