« All Episodes

Accepting The Unexpected

Published 2/28/2018

In today's episode, we talk about preparing for the unexpected.

Today's episode is sponsored by Linode.

In 2018, Linode is joining forces with Developer Tea listeners by offering you $20 of credit - that's 4 months of FREE service on the 1GB tier - for free! Head over to https://spec.fm/linode and use the code DEVELOPERTEA2018 at checkout.

Transcript (Generated by OpenAI Whisper)
I want you to think about the last time that you had something unexpected happen to you. If you're like most people and perhaps all people, your answer should be within the last 24 hours. And this is kind of a weird phenomenon that unexpected things seem to happen all the time. So how do we prepare for that? That's what we're talking about in today's episode of Developer Tea. My name is Jonathan Cutrell. And the goal of this show is to help driven developers like you connect to your career purpose. The reality is, you know, a lot of the time this show will end up talking about, you know, ways of dealing with life, ways of dealing with things that are going to happen to you throughout your career, no matter what field you're in, which is why this show really is not just for developers, but it really happens to developers quite a lot that you run into unexpected things. And this happens especially with your code. It's going to happen especially when you start working on features that have a lot of unknowns, for example, and we shouldn't be surprised. This is really the first point of today's episode. We really shouldn't be surprised when unexpected things happen because what makes them unexpected isn't that we are caught off guard. What makes them unexpected is that usually those things don't happen. So we shouldn't be surprised because we know that unexpected things happen. We know that within the realm of possibility, there is a long list of outcomes and a lot of those are considered unexpected. Things are considered unexpected outcomes, things that likely are not going to happen. So you may be able to hear a slight difference in the audio for today's episode. And the reason for that is because I'm actually recording from a hotel room. This was an unexpected reality that we had to face. My wife and I are moving to a different house staying here in Chattanooga, Tennessee, but we're moving to a different house. And the date that we were closing on our old house or selling our old house and moving out was supposed to perfectly coincide with the date that we're moving into the new house. And this relied on a lot of variables lining up and being the responsible homeowner and father and husband and human that I am, I applied as much of my learning from software development as I could to this situation. And we're waiting, what are the odds that this is going to go sideways? What are the odds that we're going to be delayed and not be able to move into our house? We need to be able to prepare for these situations. And the response was that the odds were relatively low. And this is where my lapse of judgment came in because of the very low risk of this issue occurring that ended up occurring, I was not prepared. We did not prepare and ultimately we ended up being displaced into a hotel and I don't have my normal recording gear with me. So how could I have done better in this scenario? And more importantly, how can we apply this to our work every day? We'll talk about that right after we talk about today's sponsor, Linode. With Linode, you can get up and running with Linux in the cloud on plan starting at just $5 a month. This is one of the best investments, especially for beginner developers, this $5 a month plan. It's one of the best investments you can make into your career because once you start learning about networking and the true power of having an internet connected server, you're ultimately probably going to become addicted like so many of us to building things that are connected to the internet. And this allows you to do so many things with your programming knowledge and it allows you to build products, for example. You can actually start in that $5 server with Linode and build your startup one piece at a time and scale as you need to. Of course, Linode is not only entry level machines. In fact, they also serve high memory plans. We're talking lots of memory here, imagine having a computer that has access to 200 gigabytes of memory. Most of your database driven applications that many people who are listening to show don't even use 200 gigabytes for the persistent disk storage, much less 200 gigabytes of memory. So the point is Linode can cover this wide variety of needs from high memory all the way to introductory and everything in between. And I highly recommend them not just because they have plans that will suit everyone, but also because they have excellent customer service and they care about the development community. It's a company with developers in it and they contribute back to the development community and they continuously are updating their internal knowledge base, which they share wide open with you. So you can learn how to do things with your Linode node on Linode's website. You can get up and running with Linode incredibly fast. Have respect.fm slash Linode to learn more today. If you use the code Developer Tea2018, you'll get $20 worth of credit at checkout. If you've had over respect at fm slash Linode use the code Developer Tea2018 and checkout for that $20 credit. Thank you again to Linode for sponsoring today's episode of Developer Tea. So how could we prepare better for uncertainty? Well one of the fatal mistakes that I made in my particular case where we're left displaced in a hotel a little bit under prepared is that I didn't allow for any flexibility in my plan. That was the first mistake that I made. That our plan was truly kind of built with a rigid transition in mind. Now the reality is that flexibility almost always costs and this is one of the main reasons that we chose not to build our plan flexibly but having the ability to flex with your situation. That really is kind of the definition of adaptability. So if you're in a situation where your inflexibility is going to cost you a lot then building inflexibility to your plan is more important. So you have to evaluate the cost of failure. Evaluating the cost of that inflexibility if something were to cause you to need the flexibility and you don't have it, what is the cost that you incur? And now you can make a more informed decision, a better equitable decision on how much you're willing to invest in flexibility. But another more nuanced mistake that I made when evaluating the likelihood of something going wrong is that I used the small chance as a way of saying that there was no chance. In other words, I allowed my biased thinking to see the small chance as nearly an impossibility and this is the problem with seeing those small chances as an impossibility. When you have nothing to prepare for then you're not really evaluating the potential outcomes and the implications of those potential outcomes. For example, in this scenario, even though the chance was very low that we would end up having a different closing date on one house than the other, the chance was very low of the happening even though that's the reality. The cost, if that were to happen, justifies a little bit of preparation. Because the preparation may have included carrying a little bit more in our cars. It may have included not packing so many things on the moving truck, but instead maybe we take a load over to a friend's house so that we have access to more things who are a little bit more flexible with what we can do and how long we can go in this transition state of being out of our own home and in a hotel. This kind of flexible thinking and evaluating is important because even though it's a statistically small chance that something will happen, we dramatically improve our flexibility with really what comes down to a very small input, a very cheap decision. It's not very expensive to have made some of those changes and that flexibility would have been dramatically increased. It's important when we are preparing for unknowns, when we're preparing for unexpected circumstances, unexpected events, that we identify as many of those unexpected events as we can, and especially focus on those high cost events. What you can do is some very simple math. Maybe you'll do something like a sign, a cost of low, medium, or high, or maybe you can even give it a number of 1, 2, or 3, and then assign a probability score to the same event occurring, so you may have it 1 out of 10 or even a percentage score. You apply these percentages, you multiply the probability of it happening by the cost of it happening. This is a very common thing that is done when evaluating risk. What you come out with is a score that gives you an action plan. Let's say for example, we go with our 1 through 3 for the cost of the risk if this thing were to happen, the cost of that, so it's like a low, medium, high, and then we have a probability number. Let's say that we have something that is a 95% probability that it will happen and a low risk, or let's make the math a little bit easier. Let's say we have a 80% probability that it will happen and a low risk. Then we can say a 1 times a point 8 or a 1 times 80% gives us a point 8. But on the flip side, we could also have something that is a much lower probability of happening, even half the probability of a point 4 but twice the cost. We have a point 4 and a 2. We end up with the same risk score. Hopefully you saw that coming. Those of you who have taken any kind of statistics class, you probably know this very simple risk assessment tool. What we don't do is embed this into our everyday thinking. We very rarely recognize the kind of the utility score here. We very rarely recognize both factors coincidentally. Barely ever do we consider just how likely this thing is or just how costly it is. We only consider one factor and the other very often when making a decision. So what we end up doing is for those very small likelihoods, we kind of round them down to zero. And then for the very high likelihoods, we might even over prepare. We might round it up to a surety. So recognizing your entire risk pool, where are your risks coming from, what kinds of things are creating those risks for you? How can you mitigate those risks? How costly is it to mitigate those risks? Identifying all of those things can help you be more prepared and be less caught off guard when something happens that is unexpected. Now, it's also important to recognize that very often unexpected things occur that you can have an automatic response to. Very simple backup plans, right? And it may not even necessarily need to be extremely detailed or all that different from your original plan. Creating these very simple manual decision trees, right? If this particular thing happens, then we're going to go down this road. If it happens another way, then we're going to go down a slightly different road. Those two roads may look very similar, but they have different characteristics. And this decision tree is going to help you progress through that decision making process when something unexpected occurs. Because the truth of the matter is that you're hardly ever going to be right all of the time when it comes to multiple decisions. The likelihood of you predicting the exact path, the exact likely path of decisions and external variables and a lot of things that ultimately are not even within your control, the likelihood of you being able to predict every point along that path is extremely low. The likelihood that you need to be flexible then becomes very high. It's important to recognize these simple realities as it relates to unexpected events. They're going to happen and we need ways of making decisions when they do. So the most important thing you can do is to start thinking about what those unexpected events could be. Even though it's wildly outrageous things that you can think of as unexpected events, now it's important to recognize that it's very different to think about the possible outcomes than it is to allow these things to cause anxiety or to cause inappropriate preparation. Remember that with all of the unexpected things that could happen that are bad, you also don't have to recognize that a lot of unexpected good things can happen as well. Very often the unexpected bad comes along with unexpected good. This is true in our scenario here at the hotel because in the process of all of this displacement and these strange unexpected things happening in paperwork and filing, we ended up having a large portion of our moving costs covered to compensate us for all of the small headaches that we've had to endure in this process. So it's important to recognize that even though unexpected events do happen that the unexpected nature of it doesn't necessarily carry with it bad consequence, instead you can be pleasantly surprised sometimes. You can expect that every once in a while you're going to also have good unexpected things occur. Thank you so much for listening to today's episode of Developer Tea. Once again my name is Jonathan Cutrell. You can find me on Twitter at @jcutrell. You can also find the podcast's Twitter account at Developer Tea. You can tweet questions there. You can also send me an email at Developer Tea at gmail.com. Thank you so much for listening. Thank you again to Minud for sponsoring today's episode. If you are a new developer or if you're a seasoned developer, if you are a DevOps wizard or if you're a product owner, everybody has something that they can gain from Linode. Head over to spec.fm slash Linode and get started today you'll get $20 worth of credit if you use the code Developer Tea2018 at checkout. Thank you so much for listening to today's episode and until next time, enjoy your tea.