Highest Rated Comments


arslan_ah35 karma

System design is undoubtedly an essential skill for software engineers. As engineers gain experience, their design skills evolve and mature. Learning from various distributed systems, whitepapers, and other resources is quite beneficial. I highly recommend reading engineering blogs to stay updated and continuously expand your knowledge.

Coding interviews were used to test problem solving skills. But we have gone too far there. There are alternative approaches that provide a more comprehensive evaluation of an engineer's skills. Some examples include code reviews, bug fixing, and feature extensions. These methods offer a better picture of an engineer's ability to work with existing codebases, collaborate effectively with others, and apply critical thinking to software design.

I hope this is helpful!

arslan_ah7 karma

This is one of the main reasons coding interviews are criticized. If it is up to me, I will ban asking hard questions.

As an interview, I can easily get many signals from a medium difficulty question. Once a candidate is done with a medium question, I always have follow-up questions that can be considered hard or a little more challenging. For example, asking to make the solution thread safe or multi-threaded/parallel. I would recommend this to every interviewer.

arslan_ah5 karma

Always look for patterns, as this will make it easier to apply your learnings to new problems.

Don't memorize.

For example, understanding the sliding window approach will better equip you to tackle a variety of coding problems.

Similarly, if you know bloom filters or Merkle trees, you are better equipped to solve design problems.

arslan_ah3 karma

You can read about architecture of famous systems. Read different blogs as I mentioned above.

The following two courses are targeted for senior engineers for enhancing their system design skills:

  1. Grokking the Advanced System Design Interview - https://www.designgurus.io/course/grokking-the-advanced-system-design-interview
  2. Grokking Microservices Design Patterns - https://www.designgurus.io/course/grokking-microservices-design-patterns