DEV Community

Cover image for System Design Resources that are Not ByteByteGo
Vladi Stevanovic
Vladi Stevanovic

Posted on

System Design Resources that are Not ByteByteGo

System design is a core engineering skill and everyone on your team should have some degree of understanding of their system’s architecture.

In addition to that, with the rise in the adoption of AI coding assistants, mastering this skill will safeguard your professional career ensuring that you remain relevant and productive in an evolving technological landscape.

Traditionally, junior developers have been taught to focus primarily on learning coding skills and mastering the fundamentals of their chosen technologies. However, AI assistants, like GitHub Copilot, are significantly accelerating coding tasks—55% of users report coding faster. This acceleration frees up time for developers to delve deeper into system intricacies, thereby gaining expertise in the environments they create and adopting a more holistic approach to software system development.

Inbal Shani, former CPO at GitHub, emphasized this shift in mindset:

Developers need to form a different thinking […] more systems, more architecture. You need to start figuring out how to use the AI tools to help you be successful. It's no longer just the actual code writing, it's really evolving your thinking to see the big picture, the connected experience, and the connected systems.

This mindset, once primarily associated with senior software engineers, is now becoming essential for all developers. The gap between senior and junior developers is narrowing, especially as 92% of developers are already leveraging AI tools.

👉 The time to start learning system design is now. 👈

Problems with the Current System Design Discourse

Unfortunately, the discourse around system design often centers on “how to ace a system design interview”. While it's true that system design is a critical skill for many organizations, particularly given the prevalence of distributed systems, this focus on interview preparation neglects the importance of applying these skills in day-to-day, real-world scenarios.

This hyper-focus on technical interviews is akin to the institution of standardized testing—it has its uses but is inherently limited. It fails to provide a complete picture of the real-world challenges and the creative, adaptive thinking required to effectively apply system design knowledge and skills in practical contexts.

Furthermore, the industry is currently experiencing a shift in the role and significance of Software Architects. We're recognizing that system and software design are not confined to specific roles; every engineer should possess some level of proficiency in these areas. Having system design experience and considering architectural requirements during coding makes you a better engineer and leads to superior products.

However, many engineers and organizations have yet to embrace this trend, maintaining a strict differentiation between engineers and various types of Software Architects.

Lastly, the most significant issue: system design is often misconceived as merely diagramming, producing specific documents, or adhering to codified frameworks. In reality, system design is an ongoing process that outlines the high-level conceptual structure of a complex system (the system architecture) and defines its major components and interactions. While it can result in outputs such as system diagrams, Architectural Design Records, or the use of specific tools and frameworks, it encompasses how a team builds software and not just the tools that they use to help throughout the process.

Resources you usually see

When researching system design, the internet often surfaces two primary resources:

I want to emphasize that both are extremely helpful and I highly recommend them. In fact, we are subcribers to - and avid fans of - the ByteByteGo Newsletter and its authors Alex Xu and Sahn Lam. Conveying complex concepts in a fun and visual way is an art and reading their newsletter is always a pleasure.

Likewise, it’s fascinating to learn how companies like Netflix, Google, Stripe, or Spotify design their systems and discover the clever solutions they’ve implemented. However, chances are you’re not working on a system as mammoth as theirs and their approaches are often tailored to these specific use cases.

Indeed, there is no single right way to architect a system. The design depends on your business requirements, development stage, and the trade-offs you’re willing to make.

Underestimated System Design Newsletters

In addition to ByteByteGo and various corporate blogs, I highly recommend checking these resources. They are not mentioned nearly as often, but they can teach you a lot about system design:

📌 NB. These are just general categories that helped me categorize them, so there is some overlap.

Fundamentals of System Design

Big Tech System Design Examples & Recaps

Broader Scope Interesting Newsletters

System Design Books

System design books are also great starting points for deepening your understanding of architectural principles and best practices. Here are some of the most popular ones:

Helpful GitHub Repos

I also recommend these GitHub repositories for practical examples, tools, and resources to enhance your system design skills and knowledge.


I hope you found this helpful and I look forward to more recommendations in the comments! 💜

Top comments (3)

Collapse
 
abhijeetkb06 profile image
Abhijeet Kumar Behera

Awesome compilation. Thank you for sharing.

Collapse
 
vladi-stevanovic profile image
Vladi Stevanovic

Thank you!

Collapse
 
aliadelnour profile image
Ali Nour Al Din

Great post .. Thank you for your effort 💕