Developer Tea

3X3: Three Questions To Get Unstuck On Big Problems

Episode Summary

Today's episode is about *big* problems. The kind that aren't answered simply or in a few words, but rather with a cascade of actions. How can you get unstuck on big problems?

Episode Notes

Today's episode is about big problems. The kind that aren't answered simply or in a few words, but rather with a cascade of actions. How can you get unstuck on big problems?

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.

Episode Transcription

We all have problems to solve every day, but I want to talk about not your average problem for today's episode. I want to talk about these bigger problems that you face. These are the kinds of problems that can generate entire businesses. These are the kinds of problems that you stay up late thinking about and perhaps problems that go unsolved for years on end. We're going to talk about three things, more specifically, three questions that you can ask to help you get unstuck on these kinds of problems. Being unstuck on these kinds of problems doesn't mean that you're going to solve them immediately, but rather that you're going to have a forward momentum, kind of a moment of surge if you ask these questions and then spend time adequately answering these questions. My name is Jonathan Cutrell and you're listening to Developer Tea. Today is Monday, of course, and it is the first episode in a three by three week. If you're not familiar with our three by threes in these episodes, we try to bring Developer Teaback to the practical pieces of advice that I can give you to become a better developer. The whole goal of this show is to help you connect to your purpose. I hope you'll subscribe today so that you don't miss out on Wednesday's episode. We're talking about more purpose-oriented episode on Wednesday and we're going to have some practical discussions around that topic more explicitly on Wednesday. But for today, we're talking about getting unstuck, getting unstuck on these large problems. These are problems that don't have a single answer. Very often, these problems are answered by entire companies and entire changes in the market. These are the kinds of problems that are answered by new frameworks or even new languages for developers and sometimes they're answered by something entirely unrelated to the technology that you're using as well. Obviously, this episode isn't limited to developers in its scope, but I believe that developers often run up against these kinds of big questions. These big, kind of systematic things that need to be solved. We have to start thinking about the questions that we're asking when we're trying to solve these kinds of problems. OK, so you know that on our three-by-three episodes, we talk about our sponsor for the day before we dive into the three practical things you can take away from this episode. So I want to do that right now. We're talking about Linode today. Linode is an excellent sponsor that we've had on for quite a while on this show. I'm one of the earliest sponsors we've had on Developer Tea. Linode allows you to instantly deploy and manage an SSD server in the Linode Cloud. You can get a server running in just seconds with your choice of Linux distribution, resources and node location. Quite literally, you pick those three things and you launch your Linode. They have a free credit for you for being a developer to listen. This is $20 worth of credit. With Linode, $20 can actually take you a pretty good distance. More specifically, if you choose their $5 a month plan, of course, that's going to be four free months of Linode service. This is enough to learn a lot about Linode. Imagine this being kind of your trial period to decide if you like the way that Linode works. This is an excellent way for you to do that. So $20 worth of credit, it's four free months. We'll give you the code in just a moment, but I won't tell you if you want specifics. They have 10 data centers. Their plan started a gigabyte of RAM for $5 a month. We've already covered that. They have high memory plans starting at 16 gigabytes and going up from there. These are massively powerful servers that you can spin up on Linode again in just a few minutes. Of course, depending on what kind of problem you're solving, you may want to spin up a bunch of smaller Linode servers. A bunch of these, one gigabyte servers, for example, and then connect them together. Well, Linode provides tools to do just that. They have something called node balancer that allows you to connect your nodes together. There's so many ways that you can use Linode. Of course, we've talked about some of the most important features for developers, which include support and the tools that they provide to allow you to recover from mistakes that you might make. There's tons of things that Linode provides to you as developer, but I will let you find out more about them. You can find out so much about Linode by heading over to spec.fm-slashlinode and again, use the code developert2018 at checkout. That's all one word. Developert2018 at checkout to get that $20 worth of credit. Thank you, Gindel Linode, for sponsoring today's episode of developert. So it's a three by three episode, and in today's episode, we're giving you three things that will help you get unstuck on big problems. Unstuck on big problems. So let's jump straight in at number one. The number one question that you should be asking to get unstuck on a big problem. White will seem obvious once this problem has been solved that doesn't seem obvious today. When we look at most great inventors, the things that they invented on the other end of that invention, they seem fairly obvious. And part of the reason for this is because in hindsight, everything that we see seems to make sense. We create this narrative representation of how something came about, but ultimately, this isn't the way things occur. For example, if you think about the telephone, it seems obvious that we would use some kind of electrical current in order to communicate. But when we look back in time, it's very difficult to recapture the perspective that we had before something occurred. It's very difficult to unwind that narrative in our minds. So it's important to put some energy into the opposite direction, trying to figure out what we will look back and decide was obvious into the future. Of course, this isn't incredibly easy by any means, but the way that we look at the world today, when we try to generate new ideas, sometimes this is much better served if we look back from the future. And sometimes this requires more investment, more mental investment in understanding trends and perhaps even understanding unrelated industries and how those industries collide. But looking into the future and trying to look back from that vantage point, you know, this is the same concept you've probably heard the phrase start with the end in mind. This is the same concept just from the perspective of problem solving. So what will we look back and determine was obvious in the future? The number two question that I wanted to ask in order to hopefully get unstuck on a problem is what shared principles can I learn from an already learned problem? What shared principles can I learn from an already learned, already solved problem? And really this is going to help you do what we said in number one. This is going to help you kind of jump into the future and look backward. Because what you'll find is that as you uncover these principles, they will seem to kind of give you the clear deficiency, they'll point to a clear deficiency in the current way the things are solved. So you know, solutions have shared underlying structures. We use metaphors, we use abstraction to understand how various problems may be similar kind of the bones inside of the problem, not necessarily the way the problem is solved at the surface level, but rather the underlying structures that are similar. This is exactly why we learn things like data structures and algorithms as developers, because it helps us recognize the shape of a problem rather than the specifics of the problem. This can also help you choose a way of a particular way that you already understand to solve a problem that you've never seen before. So if you've prepared for a technical interview, you've probably done this where you try to recognize certain types of problems. This is a searching problem or this is a sorting problem or a categorization problem. Having these models for the way that we see things, really there's principles that we've learned that apply to all sorting problems. There's principles that we've learned that apply to all categorization problems. So if we can look at problems that have already been solved and try to draw out the principles and then apply them to new problems that we're trying to solve, very often we can take what we've already learned in the past and reuse it to learn and really become more action oriented into the future. The last question I want you to ask when you're trying to solve a problem and really this applies to smaller problems as well is very simple. What was I doing when I got stuck? The way of wording this problem is what is the origin of the issue? When did this issue become exactly that? What was the environment like when the issue arose? What are the surrounding problems that may be exacerbating this particular problem? Whenever you lose something, isn't it always the common advice to retrace your steps? Perhaps in a problem scenario it helps to retrace your steps in a similar way. So back up and look at what you've tried. This problem solving is often what rubber duck debugging actually does. It forces you to retrace the steps that you've already taken and realizing that you took a step that you shouldn't have for example or maybe you forgot to take a step that you should have. By putting your mind back in the moment where things went wrong, you might see a different path you can take. But be certain that the moment you transport to is the correct one. When in doubt you should go further back to when you knew things were working correctly. This is really a root analysis. A root cause analysis. If you're solving a creative problem, try to understand the driving reason that the problem exists in the first place. This reverse engineering can often lead to more novel and valuable solutions that leap frog rather than baby step in terms of innovation. So it's important to realize the space that your problem exists in, where it came from, and why other things are not solving it. What is wrong with what you've already done? And peel back those solutions, right? Whether it's your solution or you know, society is your culture solutions that already have been attempted or even a co-worker solution that's already been attempted. Any scale, if you can peel back and go back to the origin of the problem and rebuild from the base level using principles, right, with the end in mind. This is going to kind of reset that process and it hopefully will get you unstuck. Thank you so much for listening to today's episode of Developer Tea. Once again, this is the first in a series of three lie threes for this week. We're talking about all kinds of things in these episodes and I hope that you will subscribe so you don't miss out on the next three by three on Wednesday. We'll be talking about ways of uncovering your short term purpose. What is your short term purpose? Well, listen on Wednesday and we'll talk about it. Thank you so much for listening to today's episode. Thank you to Linode for sponsoring today's episode. You can get a $20 credit. It's worth four months of service on Linode, head over to spec.fm slash Linode and use the code developer te 2018 at checkout. Thank you so much for listening. Until next time, enjoy your tea.