Law Of Conservation of Uncertainty (Part 2)
Published 5/31/2017
In today's episode, we talk about a principle of project planning that you can use to help deal with uncertainty.
Today's episode is sponsored by Fuse! Build native iOS and Android apps with less code and better collaboration. Head over to spec.fm/fuse to learn more today!
Transcript (Generated by OpenAI Whisper)
I'm sure you're going to be able to find a way to get to know the world. Uncertainty exists all around us. We established this in our last episode, but how can we embrace it rather than fighting it? That's what we're going to talk about in today's episode. My name is Jonathan Cutrell. You're listening to Developer Tea. My goal on this show is to coach you through the hardest parts of your career to provide you with information, insights, inspiration, conversations with people in this industry, as well as other industries, all kinds of conversations that we've had on this show, all in hopes of helping you become the great developer that you want to be. I've said it on a few episodes now, and I'm going to continue saying it, if you don't want to become a better developer than you are today, then you probably have no business listening to this show. My goal is for you to walk away from listening to this, challenged and optimistic, charged up, ready to take an action step today that will make you a better developer. We can take a very simple step each and every day to become better at what we do. Sometimes those steps are extremely practical. Sometimes they mean setting up your environment in a new way. But sometimes they're not super practical, instead they're much more academic or perhaps theoretical. Mindset shifts, ways of thinking, ways of changing your thought patterns, ways of changing the way you view the world around you. That's kind of what we're talking about in today's episode. We're talking about uncertainty. In the last episode, we established this idea of the law of conservation of uncertainty. What does that mean? Well, it basically means that for any given project, really for anything that you do in your life, a level of uncertainty exists. There are so many variables that go into any given decision. And so if we act like that uncertainty doesn't exist, then really all we're doing is shifting it to a different place. But in the last episode, we also established the fact that humans are lost averse. This shouldn't come as a surprise. There's tons of research already out there on the subject. But because of our loss of version, we seek certainty. We want to be as safe as possible with our bets. This goes for our money and it goes for everything else that we do. Full certainty puts those decisions into a different category. The things that we can be fully certain about. As developers, these things are few and far between. It's not bad news. And that's what we're talking about today. How to embrace this uncertainty? Very often, we try to sell certainty. This is such a common business practice. We want to sell a given product with all the features that you want for a fixed price. And with it, a fixed timeline. All of these things mitigating uncertainty. And ultimately viewing uncertainty as the enemy. But perhaps there's another way to do this. Perhaps we can embrace uncertainty. And instead of selling certainty, we sell change. Change is progressive. Change is adaptive. If we sell change as a valuable aspect of what we do, we get a chance to create a scenario where adapting to a new market is easy. Where adapting to a new staffing situation becomes second nature. If we focus instead of focusing on mitigating risk and mitigating uncertainty, if instead we can focus on value and delivering value in a changing environment, then uncertainty becomes embraced. Uncertainty provides us an opportunity to use what we've prepared for. Change. This is what we're going to talk about in today's episode. Some very specific examples of when you can use this methodology, this thinking, this way of viewing certainty. Really, it's a way of thinking about the world. We're going to talk about that in today's episode. But first, I want to talk about today's sponsor, Fuse. Fuse is changing the way app development is done. If you've ever worked on game development and you've used something called Unity, then you know a little bit about what Fuse does. Fuse is available on Mac and it's available on Windows. And it provides you a brand new environment for doing app development. Writing less code and focusing on the product, 100% of the time. This is what Fuse allows you to do. If you're an app developer, I want you to think about this. How long have you been doing things the same way? Virtually for your whole career and for decades in this industry, app development has been done effectively the same way. And this is what Fuse is trying to change. Go and check out what Fuse has to offer for you app developers. By the way, it compiles to real native code and you can create iOS and Android applications using Fuse. All in one easy to set a package. Go and check it out spec.fm slash Fuse. That's spec.fm slash Fuse. Thank you again to Fuse for sponsoring today's episode of Developer Tea. So we're going to talk about some specific scenarios where embracing change is more valuable than trying to mitigate uncertainty. Embracing uncertainty when that can be a valuable thing. One of those scenarios for you as developers who are very young in your career is when you're looking for a job. If you walk in to your first interview and you have a list of, let's say, seven or eight skills that you've put on your resume and you discuss these skills with your potential employer. Let's say that that employer wants you to work with skills that are outside of your current skill set. The developer who embraces uncertainty is open to changing their skill set. The developer who embraces uncertainty is open to using new tool sets. They're open to the possibility that they made a bad choice yesterday. They're open to the idea that learning new things is just as valuable as practicing old things. Now, of course, we talked on the show about managing your tech portfolio or your skill portfolio. And that still holds true. I don't want you to be jumping between tech every day or every week or even every month for that matter. And certainly develop your skill sets in one area. But once you get a chance to work with a company and the opportunity hinges entirely on whether or not you're willing to try out a new programming language or perhaps a new framework. If you are of a fixed mindset and if you are trying to mitigate uncertainty, if you don't want to change and progress, then you may end up not getting that job. That is a detrimental situation to be in very often. Because you will find in most scenarios when you're either changing jobs or you're getting your very first job in the industry that you will need to learn new things. Very few people would disagree that having an adaptive mindset, having a dynamic and progressive mindset when you are coming onto a new team, that would be a bad thing. Talk to any hiring manager, any development manager, and they will tell you that learning is a priority and being able to adapt to new environments, adapt to new frameworks or new methodologies, that is incredibly important. So that's an obvious scenario where embracing uncertainty is important for you when you're on the job search. If you only hold yourself into specific jobs that are only looking for your skill set, and they don't require you to change, then you're basically cutting possibilities. This is extremely important to understand because the same system of thinking should apply to the way we conduct our projects. So what does it look like to embrace uncertainty in a project environment? Really, what it comes down to is what you are committing to. Let me walk this out for you. What you are committing to as a developer and as a company of developers, and hopefully some of you who are crafting your sales presentations and who are crafting development services contracts, client services contracts, hopefully this will hit home. If you craft your contract so that you are committing to a feature set, or you're committing to a specific deliverable that is far out into the future, then you're basically guessing what you're eating for dinner in two weeks. Think about that for a second. We did this thought experiment already. You don't know what you're going to have for dinner in two weeks. It's nearly impossible to forecast things that are uncertain. When we commit to specific deliverables that are far out into the future, and extremely difficult to determine and have a lot of uncertainty around them, then we're very often limiting our ability to change. This is an extremely negative aspect of these kinds of commitments. Instead of committing, here's the kicker. Instead of committing to a specific deliverable that is far off into the future, commit to a direction, commit to quality, commit to the most valuable things, and finally commit to clarity, direction, quality, value, and clarity. If you can commit to these four things, then the actual deliverable in the end will have dynamically shifted along the way as requirements change, as the environment changes, as people's minds change, as tastes changes, as the market changes, all of the things surrounding the project change, and allowing the project to change also increases the value of that project. I want you to write this out. Write this out for your next project. Direction, quality, value, and clarity. Direction, quality, value, clarity. Committing to these four things and building iteratively, in other words, building the next most valuable thing, and doing it in the direction that has been discussed, being extremely clear with the person that you're working with, with your clients, and never compromising on quality. All of these things create a situation where change is invited, uncertainty is embraced rather than mitigated. Hopefully, this has been a challenging discussion for you, and hopefully, you understand that this commitment creates a better product in the end, because we can't eliminate uncertainty. We can only move it around, shift it, change the responsibility for that uncertainty. We can sell certainty by owning the responsibility of dealing with the fallout of uncertainty, but we cannot eliminate uncertainty altogether. We can only make good guesses. Thank you so much for listening to today's episode of Developer Tea. Thank you again to today's sponsor, Fuse. Fuse is allowing you to do away with the old way of building iOS and Android apps, and it does it all in one convenient package that's available for Mac OS, as well as Windows. Go and check it out, spec.fm slash fuse. Thank you so much for listening to today's episode of Developer Tea. If you don't want to miss out on future conversations on things like uncertainty and other things that are going to impact your career and help you become the great developer that you want to be. Go and subscribe and whatever podcasting app you use. Thank you so much for listening and until next time, enjoy your tea.