The Programmer's Brain - Deepstash
The Halloween Collection

Learn more about books with this collection

Navigating and enjoying the thrill of horror and scare experiences

Historical knowledge of Halloween and its origins

Understanding and appreciating Halloween traditions worldwide

The Halloween Collection

Discover 64 similar ideas in

It takes just

10 mins to read

Cognitive Processes

Cognitive Processes

We use 3 cognitive processes while programming or reading code:

  • Long-term memory (LTM) is similar to the hard drive of the brain. It stores the things that we have learned in the past, such as syntax or an algorithm.
  • Short-term memory (STM) is like the RAM or cache memory. We use it to remember the things we have just seen, such as the type of a variable or a function name.
  • Working memory is the CPU of the brain. This is what we use for thoughts, ideas, and coming up with solutions while programming.

50

687 reads

A Chess Experiment

A Chess Experiment

In an experiment, both chess masters and average players were asked to memorize a chess board configuration, and the chess masters did way better.

That was because the experts had previously seen something similar, and they only had to store a few items in their STM, such as “Sicilian opening with a knight moved to D4”. The average players were trying to memorize the whole board. Research showed that we can only hold around 7 items in our STM.

When they ran the experiment with a configuration with pieces arranged completely random, the chess masters did just as bad as the average players.

42

618 reads

Chunking Code

The way the chess experiment applies to programming is that we should aim to split our code into chunks that make it more readable and easier to remember.

We can achieve this by using design patterns and comments. If a function’s name is enough to describe what it does, then a comment is not necessary. But sometimes a comment is needed to increase code readability.

42

518 reads

Active Elaboration

Active elaboration is the process of thinking about similar things when learning a new concept. This helps strengthen the concept in memory.

In the context of programming, you can think about similar concepts in another programming language or if the concept fits a certain paradigm, framework, or domain.

42

472 reads

Understanding Code

Since code is similar to natural language, we can apply the same techniques that we use to understand text to understand a piece of code. A great way is to try to summarize the piece of code in words, which helps you understand it better and can serve as documentation.

38

429 reads

Naming Variables

Naming Variables

It is pretty obvious that the names of variables matter. But oftentimes when we are in the middle of a hard problem, thinking about the name of a variable is too much for our cognitive capacity, so we just choose the first thing that comes to mind.

But we can increase our naming abilities while reviewing other people’s code. When you see one of their variables for the first time, take a few seconds to try to predict what it will be used for, and later evaluate how accurate its name was. Overtime, this should increase your intuition about good variable names.

40

392 reads

Choosing A Good Name

A good name must fit the natural language the variables are defined in. For example, since in English you would say “the maximum number of points”, it makes more sense to choose the name max_points over points_max.

Also, the aim should be to use 2-4 words per variable (apart from the common 1 word names).

39

404 reads

Using Memory To Your Advantage

Using Memory To Your Advantage

Since we can only hold a few things at once in our memory, this can slow us down while programming or while reading code. There are 2 strategies we can use.

  1. Automatization: Practice a concept so much that it becomes second nature. If you’ve been programming for a while, you never think about the syntax of a for-loop, so that does not take almost any brain power while writing code.
  2. Making models: a model is an abstraction you make to reduce your cognitive load, such as a diagram about a complicated codebase that helps you understand it better.

40

398 reads

One of the things I take away from this book is that confusion and feeling cognitively overwhelmed is fine, and is part of life and learning. Before I knew all I know about cognition, I used to get upset with myself for not being smart enough to read complicated papers or explore unfamiliar code; now I can be kinder to myself and say, “Well, maybe you have too much cognitive load.”

FELIENNE HERMANS

44

451 reads

IDEAS CURATED BY

Other curated ideas on this topic:

Clean Code

20 ideas

Clean Code

Robert C. Martin

Limitless

8 ideas

Limitless

Jim Kwik

Limitless

13 ideas

Limitless

Jim Kwik

Read & Learn

20x Faster

without
deepstash

with
deepstash

with

deepstash

Personalized microlearning

—

100+ Learning Journeys

—

Access to 200,000+ ideas

—

Access to the mobile app

—

Unlimited idea saving

—

—

Unlimited history

—

—

Unlimited listening to ideas

—

—

Downloading & offline access

—

—

Supercharge your mind with one idea per day

Enter your email and spend 1 minute every day to learn something new.

Email

I agree to receive email updates