You’re working on a project with a colleague, and he’s making a lot of references to your state of mind. Specifically he’s making statements asking why you are confused, or making suggestions about why something is so hard for you. It feels absolutely terrible.
Maybe I am confused…
you think.
Let’s step back a moment and recognize that being in a state of confusion does not imply stupidity. In fact, there are several reasons that we can have confusion and logical steps to take to resolve it. Some of these I heard about in the Programmer’s Brain, and the last one I came up with on my own.
I’m confused because the knowledge is new
If someone presents you with a script in a language that you’ve never seen before and asks “What does this code do?” you are likely to scratch your head and realize you don’t know. But how could you know? It’s knowledge that you’ve never actually encountered. The resolution here is easy - look it up on this magical place called the Internet! This is temporary confusion caused by a lack of knowledge, and the only thing between you and understanding is probably a Wikipedia article.
I’m confused because I don’t have all the information
Let’s say that you are browsing source code, and you hit a function call. For some random reason, the function isn’t included in the code base. You know the language, but the issue here is that you literally just can’t see it. You can make an educated guess based on the function name (an assertion to the importance of variable naming!) but you just can’t be sure until you know the details. This kind of confusion is just missing information. It can usually be resolved by asking someone for the missing details. If it’s impossible to find out, you can recognize that and proceed cautiously, noting that you have limited information and are making assumptions.
I’m confused because it’s too complex
Imagine that someone gives you a hugely complex system diagram. You start to trace the steps logically from the start and… you lose the thread. You then try to take some notes and more easily write it out, because you realize that you just can’t hold the entire procedure in memory. This kind of confusion is confusion of complexity. We aren’t broken, but there are limits to our working memory that always give it an upper limit. The fix here is to realize it’s just you’ve exhausted your processing power, and you need an aid like paper and pencil (or text editor) to write down the logic as you go, to be easily digested later.
I’m confused because I don’t know what to do
This is the most common kind of confusion for the author of this post, and common in the role of research software engineer. Part of our daily practice is to be given abstract ideas and initiatives and to turn them into something. Thus, it can be challenging if you find yourself staring at your keyboard with an abstract prompt and you don’t know what to do next. The way to resolve this kind of confusion is to engage with a colleague and think through how the abstract idea maps to an actual list of tasks. You can also take on this step yourself. Even if you can only identify one concrete first step, likely once you start that you will start to see a clearer vision of the next step after that.