Live data from Hacker News

Ask HN: What is best way to do hands-on practice for system design?

news.ycombinator.com

71–80 of 98 posts

Re: Ask HN: What is best way to do hands-on practice for system design?

#71
post #47

Earlier quoted context omitted.

> you learn on the job by getting your hands burnt. That's how it works in new fields where there's no good theorical foundations yet. I think OP is asking if we already know how to avoid getting hands burnt in the first place, as in many other fields of engineering where you don't just learn on the job and get yourself burnt a few times.

This is why I think "software engineering" is more of a creative field than a "hard engineering" one. More akin to painting or singing. You need practice in order to improve solving problems in the real-world, you can't just read up on it and become better than people who've actually implemented useful things in real scenarios.

I think that in the area of system reliability, specifically, there's quite a lot of theory that's useful and often ignored by practitioners, though. Saying you need to learn everything on the job is akin to cowboy system design. There's a lot of collective knowledge you should absolutely use when designing large systems, and ignoring that body of knowledge by assuming the only way is learning on the job is a mistake.

I believe not long ago, medicine was like that. Clearly, things can, and should, become more standardized and that will not in any way encumber the creativity that is also a big part of our field.

Re: Ask HN: What is best way to do hands-on practice for system design?

#72
post #59
post #55

You learn large scale system design via real world application, being in the room when it happens, and from closely working with folks who are already practicing it. This kind of work is sometimes as much art as it is science, highly specific to the situation at hand and requirements of the system to be designed. It absolutely bothers me that the resources out there are few and far between. It is hard to change that.…

I'll second that the best way to get better is to be a practitioner. Part of the reason that there's not more material on systems design is because the way we design systems is highly dependent on core systems that pre-exist a new system. You can learn all the things on paper about layer 8 vs layer 4 load balancing, how to build an effective distributed cache, how to building a decentralized rate limiter, etc but all…

What is layer 8?

Re: Ask HN: What is best way to do hands-on practice for system design?

#73
Are you trying to pass "system design interviews" . Those are more about putting on a oscar worthy performance desiging instagram with billion users in half hour. You just have to memorize all the patterns like cdn, dbsharding, cap theorem , geolocation alogrithms, queues and logs ect.

Re: Ask HN: What is best way to do hands-on practice for system design?

#74
post #55

You learn large scale system design via real world application, being in the room when it happens, and from closely working with folks who are already practicing it. This kind of work is sometimes as much art as it is science, highly specific to the situation at hand and requirements of the system to be designed. It absolutely bothers me that the resources out there are few and far between. It is hard to change that.…

Given the issues of BGP this is a great place to start an open education system!

Re: Ask HN: What is best way to do hands-on practice for system design?

#75
post #55

You learn large scale system design via real world application, being in the room when it happens, and from closely working with folks who are already practicing it. This kind of work is sometimes as much art as it is science, highly specific to the situation at hand and requirements of the system to be designed. It absolutely bothers me that the resources out there are few and far between. It is hard to change that.…

Note that system design interviews are often completely customized and adapt on the fly to the applicant's responses, so there's no way to do a "cracking the system design interview" the way you can with coding problems. When I give coding interviews I have one question that I give over and over again, learn the ins & outs of the questions and how candidates go wrong, and score based on whether the candidate can comp…

> there's no way to do a "cracking the system design interview" the way you can with coding problems

I'd disagree:

- System Design Interview – An insider's guide: https://smile.amazon.com/gp/product/B08CMF2CQF

- System Design Interview Vol 2: https://smile.amazon.com/System-Design-Interview-Insiders-Gu...

- Designing Data-Intensive Applications: https://smile.amazon.com/gp/product/1449373321

- System Design Primer: https://github.com/donnemartin/system-design-primer

Especially: https://github.com/donnemartin/system-design-primer#how-to-a...

Re: Ask HN: What is best way to do hands-on practice for system design?

#76
post #72
post #59

Earlier quoted context omitted.

I'll second that the best way to get better is to be a practitioner. Part of the reason that there's not more material on systems design is because the way we design systems is highly dependent on core systems that pre-exist a new system. You can learn all the things on paper about layer 8 vs layer 4 load balancing, how to build an effective distributed cache, how to building a decentralized rate limiter, etc but all…

What is layer 8?

They must've meant Layer 7 / Application Layer. There is no Layer 8 in OSI model (unless they're talking about a different model)

Re: Ask HN: What is best way to do hands-on practice for system design?

#77
Work through these books, then you start looking at any random app or system and can start from there:

- System Design Interview – An insider's guide: https://smile.amazon.com/gp/product/B08CMF2CQF

- System Design Interview Vol 2: https://smile.amazon.com/System-Design-Interview-Insiders-Gu...

- Designing Data-Intensive Applications: https://smile.amazon.com/gp/product/1449373321

- System Design Primer: https://github.com/donnemartin/system-design-primer

Especially: https://github.com/donnemartin/system-design-primer#how-to-a...

- The Architecture of Open Source Applications: http://aosabook.org/

Re: Ask HN: What is best way to do hands-on practice for system design?

#78
post #72
post #59

Earlier quoted context omitted.

I'll second that the best way to get better is to be a practitioner. Part of the reason that there's not more material on systems design is because the way we design systems is highly dependent on core systems that pre-exist a new system. You can learn all the things on paper about layer 8 vs layer 4 load balancing, how to build an effective distributed cache, how to building a decentralized rate limiter, etc but all…

What is layer 8?

Layer 8 load balancing is humans opening and closing browser tabs, I presume?

Re: Ask HN: What is best way to do hands-on practice for system design?

#79
I've done a couple. I'm working on one, right now.

I suspect that people would take issue with the exact implementations I use, but they tend to work fairly well, and have lasting power (I wrote an API for imaging devices in C that was still in use, 25 years later).

I wrote a backend system that is currently in use, worldwide, by thousands of people (I wrote it about twelve years ago), but has been taken over by a new team (I hardly have anything to do with it, anymore). I also wrote a few clients; most of which have been retired. The system I'm working on now, leverages it, and mixes it with another one I wrote (just a couple of years ago).

My way won't win Buzzword Bingo, but it WFM. YMMV.

I'm happy to share, but I've found that not everyone wants to do things the way I do, so I'll do so out of the public eye. I have a few generic things, here[0], that I've written, over the years, talking about some of my techniques.

[0] https://littlegreenviper.com/miscellany/

Re: Ask HN: What is best way to do hands-on practice for system design?

#80
It takes time. Keep practicing by - re-reading, doing hands-on exercises. There are many fabulous resources shared by our fellow HNers. I think you got what you asked for!

Couple points from me:

Have someone conduct your mock interview, once you think you are ready. Also, don't hesitate from appearing in an interview at a company which you don't plan to join. Another good way to practice and demonstrate your skills.

Post reply on HN