Live data from Hacker News

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

news.ycombinator.com

31–40 of 98 posts

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

#31
I think you can even take the smallest web app and make it into a more "real world" project. Take for example the classic counter demo. Try adding these features:

* i18n/l10n: Display labels in different language and correctly format the counter value for your user (1'000 vs 1.000). A user should be able to switch country

* Allow users to register and create their own counters

* Store the counter value in database hosted somewhere

* Store content stuff (title, labels, etc.) in a headless CMS and integrate with it.

* Set up build pipelines for your project

* ...and more :)

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

#32

I think you can even take the smallest web app and make it into a more "real world" project. Take for example the classic counter demo. Try adding these features: * i18n/l10n: Display labels in different language and correctly format the counter value for your user (1'000 vs 1.000). A user should be able to switch country * Allow users to register and create their own counters * Store the counter value in database ho…

* Make this app multi tenant.

* Make this app highly available across geographies under heavy use.

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

#33
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…

As an interviewer I ding people who don’t understand the underlying capabilities. They often matter!

Like if the design depends on modifying two keys atomically, a transaction is required. Some KV stores have that ability, some don’t. Do you need the keys to be in the same shard now? What kind of persistence is required here?

Redis and Memcache are quite different where the rubber meets the road. Gotta know what you’re talking about, don’t handwave over the details.

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

#35
post #24
post #21

I know this isn't really what you asked, but I've administered hundreds of software engineer interviews, and there are two very common mistakes I see when it comes to system design: 1. Not clarifying the problem. The very first thing out of your mouth should be a series of questions that helps you define the requirements more clearly. Identify use cases. Try to understand the scale; questions that start with "how man…

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.

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

#36

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…

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.

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

#37
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 real world you can make load test queries the better.

At the very least you’ll get hands on experience.

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

#38

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…

Not necessarily, the biggest most rapidly growing project I was with only taught me anti-patterns, but I guess that's something you need to learn too ...

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

#39
For what purpose?

Are you a small business owner that preparing for going viral one day? Keep improving your system bit by bit. Maybe add a caching layer today, load balancer tomorrow, a job queue somewhere down the road and scale up your database now and then. And probably YAGNI imo.

If for job hunting, other comments had better suggestion

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

#40
post #27
post #21

I know this isn't really what you asked, but I've administered hundreds of software engineer interviews, and there are two very common mistakes I see when it comes to system design: 1. Not clarifying the problem. The very first thing out of your mouth should be a series of questions that helps you define the requirements more clearly. Identify use cases. Try to understand the scale; questions that start with "how man…

> But when pressed, very few people were able to describe the contents of those messages in any detail. Can you explain why this matters? It’s an architecture interview right? Not an API/Worker/Queue design exercise. It’s not like I don’t expect someone to be eventually able to figure out the contents of the payload, I’d just not expect it to be at the forefront of their mind.

Emails with attachments vs plain text messages. Binary content. Compressed content. Size matters, especially at scale.
Post reply on HN