Mentally walk through your house and count the sinks you have. In today's episode we're talking about patterns and rules that we can use to generate an output. How can we take advantage of these patterns as developers?
If you have questions about today's episode, want to start a conversation about today's topic or just want to let us know if you found this episode valuable I encourage you to join the conversation or start your own on our community platform Spectrum.chat/specfm/developer-tea
If you're enjoying the show and want to support the content head over to iTunes and leave a review! It helps other developers discover the show and keep us focused on what matters to you.
This is a daily challenge designed help you become more self-aware and be a better developer so you can have a positive impact on the people around you. Check it out and give it a try at https://www.teabreakchallenge.com/.
Our sponsor GitPrime published a free book - 20 Patterns to Watch for Engineering Teams - based data from thousands of enterprise engineering teams. It’s an excellent field guide to help debug your development with data.
Transcript (Generated by OpenAI Whisper)
I want to start today's episode with kind of a strange question. If you live in an apartment or in a house, I want you to immediately, without thinking very deeply about it, tell me how many sinks are in your house. It's not something that you have top of mind. It's not something that you've memorized. But interestingly enough, you probably know the answer. You may not know it in the form of a number, but you can access it. You have the information necessary to access this answer. Then I can prove it to you. My name is Jonathan Cutrell and you're listening to Developer Tea. My goal on this show is to help driven developers find clarity, perspective, and purpose in their careers. So the answer to this problem is probably not all that surprising. Instead of thinking about the problem at a surface level, I want you to mentally walk through each of the rooms in your house or your apartment or maybe another building that has enough sinks that the answer wasn't immediately available to your brain. So mentally walk through your house and count the sinks as you go. Make sure you don't miss the rooms, but that should be easy to do because you probably have a pretty good starting place. For example, I would start in my garage and then you can walk through and remember each of the sinks that are in your house because you can remember the rooms that are in your house. So what's going on here? What exactly is happening that we have this information in one form, but we don't necessarily have it in another form? It's kind of like having the memoized version of this number. We haven't cashed that number in our minds, but we do have the information available. Well, there's a couple of things that are immediately obvious. You don't really need to know this number. It's not something that comes up very often. It's not something that maybe you've ever even thought about before. And so this kind of information is actually a little bit different than what you do know, which is more about kind of place, the structure, the flow of whatever that building is. And so on the one hand, you have the information that you can generate a number from. And on the other hand, kind of the psychology of the way that humans learn. I'm going to ask you another question that kind of points out this concept. If I were to ask you, what is the number after 3,473,562, you would have the answer. Now this is not because you've memorized every number all the way up to 3,473,562. It's because there is a pattern. There are rules. There's a structure. A way for you to generate a new kind of output. And so I want to talk to you about how this kind of fundamental structure, the way that we learn through patterns rather than memorizing, how can we take advantage of this as developers? But first I want to talk about today's sponsor, Git Prime. Great managers, specifically great engineering managers, are good at debugging. And it's not just debugging code that good engineering managers are talented at. They also know how to debug situations, interpersonal problems, and team structures. And speaking of patterns, the way that these engineering managers do this is largely whether they know it or not by recognizing patterns. And Git Prime has written a book that they want to share with you and it's totally free by the way, that lays out 20 of these patterns. Now I've held the book in my hands and I've read through it. You can do this in an hour and it's not meant to be something that you just read through and then never look at again. This is a great reference to return to over and over and compare. Compare some of the situations that you're seeing on your team, maybe that you're seeing in other teams, and identify doing this kind of pattern matching, identify if you fall in one of these 20 patterns. And it gives you ways of dealing with those situations as well, those particular patterns that are emerging on your team. Go and check it out, head over to GitPrime.com slash 20 patterns. That's Git Prime, that's gitprime.com slash 20 patterns. Thanks again to Git Prime for sponsoring today's episode. So how can we apply this idea of learning from patterns to our work as developers? Well, first let's start at the kind of the micro level. If you are a new developer especially, then you want to kind of focus in on this point. As you are learning a language for example, it's important that you learn it through the lens of patterns, and typically patterns are used to solve common problems. There's things that are going to come up over and over again, and often they are not necessarily specific problems, but they are kind of classes of problems. This is why we learn things like algorithms. Algorithms provide us a tool set, a series of patterns that we can use, and once we learn how to pattern match, in other words identify what things that we know, what patterns that we know that can solve particular classes of problems, then we can come to a solution much faster. And it's not about knowing a bunch of algorithms in detail. This is more about knowing what are the kind of common sets, common techniques together, not individual techniques, but what are the kind of bundles of techniques that are used to solve specific types of problems. And there are different kinds of patterns, different levels of depth that you can think about for patterns. For example, you may learn about MVC or MVVM or one of the many other kind of application level patterns, or you can learn about much lower level patterns like four loops. And hopefully you can identify from episodes that we've done more recently, for example, the episode with Gabriel Weinberg on his new book, Super Thinking, all of those mental models we were discussing, all of these patterns are types of mental models. But it goes beyond just learning patterns in code. You can also learn how patterns work with teams. You can learn how patterns work with your own behaviors. And you can learn to adapt to situations based on those patterns. And so as you find yourself falling into particular habits, as an example, then you may look back in your life and find ways that you broke habits before and pattern match against those kinds of interventions for yourself. Or maybe you want to create a new habit. But one way to do that is to look at ways that you've created habits before and try to pattern match against whatever procedure you used, then. Here's the good news. Humans are kind of naturally good at pattern matching. And the way that we know this is that we emulate what we see other people who are successful doing. We try to kind of identify and shape our behaviors after people that we see as kind of leaders of the group. This is kind of an instinctive thing that we do. When we see someone who is thriving, we want to thrive as well. And so we've kind of adapted. We've kind of evolved to change our behaviors to be more like those people. So as you learn more about your career, as you learn more about whatever tools you're using, keep in mind that if you learn through the lens of patterns, patterns being kind of multiple things together, small systems that are used in given scenarios. If you can learn through the lens of patterns, then you're much more likely to kind of learn at an abstract and accelerated level. Of course, you can absolutely learn JavaScript, for example. You can learn the syntax of JavaScript, the syntax rules, but you may not become functional with those syntax rules until you understand the patterns and how to apply the syntax in the frame of those patterns. And keep in mind that patterns are not going to always provide perfect results. Just like mental models, a pattern is simply a rough blueprint. It's something that you're going to have to experiment with. You can mess with the variables. You can adjust the system and perhaps most importantly, combining patterns can provide useful results. Thank you so much for listening to today's episode. I hope that you can start seeing all of these patterns emerging in your work and in the tools that you use and that you can use that information. You can use that lens as a way of understanding more abstractly and therefore kind of accelerating your progress. Thank you so much for listening. Thank you again to today's sponsor, Get Prime, speaking of patterns. They have a book with 20 patterns that you should know about for engineering teams. Go and check it out. Get Prime, that's git. E prime, dot com slash 20 patterns, two zero patterns. Thanks again to Get Prime. Today's episode wouldn't be possible without spec.fm. Spec.fm has a ton of other content that's specifically designed for designers and developers who are in their careers looking to level up. Head over to spec.fm to check it out. Today's episode was also produced by Sarah Jackson. Thank you so much for listening and until next time, enjoy your tea.