Developer Tea

Complexity Is A Scarce Resource

Episode Summary

Complexity is often given a bad rap as an engineer. We're always trying to reduce complexity. In today's episode, we're viewing complexity as an expendable resource that helps us make better decisions.

Episode Notes

🙏 Today's Episode is Brought To you by: imgix

imgix is the API for fast, responsive, optimized images. Your images create complex technical challenges. Our APIs solve them.

Listeners of Developer Tea can enjoy a $300 account creditwhen signing up for a new account! 

Get that credit when you visit  www.imgix.com/developertea

 

📮 Ask a Question 

If you enjoyed this episode and would like me to discuss a question that you have on the show, drop it over at: developertea.com. 

 

🧡 Leave a Review

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.

Episode Transcription

We have an interesting relationship with complexity as engineers. Complexity is often given a bad rap. We think that we're supposed to reduce complexity in all cases, and that's a pretty good heuristic, but sometimes the way that we address a problem is necessarily complex. In today's episode, I want to take a different perspective on complexity viewing it not as the enemy, but instead as a resource, an expendable resource. My name is Jonathan Cutrellly listening to Developer Tea, and my goal on this show is to help driven developers like you find clarity, perspective, and purpose in their careers. There's a fundamental premise of today's episode that you have to be on board with to be able to listen to the rest and find some value in it. And that is that there's no one right way to make decisions. And this seems obvious when we think about it from this frame, but it also doesn't seem totally obvious when you think about our striving, our striving to make better decisions. Our attempts to have some grand unifying theory of how to make the best decision in any given circumstance that just doesn't exist. And part of the reason it doesn't exist is because what the best decision is is contextual per person and per problem. And there's so many variables that are out of our control that making the quote, best decision, there's no way to really even control for what that best decision is. And maybe there are multiple best decisions. This can spiral out of control quickly. And as much as I wish that there was one unifying theory around how to make good decisions, there isn't. But there are some ways that we can choose to spend our energy, which is really kind of the goal of a theory that helps us make any decision at any point. And that is really to spend our energy in ways that we won't regret. After all, there's no way for us to know whether a decision could have been made better if we are satisfied with the decision in the first place. How do you know when you missed out on something great, when you already have something great? This is difficult to measure. So I want to talk about this kind of broad framework that's been discussed many times around decision theory. Right after we talk about today is awesome sponsor, Imagix. Speaking of making decisions, if you are looking for an API that helps you manipulate images and acts as a CDN, then you probably already know about Imagix because it's kind of the de facto choice making this decision should be pretty easy. I've used Imagix for years. And it's not just me, there's thousands of developers from companies like Unsplash, Kickstarter, and Prismac. They offer a global image CDN. So this is already going to make your image accessibility much faster, no matter where you are in the world. But it's a product that's made for developers and has a simple API and libraries for all major languages and front end frameworks. And you're not going to have to go and install all of the complicated kind of image manipulation stuff on your own server. Instead you hand that off to Imagix and they take care of all that complexity for you. Imagix makes responsive design and development easy. Images are automatically optimized for every browser and device. And I'm telling you this API for manipulating images is the easiest I've ever used for that particular purpose. Go and check it out, head over to Imagix.com slash Developer Tea. That's Imagix.com slash Developer Tea. And here's probably the most important part of this ad read if you use this particular link. Imagix.com slash Developer Tea. And you sign up for a new account. You're going to get $300 worth of account credit. $300. You can do a lot of image serving with $300 worth of credit. Go and check it out Imagix.com slash Developer Tea. Thanks again to Imagix for sponsoring today's episode of Developer Tea. We've talked a lot about decision making on this podcast. So I won't belabor all of the points of decision theory and the economics of decisions that we've covered in the past. But a very short overview of how humans make decisions. We tend to weigh pros and cons and we do this very quickly. Usually pros and cons are weighed in a way that discounts the pros and kind of pushes up the cons. In other words, we are afraid of losing more than we are driven to gain. Obviously, this is oversimplified because there's a lot of complications to making decisions. For example, the biological component, the fact that our brain is an organ in our body and it has only so much energy it can use. It is targeting faster decision making, low energy consumption so that we can make more decisions in less time. So this means that our brain tries to take shortcuts which makes decision making difficult sometimes. Sometimes we have pre-built decisions that are in a way already made for us. These heuristics, as we call them, are difficult to overcome when they've been established and reestablished over many years, for example. However, there is another way that we make decisions where it's always on this super fast path. Sometimes we slow down. We think through things very thoroughly. For example, you might slow way down to do a calculus problem. This is not something that you can answer heuristically. But of course, like most things, it's not always so cut and dry. You might have some things that you think you are going to answer with a lot of calculation, but instead you use heuristics and vice versa. Sometimes you think you're going to answer heuristically, but instead you slow way down and it takes longer than expected. If we were to try to find a single unifying theory for making better decisions, this would probably be it because making good decisions is very much so dependent on choosing which route is best. Should I take the heuristics route or should I slow down and take the meticulous calculations route? As we said in the opening, complication is a currency. It's a currency because you are spending not only your own time and your brain's energy, but you're also spending the opportunity to use that same brain calculation on a more important problem. Here's the spoiler of the episode. I'm not going to tell you when you should do which one. But what I will do is tell you that it's important for you to decide what things are worth calculating and what things can you develop some kind of good heuristics for. Sometimes it makes absolute sense to go through the meticulous calculation process and to get the exact right answer. Other times we do this because we think it's going to be the best way forward, but we end up sacrificing too much time and too much effort for so little gain over what a heuristic would have provided. So this means that developing your heuristics is being just as important as deciding where to spend that currency of complication. The currency of complexity. If we look at our problem set and we find the problems that have high value that is attached to the exactness of the response. If we look at the things that have high value based on high accuracy, those are the kinds of things that I wasn't going to give you a recommendation, but this is a way that you might choose what to put complexity into, where to spend that complexity. If those particular efforts are going to provide a highly accurate result and accuracy is not very important, that's kind of wasted energy. If you think about complexity as a resource, think about it in the same fungible terms as you think about dollars, then if you spend your complexity in one place, if you have this mental model of complexity as a resource, you recognize that you can no longer spend that complexity on something else. That you're taking away from something else when you feed one thing complexity. And so if you are choosing what to feed complexity to, then you're also choosing what not to feed it to. So here is the advice that I'll give you. When you make these decisions or when you're making any decision, you might be better served if you stop before you try to make that decision and you ask yourself, would a simple answer suffice? And a very simple gut-based, heuristic-based answer suffice is it going to give me what I need for this decision? If you do this, then you are kind of hoarding your complexity resources. When you have to say no to that question, when you have to say no, I need to actually put in the time here. If you've been able to say yes to that question to other things, then you've likely been able to save up some of that complexity. Thanks so much for listening to today's episode of Developer Tea. Thank you again to Imidix for sponsoring today's episode and for providing the listeners of this show $300, $300 worth of account credit. Head over to Imidix.com. That's IMGIX.com slash Developer Tea. All one word to get that $300 on a new account on Imidix. Today's episode and every other episode of Developer Tea, give me found on spec.fm. This episode was produced by Sarah Jackson. My name is Jonathan Cutrell and until next time, enjoy your tea.