Tech IndustryOct 30, 2019
Intelndky

system design

i have never done system design, because I dont work in a distributed systems environment. all interviews expect you to be able to design systems, and i am finding it difficult to square the circle. i have read all kinds of blogs and the educative.io material but i still dont get a good feel about the topic. any ideas on how i can do a couple of projects that will really test my theoretical understanding and help me get better at it? thanks

Interactive Computer Science Tutorials | Educative.io
Educative.io: Interactive Courses for Software Developers
Add a comment
Bose haITried Oct 30, 2019

What do you not understand? Any areas in particular? If you cant design a whole end to end architecture you just need to spend more time and practice stuff

Intel ndky OP Oct 30, 2019

Thanks for the comment. Since there are no ‘right answers’, I have trouble determining if I have made the right choices. As you know there is no leetcode for system design where you can test your solutions....

New
xnjo70 Oct 30, 2019

It is not about right choices. You are supposed to think about trade offs and ask details about the system in order to navigate them.

NVIDIA updown77 Oct 30, 2019

I feel you. I was in the same position as you when I started. I have been getting better by giving interviews at companies I am not too keen to join. And also practicing with friends on an actual white board. But I am following this and open to other recommendations here as well.

Nutanix numero Oct 30, 2019

You cant understand system design just by going over educative material. There are two parts of design : concepts and actual design. Understand concepts of caching indexing searching partitioning data pipeline etc. for this use your educative material or Wikipedia or designing data intensive app. Now coming to design read engineering blogs of linkedin, uber, airbnb and see how they have solved problems they faced. You would understand for what optimization what design is good. Design is done for design goals so get them correct first wheather it is correctness performance latency etc and then all choices should align with design goals

Amazon desiboyz Oct 30, 2019

I know who you are buddy. Nice answer

VMware lftl00 Oct 30, 2019

First and foremost you need a solid understanding of distributed systems. Find a course online or read lots of papers.

Cognizant CSK27 Oct 30, 2019

Can you please recommend few?

Snapchat bFCN68 Oct 30, 2019

BigTable, MapReduce, Spark, Kafka, Memcache, the list can go on and on. Good idea is to read DDIA to identify gaps and then work on the gaps in detail. If it feels overwhelming, just learn some and then come back to it later. At some point you'll realize that you know a lot and you'll kick ass in SD rounds. Exposure to distributed systems helps but doesn't solve the problem completely as most engineers are only exposed to the tip of the iceberg anyways.

Riverbed Technology ydhnnana Oct 30, 2019

It's not too tough. Only a few topics. Read about following topics and visit the pages of some open source software out there to understand motivation, use cases and how they implement some of the distributed systems concepts. Caching NoSQL DBs - Object store, Column oriented, Document store, Key-Value store Partitioning/Sharding Load Balancing CAP theorem Replication Messaging Queues Servers vs Workers Time series DB Geolocation For most system design problems, you can put in a Load balancer, Application servers, messaging queues, Worker processes, caching DB and main DB. Draw a few blocks representing each. To get fancier, identify major services of your app. eg. For Aibnb, it'll be a property owners service, listings service, reservations service, billing service etc. Draw blocks for each service. Go from there.

eBay tbgv Oct 30, 2019

With this strategy, were you able to crack FAANG?