Lesson Description
The "Systems Thinking" Lesson is part of the full, Backend System Design course featured in this preview video. Here's what you'd learn in this lesson:
Jem introduces systems thinking, explaining how understanding component interactions helps with seeing the big picture. He stresses planning, designing for flexibility, and using diagramming to communicate and collaborate effectively.
Transcript from the "Systems Thinking" Lesson
[00:00:00]
>> Jem Young: So, what we're building today is how to build system thinking. So system thinking is about stepping back. It's about seeing the forest and the trees at the same time and saying, what's the most important thing right now? Is it the forest or is it the individual components? And the answer is, you know, it depends on the situation, but it's about understanding how everything works together, seeing the big picture and not just the individual parts of the system.
[00:00:29]
And we start with going by individual parts, but then we build it up so that it's just rote memory at that point, you know what a load balancer is, you know what a web server is, you know what different types of databases are. And when you step back after you're looking at all the parts and you see how they all connect, then you're building a system, and that's what system thinking is all about. And system thinking isn't, it's not just for interviews.
[00:00:56]
You know, everything applies system thinking. If you want to build a better product, say your product manager comes to you as an engineer and says, hey, I want to build this feature, it's really cool. And you know, when you were starting off in your earlier career, what did you say to that person? Yeah, you're like, no problem, absolutely. And then you start building it and you're like, oh, this is taking longer, and then now the PM's sweating you, because you said it would take you 2 weeks, and now it's a month later.
[00:01:28]
Why is that? Why is that? Because you didn't plan it out in advance. You said, oh yeah, that looks easy on paper, and that's a lot of system design is it looks easy on paper. Let's design Netflix. Looks easy on paper, right? You know, let's build a chat app, looks easy on paper. Let's build a to-do app, one of the simplest apps, looks easy on paper, and you know, one of the easier ones. But nothing's that simple.
[00:01:57]
What are the tradeoffs you're making here? In a good system design, again, planning upfront means you're preventing surprises. And that's how you know you built a really good system is that it's flexible. That same PM comes to you and now you're a little more wisened. They say, hey, I want to add this feature. If you architect it well, it's easy, slots right in. That's how you know you built a really good system is that it's really capable, very expandable.
[00:02:22]
And one last thing, and this is something I'm not good at, but I have people on my team that are good at, is diagramming. Being able to represent a flow visually helps just translate things really quickly. It doesn't matter if you're speaking different languages, when it's all boxes and arrows, everybody speaks that. And if you have the ability to do that, that is an amazing skill as an engineer. You can talk to anybody, PMs, CEOs, SREs, back-end, front-end, they all can look at a diagram and be like, oh, I know what that means.
Learn Straight from the Experts Who Shape the Modern Web
- 250+In-depth Courses
- Industry Leading Experts
- 24Learning Paths
- Live Interactive Workshops