0

Confidence and Time Management in System Design (Stuck)

Profile picture
Senior-Level Software Engineer at Taro Community2 days ago

Hi, Taro community:

I struggle with system design interviews (senior level).

I've spent a lot of time studying. I've read in-depth ByteByteGo System Design Vol1 and Vol2. I went through most of Gaurav Sen's videos, the "Top ways people fail system design" course, read all the guides in Intervewing.io, and Hello interview. If you ask me how consistent hashing, partitioning, LSM tree, and quorum work, I can show you I know enough for product-based system design interviews.

I've also done some practice. I've done all the guided practice in Hello Interview, did 3 mocks, and 2 real system design interviews recently.

What I've found is I hesitate a lot at each step of the interview. For example

  • For requirement gathering, I'm not sure if I have enough requirements, or asked enough questions, etc
  • For non-functional requirements, I hesitate about how much latency should be, and if I'm missing something, etc
  • For high level, I hesitate if I need to use 1 service or a separate service, or 1 db or separate db, which service is responsible for what, etc.
  • For deep dive, I hesitate if I still need a message queue for a write-heavy system if I already have a distributed no-SQL database. Or if I need a Redis if I already have a relational DB that handles high reads. I like to keep things simple but I'm afraid the interviewer gonna think "he didn't use Redis!" or "he didn't use a message queue!"

Then it affects

  • The interviewer would then perceive I'm not comfortable with designing the system
  • It would look like I'm not familiar with basic system design concepts
  • Time management. I usually spend too much time on high-level design and run out of time for deep dive
  • I don't look confident.

I know in theory that in system design "there is no right answer", but I'm worried about providing some "wrong" answer unknowingly.

I'm not sure what to do next. Technically there's always more to study. For example, I could read DDIA (I've only read summary study notes before). But I don't know if the answer is to study more. It feels like studying more even reinforces the hesitation that maybe I'm not applying things right.

Any advice would be helpful on how to overcome this would be very appreciated!

25
1

Discussion

(1 comment)
  • 1
    Profile picture
    Mentor Coach for SWEs | Former Staff Software engineer
    14 hours ago

    It sounds like you need conversations with Senior+ engineers about practical system design.

    You have covered a lot of standard study material. Where study material typically shines is telling you where technology X is applicable, for example where message queues or NoSQL would be applicable.

    What doesn't cover so well is where X would not be a good fit or the tradeoffs of using X vs Y when there's "no right answer." These practical considerations are hard to cover in educational materials and it's also hard for this coverage to be exhaustive.

    It also sounds like lack of practical experience is at play here, to some extent, for example ambiguity on the appropriate level of separation of concerns in microservices. BTW, this is totally normal because complex, real life system design experience is both hard to gain and the opportunities arise later in career.

    So, I'd encourage you to chat with someone with practical system design experience, be it from your work or outside community.

    Let me know if you have any follow up questions!