Live data from Hacker News

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

news.ycombinator.com

1–10 of 98 posts

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

#1
I have build many small size web apps.

I lack experience in designing medium to large application. I tried to read system design content but not able to gain confidence.

How can I do the hands-on practice of system design concepts. Please your tips, resources, plan etc.

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

#2
I think practicing design is difficult because of one major issue: how will you know if you got it right? I think the only way is to actually implement the design, and learn what works and what doesn't (and, crucially, why).

It's essentially an apprenticeship: you work in teams and as you gain experience, you contribute progressively more and bigger ideas. One day, you get a job where the design is your responsibility.

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

#4
post #3

google for "github system design primer" repository, youll get ideas

This one? https://github.com/donnemartin/system-design-primer

There's also a list here with more resource links: https://github.com/madd86/awesome-system-design

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

#6
First, it is very hard and there is no such thing as a set of perfect answers for every situation. So, relax and try to have fun while you learn - you might be right, you might be wrong and so is every other developer. L

Second, I think the best way to learn is to just work on a lot of systems. Sometimes your ideas will work out. Other times, you will wish you had become anything other than a software developer. Both states are equally helpful. It’s nice to write good software and have things work out. But you’ll learn a lot more from the projects you can only fix with ‘rm -rf’.

Third, try to get as wide a range of experience as possible. Be the lead designer on one project. And be extremely junior on another project. You’ll learn as much from implementing another person’s designs as you will learn from implementing you own.

And finally, have fun and be cool to everyone you work with. You will meet a lot of beautiful people and a lot of assholes. But if you love writing software, you’re part of the tribe. Make it positive and be cool to others. In twenty years, you won’t remember half of what you know now. But you will always remember developers who were kind to you when you were learning. Be one of those memorable developers…:)

Good luck. It’s a hard path but I know you can do it. You’ve proven it by starting off here.

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

#7
post #5

Build a system. That's how you learn.

Yeah. Video games are very good at getting you to do this, and for teaching systems thinking.

Not directly related to any specific type of system, of course, but very good at getting you to build a system, maintain it, and fix any issues with it.

Factorio is an obvious example.

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

#9
I've had some limited experience with architecture katas[0] and they seem to do a decent job of exercising this skill. They're no replacement for experience, but at least they're _something_.

[0] https://nealford.com/katas/#:~:text=Architectural%20Katas%20....

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

#10
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 connection pools.

So your best bet is to join such a startup. You will learn a lot by handling real user traffic. And also scaling isn’t homogeneous. For example, you make different trade offs scaling a search application Vs scaling a payment processor. So business use case and business domain does matter.

Post reply on HN