1600304400
That dreaded system design interview. I remember the first system design question I was asked. “Design WhatsApp”, he said. I didn’t know where to start! I was a fresher. Data structures and algorithms were the only things I knew. I am sure you can guess how that interview went. Then after enough research, I made myself a checklist of components, of sorts, to navigate me through my next system design interviews. And I sh*t you not, it works!
So I’ll stop with the chit-chat and get right into it!
First things first, how are the users interacting with your system? Is it via a mobile app or on a laptop or a smart TV? This gives us an indication of what kinds of limitations and hidden requirements we are dealing with. For example, in the case of a mobile user, we might have to handle fluctuating networks, for a smart TV and laptop users kind of a scenario we might have to support different file formats and different resolutions and aspect ratios.
#database #distributed-systems #system-design #software-engineering-interview #interview-tips #interview-prep #devops #software-architecture
1600304400
That dreaded system design interview. I remember the first system design question I was asked. “Design WhatsApp”, he said. I didn’t know where to start! I was a fresher. Data structures and algorithms were the only things I knew. I am sure you can guess how that interview went. Then after enough research, I made myself a checklist of components, of sorts, to navigate me through my next system design interviews. And I sh*t you not, it works!
So I’ll stop with the chit-chat and get right into it!
First things first, how are the users interacting with your system? Is it via a mobile app or on a laptop or a smart TV? This gives us an indication of what kinds of limitations and hidden requirements we are dealing with. For example, in the case of a mobile user, we might have to handle fluctuating networks, for a smart TV and laptop users kind of a scenario we might have to support different file formats and different resolutions and aspect ratios.
#database #distributed-systems #system-design #software-engineering-interview #interview-tips #interview-prep #devops #software-architecture
1597179600
The system design interview provides the key signals that differentiate a tech lead from programmers. Here’s some tips may help you ace it.
Image from Quora
When preparing, thinking about how to design a system that top-tier tech companies have(Google, Twitter, Amazon, Uber, etc).
Proactively picking some classic questions, like Twitter Feeds, Snapchat messaging, Dropbox file system, to exercise. Over-preparing and ensure you are familiar with these major scenarios.
“Drive the discussion from the beginning.”
After the interviewer throwing out the question, like “Design a Load Balancer for Twitter”.
Do NOT rush to the solution.
The very first thing you need to do is to get clarity about the system’s requirements and constraints:
In reality, the quality of these exploring questions reflects the candidate’s experience level.
Now that you have the clarity of the system’s requirements, continue to drive the discussion.
The next step is to write down the first version of a complete solution.
On a high level, a reasonable solution should include all the components that receive, process, and store the data. Specifically, we need to write down:
Then validate this solution with the interviewer, ensure the it satisfy the key business requirements. Sometimes it also involves a bit calculation to persuade the interviewer.
After having the 1st version solution nailed, the interview will usually go into the “Deep Dive” section. The interviewer will come up with a special requirement, and ask the candidate to adjust their design to ensure its system survive in this scenario.
For instances:
There’s no one-fits-all answer at this stage. The interviewer really needs to leverage his/her experience and resolve it.
However, there’s one thing each candidate should keep in mind.
“Think in trade-offs”.
No matter what solution you propose, always write down its pros and cons. What makes it work and what to sacrifice to meet this goal. That’s the key signal of an experienced engineer.
Unlike the coding interview, there’re hundreds of ways a system design interview could go. But no matter what scenarios you’re in, I wish tips mentioned above could help you navigate to the ideal destination.
#software-development #system-design-project #system-design-interview #interview
1595759565
In this article, I share what I think is one of the best tips when it comes to design interviews.
As a junior UX designer, I’ve been asked a few times by my peers: what is the most essential UX interview tip I have?
Well, to this question I have a very simple answer,** just be honest**… well, this might sound like a no brainer, but it seems to me that not many junior designers know about it or want to apply it.
I had the chance to speak with a few designers and I discovered that some tend towards being a little bit insincere when going through interviews for design positions. It’s normal to be intimidated when going through an interview process and you might want to act as if you have more experience than you have to secure the job.
Well, I’m here to suggest that that’s not the right approach. I fact, recruiters know in advance that as a junior designer you won’t have many years worth of experience so instead of being insincere it’s better to show up with an open mindset and being honest.
A mindset of learning and improving is always welcomed and valued in today’s world. Simple answers like “I might not know X because I’ve haven’t had the chance to get at it but I can learn it as I’m an avid Lerner” go a long way with recruiters.
Put yourself on your recruiter’s shoes, would you rather employ someone “that answers to 90% of the requirements’’ but doesn’t show a growth mindset, or would you employ someone “that answers to 70% of the requirements’’ but shows it’s the thirst for learning and improving?
That’s not to say that you’ll show up with no qualifications at all. You still have to have a certain level of expertise. “Don’t be the guy with 30hrs of experience using Sketch and 1hr of prototyping experience calling himself a UX designer”.
Some skills can be rapidly learned with just a little bit of discipline and will so don’t be afraid to answer with a no if you haven’t had experience with certain techniques due to lack of opportunity of doing so, for example. It’s always easier to learn something new than being perceived as untrustworthy because you said you were qualified to do something but you finally weren’t.
keep in mind that being sincere is always the way… not just during job interviews but in life. Anytime you’re being insincere to achieve something, most probably, the lie will end catching you back and having the opposite effect you wanted it to have.
Anyway, I’ll stop with my “life lessons” and I’ll wish you a very successful interview.
Hopefully, this little advice does help you.
#design-interview #job-interview #system-design-interview #job-interview-tips #ux-interview
1595214000
For my system design interview with Amazon, I watched video lectures, read blog posts, and discussed with my friends on various approaches to design a system. After my extensive preparation, I came up with a template that I followed during my interview and wanted to share and hoping it would help anyone preparing for a system design interview.
Firstly it is important to learn the fundamental concepts before designing a system. Knowing all the concepts helps you make the right decisions in your design.
This curated YouTube playlist covers all the required concepts to understand the steps to designing a system.
(Optional) For more comprehensive concepts, refer to the below Github repo.
After learning all the fundamental concepts, it is now time for designing. First of all, you have to think of a use case (example: Instagram) and try designing all the components and think of how you can make your system fault-tolerant and robust. Brainstorm on how the bottlenecks can be resolved. This entire process helps you apply the concepts you learned in designing the system. If you face any difficulties with the steps to design a system then refer to the template provided below.
Having a hands-on experience with a system helps you better understand what a system(example: facebook.com) can offer to the user.
My advice to you would be to use the system and explore all the features
Questions to ask yourself
Tip: The more questions you ask your interviewer the more inputs you’ll receive from the interviewer and better your design will be.
Key points for the interview:
Don’t use any buzz words (tech stack), Don’t get into details prematurely, Justify your design decisions
example: A user can follow another user, tweet, like, share a tweet.
Based on the system you have to design, the following concepts must be considered — for a banking system, consistency is the most important thing to consider as there cannot be discrepancies in data.
After discussing the data and the actions that a user can perform to interact with the system. The next step would be to talk about which type of DB will you use and why. For detailed differences SQL Vs NoSQL — Read
Source: digitalconnectmag.com
Step 1:
Basic design:
Step 2:
Extending the design — Creating specific components
2. Replicate the services and databases- mention about single point of failure — Video
3. Load balancer — Application side & Database side if needed — Video, Blog
4. Message Queues — Tight coupling to loose coupling / Synchronous to Asynchronous communication — Read Message queues, Benefits of MQ
5. Data Partitioning— Location-based, UserID based — Video, Blog
6. Content Delivery network — To avoid round trips to the main server (Improves latency). Video, InterviewQs
7. **Cache **— Distributed cache and client-side cache (For faster read access) — Video, Blog, Primer
#software-development #distributed-systems #system-design-interview #interview
1602759600
Design systems are interdisciplinary by nature. They are built and consumed by designers and developers, therefore it is important for common terminologies to exist to support the communication between these two disciplines and other related actors.
Note: while some of the concepts are explained in a way that is more related to the context of web development, most of them are applicable to other contexts as well.
In this post we will present some key concepts from design and development, explain their meaning in the context of design systems and point to any ambiguity that may exist.
Example of Material Design foundations
Every design system is built on top of a set of fundamental rules which are shared across components or other parts. These rules can relate to visual design (e.g. animation, colors, typography) or define more abstract principles such as brand personality or writing style.
Example of Kor UI button component
Perhaps the most used term, components are individual units (such as buttons, inputs, tabs) that have defined appearances and interaction paradigms. Components can have different variations and be customized through APIs (Application Programming Interfaces).
Example of Carbon Design login pattern
Patterns define how different components can be combined in a certain way to serve specific user goals that are often repeated across screens or applications. For example, input fields, icons and buttons can be combined in a certain way to serve the goal of signing into an application. Examples of patterns are forms, navigation and onboarding.
Note: UX patterns should not be mistaken with ‘design patterns’ in software engineering, which are also common ways of solving problems but specifically related to the context of engineering.
#ux #design #design-systems #web-development #frontend #software-development #design-systems-glossary #latest-tech-stories