Mastering System Design Interviews with the RESHADED Approach

Photo by UX Store on Unsplash


Introduction

System design interviews are one the most important interview rounds for almost all engineering job interviews at software companies. System Design interviews can be a bit tricky because there is no one right answer! 

Even the interviewer knows that, in fact, they are not even looking for a perfect solution! 

Yes, you heard it right! All they are looking for is the approach you take and the factors you consider while designing the system.

RESHADED - System Design Cheatsheet

RESHADED is an easy mental framework that can help you navigate system design interviews effectively. RESHADED is an easy-to-remember acronym which you can remember and apply as you solve System Design Problems:

  • R - Requirements:
    • Define functional requirements: Focus on Core Features and Services needed.
    • Identify non-functional requirements: Performance, scalability, reliability, security, and maintainability.
    • Scope the problem: Establish boundaries and constraints. This helps you stick to the timelines of the interview.
    • E - Estimation:
      • Approximate user base: Estimate the expected number of users or requests.
      • Calculate storage needs: Determine anticipated data volume.
      • Project bandwidth: Assess required network capacity.
      • S - System Design:
        • Choose an architectural style: Select suitable architecture (e.g., monolithic, microservices, event-driven) depending on the use case. 
        • Avoid over-engineering by using Microservices or under-engineer using monolith. Strike a clear balance depending on the size, scale and nature of the problem.
        • Identify components: Decompose the system into logical, modular components, again don't over-engineer and break down too small components.
        • Define interactions: Establish communication patterns and data flows between components, and explain how they interact.
        • H - High-level Design:
          • Sketch a diagram: Visualize system structure and component relationships. Use tools like draw.io if the interviewer does not give any tools.
          • Outline the data flow: Describe how data moves through the system.
          • Highlight key components: Focus on critical components and their interactions.
          • A - Algorithms and Data Structures:
            • Select appropriate algorithms: Choose efficient algorithms for core functionalities.
            • Choose suitable data structures: Optimize storage and access patterns. Leverage caching at different levels where relevant.
            • Consider trade-offs: Evaluate performance, memory usage, and complexity.
            • D - Database Design:
              • Choose database type: Select appropriate technology (e.g., relational, NoSQL).
              • Schema design: Structure tables and relationships efficiently. Keep only essential attributes and models.
              • Consider scalability: Plan for future growth and data volume increases. Mention a bit about sharding for scaling and if asked to elaborate then do so.
              • E - Edge Cases:
                • Identify potential issues: Anticipate unusual scenarios and error conditions. Don't overthink, identify 3-4 issues and move forward.
                • Design solutions: Incorporate mechanisms to handle edge cases gracefully, i.e., "Fail-Safe" design.
                • D - Deployment and Scaling:
                  • Choose deployment model: Select distribution (e.g., cloud-based, on-premises) considering infrastructure and cost.
                  • Plan for scaling: Design strategies for increasing load and maintaining performance. Use auto-scalers, and mention possible parameters which can be on the watchlist for scaling.


                  Conclusion

                  • RESHADED offers a very easy-to-remember checklist and helps you approach System Design interviews in a structured way. 
                  • This helps you avoid missing out on important aspects to consider in the interview.
                  • Although this looks easy, I would encourage you to practice with RESHADED so that you are familiar with it and you are seasoned with this approach.
                  • This has worked wonders for me and I hope this helps many of you in your System Design Interviews too.



                  Connect with me on LinkedIn for further insights and updates! You can find me on my LinkedIn Profile. Looking forward to connecting!

                  Kickstart your cloud computing journey with our free guide and Subscribe to our weekly newsletter for exclusive insights and updates