Has there ever been a time where you received a bug report and you didn't know where to start? Have you felt overwhelmed with how code behaves? Situations like these can be some of the more frustrating aspects of software development. Solving problems is central to being a top-notch developer; it’s part of what separates the experts from the novices. Over the years, Nate Taylor has come to realize that problem solving isn't always easy, but it can be broken down into some basic steps. These same steps were taught to Nate when first learning physics and have helped solve numerous problems. By the end of this conference talk, you'll have a mental framework for solving problems, and you'll get to see that framework in practice as we solve problems that have happened on real-life software projects.