Brain  Crist

Brain Crist

1600304400

My System Design Interview Checklist in 8 Simple Steps

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!

1. User Interface

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

What is GEEK

Buddha Community

My System Design Interview Checklist in 8 Simple Steps
Brain  Crist

Brain Crist

1600304400

My System Design Interview Checklist in 8 Simple Steps

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!

1. User Interface

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

Mikel  Okuneva

Mikel Okuneva

1597179600

System Design Interview Tips

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 for post

Image from Quora

Pre-Interview Preparation

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.”

Explore The Restraints

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:

  • How many users we are talking about?
  • How many tweets sent per sec?
  • What are the latency requirements?
  • How are we going to store the data?
  • Clients are mobile or desktop?
  • Clients are Push or Pull model?
  • How many data centers we are talking about?

In reality, the quality of these exploring questions reflects the candidate’s experience level.

Complete Your Solution

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:

  • Al the components’ key responsibility(E2E)
  • Key data schemas
  • Key algorithms of processing data, like load balancing algorithm
  • How the system monitor and handle errors/exceptions

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.

Optimize

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:

  • The QPS is very high
  • Read is 10x than write
  • Prioritize latency over accuracy
  • Ensure data security

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.

Ending

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

Brain  Crist

Brain Crist

1595759565

BEING HONEST an essential UX interview tip

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

The complete guide to crack the System Design interview

The article consists of 3 parts — Preparation, Template, and Design questions with links.

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.

Preparation

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.

Image for post

(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

  1. What are the different architectural pieces that can be used?
  2. How do these pieces work with each other?
  3. How can we best utilize these pieces: what are the right tradeoffs?

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


System design template for interviews

1. Requirements

Functional

  • What all the system has to offer the user.

example: A user can follow another user, tweet, like, share a tweet.

Non-functional

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.

  • High availability — Most of the systems require high availability except banking systems.
  • Consistency — The systems with high availability will have eventual consistency.
  • **Reliability **— No data loss
  • Latency — Response time of an action

2. Storage estimation

  1. Based on the data modality: A rough estimate of how much data must be stored — To know what type of database can be used and file storage for storing images/videos.
  2. Number of requests to the service — To know how to scale the services. A service that is read-heavy can be scaled to handle high traffic of requests.
  3. Read Write ratio — Determines whether the system is read-heavy or not.

3. Database design

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

Image for post

Source: digitalconnectmag.com

4. High-level system design

Step 1:

Basic design:

  1. Client
  2. Application server
  3. Database

Image for post

Step 2:

Extending the design — Creating specific components

  1. **Isolating the services **— for easier scaling and traffic control

Image for post

2. Replicate the services and databases- mention about single point of failure — Video

3. Load balancer — Application side & Database side if needed — VideoBlog

Image for post

4. Message Queues — Tight coupling to loose coupling / Synchronous to Asynchronous communication — Read Message queuesBenefits of MQ

5. Data Partitioning— Location-based, UserID based — VideoBlog

6. Content Delivery network — To avoid round trips to the main server (Improves latency). VideoInterviewQs

7. **Cache **— Distributed cache and client-side cache (For faster read access) — VideoBlogPrimer

#software-development #distributed-systems #system-design-interview #interview

Wilford  Pagac

Wilford Pagac

1602759600

Glossary: Design Systems Defined for Developers and Designers

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.

📖 Glossary

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.

Foundation/Essentials/Principles

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. animationcolorstypography) or define more abstract principles such as brand personality or writing style.

Components

Example of Kor UI button component

Perhaps the most used term, components are individual units (such as buttonsinputstabs) that have defined appearances and interaction paradigms. Components can have different variations and be customized through APIs (Application Programming Interfaces).

Patterns

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 formsnavigation 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