10 Getting better at solving complex problems

 

This chapter covers

  • Comparing the role that different memory systems play in problem solving
  • Investigating how automatization of small skills can help you solve larger and harder problems
  • Understanding how to strengthen your LTM to solve problems with greater ease

In the last few chapters, we mainly looked at what you should not do while coding and why. We investigated the effect of bad names in chapter 8 and the impact of code smells on your ability to understand code in chapter 9.

Earlier in the book, in chapter 6, we discussed different strategies to support your working memory when solving programming problems. This chapter again covers techniques to help you in problem solving, but focuses on strengthening your LTM.

We will first investigate what it means to solve a problem. After exploring problem solving in depth, we dive into how to get better at it. By the end of this chapter, you will know two techniques to improve your programming and problem-solving skills. The first technique that we will cover is automatization (i.e., being able to do small tasks without thinking about them). This is useful because the less time you spend on figuring out small things, the easier it is to solve hard problems. Then we will explore problem solving from others’ written code as a means to improve your own problem-solving skills.

10.1 What is problem solving?

10.1.1 Elements of problem solving

10.1.2 State space

10.2 What is the role of the LTM when you solve programming problems?

10.2.1 Is problem solving a cognitive process on its own?

10.2.2 How to teach your LTM to solve problems

10.2.3 Two types of memories that play a role in problem solving

10.3 Automatization: Creating implicit memories

10.3.1 Implicit memories over time

10.3.2 Why automatization will make you program quicker

10.3.3 Improving implicit memories

10.4 Learning from code and its explanation

10.4.1 A new type of cognitive load: Germane load

10.4.2 Using worked examples in your working life