« All Episodes

Problem Chains

Published 7/18/2018

Today we're talking about problems we face every day as developers, and we face problems every day in a lifecycle -- meaning our problems are almost never atomic. We're going to talk about breaking problems down.

Today's Episode is Brought To you by: Digital Ocean

DigitalOcean is the easiest cloud platform to run and scale your applications. From effortless administration tools to robust compute, storage, and networking services, DigitalOcean provides an all-in-one cloud platform to help developers and their teams save time while running and scaling their applications.

Build your next app on DigitalOcean. Get started today with a free $100 credit at do.co/tea. It only takes a few minutes to get up and running.

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.

Transcript (Generated by OpenAI Whisper)
And today's episode we're talking about problem framing and problem branching. My name is Jonathan Cutrell and you're listening to Developer Tea and my goal on the show is to help driven developers connect more closely to their career purpose and do better work so they can have a positive influence on the people around them. New face problems every day as a developer. You face problems at all varying stages of the problem life cycle. What are we talking about with the problem life cycle? Problems are not a simple thing. Perhaps a better way of putting it is problems are almost never atomic. They almost never exist on their own. They're connected to other problems. Either parent problems, kind of ancestor problems or their sub problems, the things that you could break that one problem down into. So I want you to think in today's episode about a specific problem and then try to identify where in this problem chain that problem actually is. And I'll give you some advice here. This is kind of showing what we're going to talk about later but where that problem is is very important to how you can grow in your career and how you solve that problem. Okay so let's do this exercise. I want you to think of this problem that you have and I want you to think about how to break that problem down. So for example, maybe the problem is that users are confused on your platform and you can break that down into a variety of sub problems. Maybe you need to make the visuals a little bit more clear. Maybe you need to declutter the interface. Perhaps the problem is actually in the language that is used or maybe there's some kind of communication that needs to happen in parallel to whatever your product is. Maybe an email needs to be sent. Whatever the problem is, you can break it down into sub problems. And into those sub problems, likely have sub problems on its own. So for example, you could say that part of the problem is the interface is confusing. The interface for the user is confusing to use. So how do we break that problem down? Well then we can go into an entire discussion about UX and usability and accessibility and trying to define who is this audience. We have multiple connections to other problems that are well up the chain in this problem set. So breaking these problems all the way down to the most atomic version, or I guess the leaf of that tree is very important because that's when we decide how we're going to solve those problems. What code are we going to write in order to solve those problems more specifically? But what about instead of kind of breaking a problem down, what if we integrate a problem upward? We'll discuss that right after we talk about today's sponsor digital ocean. Digital ocean has been a sponsor before and they've come back to be a sponsor on Developer Tea. I'm really excited about this sponsorship because digital ocean is providing you the listeners of Developer Tea with $100 worth of credit for trying out digital ocean. You can get that credit by going to d o dot c o that's d o as in digital ocean dot co slash t t a and you'll get that $100 worth of credit. Now what does digital ocean do that you would use this $100 on? Well, it provides you with the easiest cloud platform to run and scale applications on from effortless administration tools to robust compute storage as well as predictable and affordable pricing. You won't have complex pricing structures. You have a flat rate that you pay per month and it's an industry leading price to performance ratio by the way. So those prices are going to be predictable. That means you're not going to have any crazy big bills all of a sudden. You're going to have consistent billing and by the way, monitoring and alerting are included on your digital ocean drop. Let's go and check it out. Head over to d o dot c o slash t that's d o dot c o slash t a to get that $100 worth of credit. Thanks again to digital ocean for sponsoring today's episode. Okay, so we talk about making things smaller on the show all the time. Decomposing things, getting down to the very nitty gritty details, the most atomic versions of things. And we've talked about doing that with problems in today's episode. But what happens when we go the other direction? Let's say for example, that the problem that you have is that users are confused on your site and confused using your product. We already mentioned this. But instead of trying to break that down as to why are they confused, we can go the other direction. What is the kind of the parent problem that this actually contributes to? Now face value, this may seem obvious. Of course, if users are confused, then maybe those users are not sticking around. Right? Maybe they are leaving your platform altogether. They're leaving your product. They're no longer going to be your customers. Now, if you evaluate this problem more holistically, the real answer might be that your brand is suffering. Let's say for example, that you make cancelling and account difficult to do. This kind of has the opposite effect, right? Now, they're no longer leaving your platform and you're retaining these customers because you kind of trapped them. Now, unfortunately, what this results in is kind of an angry user base. People who will go on and leave really bad reviews about your app or in some other way represent your brand very poorly. You can call it a brand. You can call it the representation of your product, your customer service, kind of reputation, whatever it is, but people will respond negatively to that. So that's actually a different problem, right? That this is a totally different problem than while we just want customer retention. Why do you care about your customer service reputation? Well, they're the kind of the parent problem. If you continue following this chain up, is that you do actually need to retain people. You need to have a positive perspective or a positive reputation of customer service so that when somebody is evaluating the various options in the market for whatever product or service that you provide, that one of the things that they're evaluating is probably customer service, right? So this seems pretty obvious, but as it turns out, when you contextualize a problem that is further down the chain by following that chain upward, you can make much more informed decisions. You can make decisions that skip any assumptions that may be embedded in that problem statement. You may be able to kind of short circuit and solve the bigger problem without solving the smaller problem. You could remove that ancestor problem, that more specific problem, replace it with a better one or even directly solve that higher level problem. Recognizing that all problems are interrelated with each other, very few problems are actually atomic. You can start asking better questions and contextualizing the solutions to your problems based on where that problem is in that chain. Thank you so much for listening to today's episode of Developer Tea. We intentionally kept this one a little bit shorter today. Of course, that was the initial intent for the show. If you like these short episodes, then I encourage you to subscribe in whatever podcasting app you use. Thank you again to DigitalOcean for sponsoring today's episode. You can get $100 worth of credit on DigitalOcean's platform today by heading over to do.co. That's do as in DigitalOcean.co slash t. Thanks again and until next time, enjoy your tea.