Lesson Description
The "Everything is a System" 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 emphasizes the importance of recognizing the systems around us, using home remodeling and car components to show how uncovering hidden complexities can improve understanding and effectiveness.
Transcript from the "Everything is a System" Lesson
[00:00:00]
>> Jem Young: The sooner you recognize the system that you're in, the more effective you'll be. And this is everything. This is real life too. This isn't just software engineering. This is the world around you. You are part of a system. We're all part of a system. We use systems every day. This kind of sunk home with me and something I did a couple of years ago. I did some home remodeling. Anybody ever done home remodeling, remodel the kitchen or bathroom?
[00:00:28]
Yeah. Was it easier or harder than you thought? Harder, harder, harder than building a house. Why was it harder? Everything took longer than, I'll just run to Home Depot and get this thing. And it's like, no, you don't need just that thing. No, none of my walls were square. You uncover problems in the existing system, and depending on how old your house was, it's a lot of assumptions layered in there.
[00:00:57]
You open up a panel and you're like, who did this wiring? This is scary. But it's someone who made a tradeoff at some point who's like, I'm going to, this is fine. I'm going to move on. And now you have to pay for it. I didn't really realize how complicated remodeling was until I had to design a bathroom, which, again, it looks simple, just like all systems, until you get into it. And I realized there's like 50 parts to a bathroom: the faucets, the sink, the tile, the grout, the bathtub, the showerhead, all these things that I didn't appreciate until I actually got in there and had to buy all these parts, frequent trips to Home Depot.
[00:01:35]
And that shouldn't, I won't say that's when I realized system design. I'm not going to repaint the past, but it's one of my favorite examples on when you dig into the details, things are always more complicated than it looks, and we take a lot of that for granted. So everything's a system. I'll use a car. I love cars. I like driving at the track. I like anything to do with cars. What are the components of a car?
[00:02:07]
No wrong answers here. Just throw them out. Tires, engine, chassis, windows, brakes, transmission. Keep it going. Keep it going. Bumper, trunk, hood, mirrors, seats. Did we say brakes? Brakes, steering, suspension. Nice, you all are pretty good at cars. Yeah, and we don't think about that when we get in the car, we hit the button and we go. But cars are incredibly complicated. If you ever watch any racing and they crash and then you see all the parts everywhere, and it's just like, oh, that was all hiding behind the bumper.
[00:02:52]
I like the car example because you can have the same parts. If we're describing a car as a system, you have the wheels, the brakes, the engine or the motor, the tires, the seats, and all that. But it's the details that determine, is this a Prius getting you to school, dropping your kids off, or is this a race car? But on paper, they look exactly the same. And that's why you have to understand the components, but the nuances of those components too, and then how they all work together.
[00:03:31]
Anyways, I have more on cars, but I don't want to bore you. And I have some news. You are part of a system too. You're like, no, Jem, I am this special superpowered engineer who loves K-pop demon hunters, and I don't know, bespoke pickling in my attic. And I love coding, I like nerding out on compilers. I'm very special. Yes, you are, you are absolutely special. However, you have a job, generally.
[00:04:10]
And what is the job to you as part of a system? You are a system. You're like, no, I'm not. That's insulting to me. I'm a human being. Well, no, you are at the individual level. When you have 1,000 engineers, you're part of the system. Your input is tasks, and your output is solutions. Simple. No, I didn't say your output is code. Why did I say that? Sometimes you're not writing code to implement a solution.
[00:04:43]
Yeah, exactly. It's kind of what we're doing today. We're not writing code, but we're still creating solutions. I like this slide. I know it's a little over the top, but the sooner you recognize your role in the system and the parts around you, what does my manager do? What does their manager do? What do the people on my team do? You understand how all these parts interconnect, the more effective you will be.
[00:05:09]
I have this as an aside as a manager, but you know, I have growth conversations with everybody on my team. Hey, what do you want to do? What do you want to be challenged by? What's next for you in your career? What's your five-year plan? You know, we have these conversations every quarter. And I recognize something that makes people more effective, the most effective people I know and grow the fastest are the people that recognize what I do, and what their role is, what our team does, and then what the other teams do and what the other teams do.
[00:05:40]
And those people that make those connections do far better than those who say, oh, my job is solving problems or writing code. Yeah. But how do you move up if you don't realize where you are in the system? Again, you have to see the forest and the trees. You can't just focus on yourself. That was just the manager side on growth, but you know, it all interconnects. So I keep saying system. What is the system?
[00:06:15]
It's just a collection of components that work together to solve a problem. A system or a component should have an input, and it should have an output. More importantly, it has the boundaries. Why is it important to have boundaries? Options are endless. I was going to say, like, just make sure you can constrain the scope and make sure you're not just constantly adding scope creep. Yeah, scope, preventing scope creep.
[00:06:48]
Yeah, Kayla. Systems are endless, like you could spend your life if you don't have bounds. Yes, yes, scope creep. Systems are endless. I love that. Systems are endless. You can go as deep as you want. Going back to the car example, as I like to do, we talked about, I don't know, suspension. Pretty simple, you know, shocks, straps, springs. But there are thousands of different types of suspension for different reasons, and you can optimize for going off-road, driving at the track, everyday driving, and you can nerd out on the individual pistons, the fluids, how things move within the shock.
[00:07:26]
That's why we have to have boundaries. What is the thing we're actually trying to talk about here? Not just the problem, what is the scope? It's kind of like your backyard. You fence it off, but you still get to decide what's inside that. But as long as you have the understanding about, I don't need to go outside of this, this is not important and this is important, it really allows you to focus down.
[00:07:47]
Otherwise, you get lost in the details. And this is something I've done in a system design interview, just gone way too deep on an area that it turns out was not important at all. So just finding out these boundaries is just as important as knowing the inputs and outputs.
Learn Straight from the Experts Who Shape the Modern Web
- 250+In-depth Courses
- Industry Leading Experts
- 24Learning Paths
- Live Interactive Workshops