Live data from Hacker News

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

news.ycombinator.com

51–60 of 98 posts

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

#51
post #36

Earlier quoted context omitted.

To add something further to this excellent comment: Join a start up with a legacy code base, e.g. dodgy old PHP that they’re pulling out into modern domain services. Within a year you’ll be able to analyse performance and scalability issues and refactor them in your sleep.

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.

> But working at a company like this is not a good way to build your wealth

Common software engineering mistake: focusing on solving the wrong problem.

OP wants to practice hand-on system design. OP never writes about "building wealth" and doesn't even mention money anywhere. So where do you get that this is about building wealth?

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

#53

I know you didn’t ask for this but Me and couple of my friends at big tech who have given and taken 500+ interviews, do mock interviews for each other and references. For reference we do paid 45 mins mock interviews. In case you are interested, dm me and I can share more details.

There’s no dm on hackernews, can you share your email or something?

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

#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 encountered occasionally resistance in organizations to share more openly the process, e.g. I suggested video taping it and uploading the video as a start. Naturally, plenty of confidential information can be disclosed in such design sessions, so enthusiasm about sharing recordings is rather low, even when everyone in the room agreed to be taped in the first place (which in itself is almost impossible).

I am bothered by engineering topics that have this „tribalism“ way of education. In networking one of these areas is BGP. No one lets you near Border Routing until you can do it perfectly, because of it potentially catastrophic impact (Pepperidge Farms remembers Pakistan Telecom hijacking YouTube!). When I tried to solve that one I ended up spinning up a whole ISP which’s sole purpose is to play with and break BGP. [1]

For system design I haven’t found a solution yet, ideas welcome. In the meantime, all you can do is read the little that is available (e.g. [2]) and try to talk to as many practitioners as possible, asking them to share or simulate a session privately.

1: https://www.nonattached.net 2: https://cloud.google.com/blog/products/management-tools/sre-...

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

#56

Hmm. I think you might be getting at two different questions. One: How do you get better at systems design? Build stuff -- lots of stuff. If you're interested in designing particular kinds of systems (say, planet-scale web services...), then get a job at a company that does that kind of thing. Two: How do you get better at systems design interviews ? That's much easier; you can just throw money at the problem. Use on…

> It took me That's a lot of money!

A pretty good ROI, if I had to guess?

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

#57
post #24

Earlier quoted context omitted.

And I would add : 3. Not being specific about any technologies. Instead of using a "SQL Database" and a "cache", just say "PostgreSQL" and "Redis". It's an interview, if you're not specific, I will start thinking you don't have any experience with Redis or Postgres. If you really don't have any, I will find out anyway.

I would advise against it. Two reasons: - if the person interviewing you know the specific tech you picked, you give them an opening to control the interview. They can go anywhere they want and you would likely fall short unless you know the stack in&out - when you pick specific technology, you also have to defend why this one specifically. For ex, why redis and not memcache or why only postgres and not redshift.. If…

Great point. It's also hazardous if your interviewer does NOT know the specific tech you suggest. They may reject it with "Sounds suspicious, if that's any good why haven't I heard of it?"

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

#58
post #24

Earlier quoted context omitted.

And I would add : 3. Not being specific about any technologies. Instead of using a "SQL Database" and a "cache", just say "PostgreSQL" and "Redis". It's an interview, if you're not specific, I will start thinking you don't have any experience with Redis or Postgres. If you really don't have any, I will find out anyway.

All these differing opinions on this tells me interviews are a crapshoot subject to the interviewer's whims. If I got you for an interviewer I would need to be specific, for others who replied to this, I'd need to be generic. Hopefully the interviewer is helpful in this regards and indicates his preference, maybe by asking what cache would you use and why instead of silently docking me points.

From the inside, it can feel like there are actually too many rules. The interviewer is likely running a fairly narrow script. The interviewer probably believes they are being fair or generous when allowing minor deviations from their structure.

From the outside, it all feels random: unless you know the rules the interview is playing by, you can easily make a mistake. Each place has a different interview script and priorities.

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

#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 of these things are highly dependent on what exists prior, and knowing how to work in non-greenfield components reflects an internal familiarity with them.

The other side to systems design is more analogous to producing a map of the world; eg: documenting systems as you work on them. When I was a new engineer, this is how I learned systems design. Every new system I encountered I would begin to model. This had the added benefit of teaching me UML and how to make designs that highlight the important parts.

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

#60
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.…

The only way I learned was the "main guy" flipped off management and walked out. You start learning real fast. "WTF IS PXE BOOT. Session vms aren't booting. Oh jesus, JEFF! HA_ERR_KEY_NOT_FOUND people can't login ". I couldn't learn anything otherwise due to nerves, PR gating and risks of catastrophic failure. But, when I was the only person left, let's roll it. PR approved!
Post reply on HN