« All Episodes

Metal Simulations - Artificial Constraints

Published 5/8/2019

Stop and think about a problem or issue you're facing right now in life or work. In today's episode of Developer Tea we're talking about clarity and its inevitable shift as we go forward in life. To maintain our sanity we've constructed a lot of stories or framework to drive our decision making.

In today's episode we're talking about the artificial constructs we use to control our decisions made and change our futures.

Get in touch

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

🧡 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.

🍵 Subscribe to the Tea Break Challenge

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/.

🙏 Thanks to today's sponsor: Sentry

Sentry tells you about errors in your code before your customers have a chance to encounter them.

Not only do we tell you about them, we also give you all the details you’ll need to be able to fix them. You’ll see exactly how many users have been impacted by a bug, the stack trace, the commit that the error was released as part of, the engineer who wrote the line of code that is currently busted, and a lot more.

Give it a try for yourself at Sentry.io

Transcript (Generated by OpenAI Whisper)
I want you to think back to a moment when your mind shifted. The way that you think, not just your mind changed about a particular subject, but at a fundamental level. Perhaps a principle came into clear view that you didn't understand before. Maybe some kind of system that you were trying to grasp, maybe all of the pieces fell into place in that moment. Or maybe someone encouraged you to think about something differently. If we're doing our job here on the show, perhaps you've even had one of those moments while listening to this podcast. Now, that's not because we have some list of special secret sauce that we're sharing on the show, but rather because I'm encouraging you to do something that you're already capable of doing, stopping and thinking a little bit differently about the things that you've been thinking about. In the next couple of episodes, I want to try to create more of those moments for you. New ways of looking at the world or even simple problems that you're facing in your job. My name is Jonathan Cutrell and you're listening to Developer Tea. This show exists to help driven developers find clarity, perspective, and purpose in their careers. And finding clarity, perspective, and purpose is not just a linear trip. You don't gradually get these things. They come in waves often. And sometimes we feel like the clarity that we had a week ago is gone this week. This is something that we can't really control because there's so much uncertainty. There's so much about being a human that is difficult to predict. We don't know what will happen to us. We certainly don't know what will happen in the world. To maintain our sanity and continue making decisions, we've constructed a lot of stories. And these stories serve as kind of a framework, a backdrop. We make decisions based on our perception and our stories make up that perception. And so we have a story about who we are today. What is important to us today? We have stories about who we were before. And surprisingly, sometimes these stories are not actually accurate. We believe that we acted in ways that we didn't. And we predict that we'll act in ways that we won't. But one thing is absolutely certain. All of us are making decisions. Even if we don't make a decision, we're still choosing to not make a decision. So there's some kind of agency that we have, pretty much everyone listening to this podcast, you have some control over an aspect of your life. And what you do with that control has usually pretty profound effects on the outcomes that you get in your life. And so if you're driving towards a goal and you're using your agency to make decisions to take you towards that goal, then certainly our agency becomes incredibly important to understand. Our decisions become incredibly important to refine. But decisions are a tricky subject. And not just a single subject, they are kind of a superset. It's all that we do as humans. We make decisions. Sometimes we make unconscious decisions. In fact, probably most of the time we are making unconscious decisions. And so we end up making a lot of bad decisions or at least suboptimal decisions. Because that don't really take us as far as they could on the average. And so one of the goals of this podcast in order to help you find clarity, perspective, and purpose in your career is to help you make better decisions. That is a huge goal because better decisions is such a vague and difficult to achieve thing. But one of the things that goes along with better decisions is starting by not making those decisions passively, making them unconsciously. While many unconscious decisions that we make are not necessarily detrimental to us, because many of our unconscious decisions keep us alive, for example, a lot of the unconscious decisions that we make could be significantly better. Not only that, but a lot of the conscious decisions that we make could also be significantly better. Now, how do we learn how to make better decisions? This is a huge field of study and there's books upon books and entire professions that are related to better decision making. This is the whole point of having coaches, for example, financial coaches or professional coaches. And those people that try to help others make better decisions. And those coaches, most often, are teaching you something that you have the capacity to learn. And one of the ways that we learn best and what most coaches will provide you with is some way of simulating your decision making. For example, athletic coaches will very often simulate various types of exercises that refine your physical capabilities. So on today's episode and the next couple of episodes, we're going to talk about mental simulations. Mental simulations are also known as thought experiments, although some of them are not entirely just about thinking, some of them are also about identifying your feelings. But mental simulations help you walk through various ways of looking at your problems. Instead of always approaching your problems without practicing them, the simulation allows you to walk down the patterns, the different scenarios that you could play out. But it's not just identifying every possible scenario. And that's where these episodes are going to guide you in figuring out ways of constructing useful mental simulations. Because if you had to construct every possible scenario, you would be paralyzed by the amount of analysis that you're having to do to figure out which one is best. So you don't want to consider every single option in the world, but there are some ways that you can construct better mental simulations that create kind of these landmark ways of thinking about problems, thinking about decisions in a more holistic way. In today's episode, we're going to talk about one of those ways, a way of creating a valid and useful mental simulation right after we talk about today's sponsor. One of the things that you learn about simulations is that it's nearly impossible to simulate everything. This is what we try to do with our tests. We run a large variety of simulations. Usually those simulations have very specific criteria and then we're looking for particular outcomes. The problem is that production code doesn't always look like that. Production decisions by your customers, your user base are relatively unpredictable. You're not really sure how they're going to use it. What kind of restrictions you're going to run into? Sometimes you'll even run into restrictions based on that user's context. Whatever browser they're using, wherever they are located, even geographically. And so you're not going to be able to catch every single scenario no matter how many simulations you try to run. So how can you mitigate these kinds of problems? How can you figure out when your code is broken and I promise you some piece of your code is broken out there in the wild right now? How can you find out when that code is broken so that you don't lose customers? This is when Cintry steps in. Cintry provides you with immediate feedback when you have an error in production. This allows you to see not only the stack trace but also the code that is contributing to the stack trace and the person who wrote that code. So you can triage these problems immediately and effectively before you lose customers. Search your bugs before your customers have to and save a lot of money and a lot of pain at the same time. Go and check it out. Cintry.io. Thank you again to Cintry for sponsoring today's episode of Developer Tea. So we're talking about creating effective simulations to help us make better decisions. And we want to understand what an effective simulation does. It doesn't necessarily model the decision perfectly. It's not the same thing as saying we want to create a simulation of a physical particle system, for example. Instead what we want to do is create some kind of mental structure. And inside of the structure we can kind of play out different scenarios. And the structure helps you understand, at least from a rational level, how your different decisions may help you. And the mental structures are where we can gain a lot of value because we can create these structures based on underlying principles, underlying mental models, for example. So in today's episode we're going to kind of show you one way that you might create a mental simulation that allows you to find new ways of thinking about your problems. And it's based on this simple principle. When we have too many choices, we often make bad decisions. The idea here is that too many choices creates too much analysis. In order to compare all of your choices, you would have to take way too much time and your brain gets overwhelmed. And so we resort to more intuitive ways of making those decisions. Imagine yourself in the grocery store and you see 50 different types of ketchup. You're very unlikely to do the research on which of these ketchup is the best. You may miss out on the best ketchup. But instead, you're probably going to go for maybe the one that you know or maybe the one that has the label that you like the most or maybe you'll use a different heuristic like the price. The problem with this kind of scenario is the heuristics that you're using to make the decision often create a suboptimum output. In other words, you're probably not going to pick the best ketchup bottle. So with this information in mind, we can construct a new way of thinking about a decision. Let's create some artificial constraints around our decision itself. Perhaps you're trying to make a decision about whether you should start with an internship, go to a bootcamp or attend college. Now all of these routes are totally valid ways of starting your career out. There's a lot of opinions and there's not any one right answer. Everyone has a different path. And even if you took the supposedly wrong path and looked back on it, it'd be hard to know. It'd be hard to know when you've taken the wrong path. And so how can you help yourself make a decision in this kind of scenario? And specifically, how can we use this constraint mental simulation device to help us make a better decision or at least understand the structure and the core values at play in order to make the decision? Now it's important to remember when you're running these mental simulations that nothing is off limits. Nothing is against the rules. You can create any kind of constraint, for example. So let's say that you're a constraint is that you do not understand the concept of money. This seems like a silly constraint. Of course you're going to use money as one of the variables to make this decision. But when you eliminate the concept of money and you're not choosing to look at the monetary value, then you look at different things. You're able to more adequately weigh which of these decisions would be better given an infinite amount of resources. Now it's interesting that we would say that an infinite amount of resources is a constraint. But it is a constraint in that it changes away from where you are now so that you no longer have the concept of money to rely on. We could go the opposite direction and create very specific budget amounts or even say that you have zero dollars available that you can't pay for any of these things. So which one would be best for you? When you start identifying, of course, since I only have a hundred dollars to spend on this, then doing an internship makes sense. Or in order to go to school, I would have to find scholarships. In order to find scholarships, maybe I have to get a little bit of experience. So maybe I should go and do the internship and then get a, with the plan of getting a scholarship and then going to school. None of these are actual suggestions, by the way, because again, the answer is going to be very personal and very specific. So I'm not going to claim that any one of these three paths is actually right. But these constraint mental simulations can help you identify more about the decision for yourself. Another example of a constraint that you may place is some timeline on being hired for a job. So if you create this false constraint, this simulated constraint that you must be hired by some month in some year, now you can start looking at which of these routes makes me most hierarchical. Another constraint or optimization point of interest that you could look at is imagining that you absolutely cannot get a job as a result of any of these three paths. Now again, this seems like a silly constraint to add until you consider that perhaps the experience, the memories, the personal enjoyment of these decisions might actually matter to you. Another constraint simulation you might run is whatever you choose, you have to write a blog about it. Now this requires that whatever it is that you choose gives you enough material to actually write about. It also makes you realize what things might be more interesting to you. Instead of you choosing the thing that people are pushing you towards, you start digging into your own perceptions, your own desires, and some of the things that you actually value. There's theoretically an independent number of restrictions that you could place on this kind of decision. And constraints often provide a more fertile ground for creative decision making in general. This is true when you're making new products. This is true when you're making decisions about what you should do. And I encourage you to run a mental simulation this week where you impose some kind of artificial constraints. Remember the great thing about mental simulations is there's really no consequences. You have no particular rules you can think out and kind of play out these situations as if the constraints were real. I hope this has been a helpful way of thinking about decisions. And I really am looking forward to the next couple of episodes where we talk about more ways of running mental simulations. Thank you so much for listening to today's episode and thank you again to Century for sponsoring today's episode. We couldn't do what we do on the show without sponsors like Century. Century is going to help you find production errors in your code base before your users do. Go and check it out, century.io. Today's episode also wouldn't be possible without spec.fm. Speck is a network of podcasts and other content that is made specifically for designers and developers who are looking to level up in their careers. Go and check out all of the awesome content at spec.fm. Today's episode was produced by Sarah Jackson. My name is Jonathan Cutrell and until next time, enjoy your tea.