Live data from Hacker News

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

news.ycombinator.com

61–70 of 98 posts

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

#61
learn how the framework you use works. find one that better fits your model of the world. build a big app on top of this framework.

do this with bigger & bigger end vision but with a doable MVPin mind.

look at good examples.

open source the result,

https://www.makepostsell.com/ (python, Pyramid, sqlalchemy)

https://www.remarkbox.com

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

#62

Checkout highscalability.com, used to have lots of real word scalability issues and solutions back on the day. If you want hands on experience, pick an open source app in the language you know and deploy it somewhere and load test till it breaks and see which part breaks first. It could be your load balancer can’t handle that many connections or you app server rubs out of memory or the db comes to a crawl. The more r…

Highscalability.com was great! I still follow their RSS feed but there's not a lot of new content nowadays. If someone knows a similar resource I'd love to hear about it!

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

#63
post #41
post #36

Earlier quoted context omitted.

If you want to build your skills, sure go ahead. But working at a company like this is not a good way to build your wealth. You're far better off working at a big tech company that has awesome benefits or a fresh startup. Startups that have been around long enough to have a legacy code base aren't a place to become wealthy.

Not everyone aims to be wealthy. Most companies do pay a decent salary (specially in europe) with good work life balance. High paying jobs often correlates with high stakes which means potentially higher level of stress.

I think the comment meant "wealth" in the pg sense https://www.paulgraham.com/wealth.html

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

#64
there are many answers to this, but i'll try to give a, although biased, straightforward example.

- learn docker / docker-compose - tie a websocket server, a task queue, and 2-3 http microservices together - you don't have to have many resources, maybe 4-5 endpoints that go through all services - have a client javascript front like react - (bonus for grpc communication for intermediary connections between microservices) - try to break it/ fix it as much as you can. - along the way you'll introduce yourself to timeouts, retries, rate limiting, and other secure practices.

watch guarav sen or hussein nasser on youtube - they are extraordinary resources for aspiring and even competent backend architects

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

#65

You get hands on experience at a place 1. That has a functioning app AND 2. Business is growing rapidly bringing more customers than the system can handle. In other words you learn on the job by getting your hands burnt. I got lucky to have joined such a startup. Learnt a lot, from fixing DB queries, designing asynchronous order processor, using CDN etc. I worked on scaling up the full stack including stuff like conn…

This only works if you work someplace that has complicated problems and/or architecture astronauts who like to overcomplicate everything. Every small, mid and even most large-scale tech shops are able to execute on goals using off the shelf software. How do we scale payments at my org? We pay Stripe. How do we scale search? We pay Alogolia. How do we scale our public facing web sites? We pay Amazon. I've been in architects/director roles at multiple orgs for over ten years and everything they ask at FAANG system design interviews is still stuff I've only read about.

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

#66
The best hands-on practice was when I had to build my own, nobody to tell me to cut corners and time to do things right. It's important to do it right to know how to do it wrong (most company will prevent you from doing things right because of time/budget constraints).

Ask yourself:

- What constitute a _good_ infrastructure?

- Something flexible/adaptable ?

- Something predictable ?

- Something resilient ?

- Something easy to monitor ?

- Something else ?

- How do you prioritize these, who gets to decide which one matters most...

Architecture is asking a lot of questions, inviting others who will benefit/use your work into the decision making process.

One thing that I learned that is still helpful to me today is try to push as many decisions as possible to later, keep the door open for futur choices. Every system architecture is part invention, part discovery. As you put together your foundation, new requirements/restrictions will appear and you'll be happy to have the freedom to make some of your decisions then.

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

#67
If by "large" you mean e.g. "under relatively high load" then you can simulate this load and learn to deal with it. Populate your databases with a lot of generated data. Use load testing tools. Add latency and faults to different parts of the system (you can even inject errors into storage system (e.g. device-mapper)). At some point you even can rent some big servers (e.g. cloud) to test you problems and ideas - the cost of learning can be very effective. Make some checklists and iterate over all the components:

  - what happens if this stuff fails (and how to test it, how to analyze it)
  - what attack surface that stuff has
  - how to scale if it receives x10 requests or becomes x10 bigger
  - how can you explain to a new coworker how it works, how all the decisions were made
It will rapidly give you the real understanding and practice. System design is about dealing with problems, making compromises. It is very hard to make an effective book (probably even impossible - it should probably be an interactive course at least) that will walk you through this process, not just throw a bunch of "patterns" at you (which is not useful and can infect you with the shallow cargo-culting that our whole industry is so full of).

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

#69
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 complete it, or how close they came to a valid solution if they couldn't. When I give system design interviews I pick a topic that's something that both the candidate & I have had experience with, start out with "How would you design X?", and see where the candidate goes, drawing on my background knowledge to prompt further about cases to consider and situations that might come up in the real-world implementation of the system. The candidate is generally driving the interview, because at the level where system design interviews become necessary, the candidate should know how to pro-actively anticipate problems.

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

#70
post #25

System design interviews have so far been a bit hit or miss for me. All the interviewers seem to be looking for something, but I’ll be damned if I know what it is. I think I’m inclined to incrementally solve potential problems with the system (as introduced by the interviewer), where a lot of these interviews seem to want you to anticipate all issues. So asking lots of questions about what they want is probably a fir…

this describes my experience as well.
Post reply on HN