Who is a reluctant coder?

A reluctant coder wants to spend as little time coding as possible. And write code so that it doesn’t need to be rewritten –at least for the duration of the project. Each language has at least one style for writing code well. More variance of coding is possible if the underlying code is well written. That is, if the stack and any required libraries have an agnostic approach to data input. For example, procedures allowing most any data type or “casting” to the required type will save you having to write code.

Participating in open source projects helps, because others will help maintain the same code base. Yet, what about when problems are complex? As long as the code has utility, the community will maintain it.

Approaches to coding and solving problems in general

Have you heard that for software developers, seven internet years is the same as one normal year? It means that the mind spends much more time in fast mode when it codes.

Suppose we divide the mind’s speed into four gear ratios: Neutral (drifting), slow, normal speed, and fast. That’s three gears and neutral.

  • Neutral/drifting is a kind of meditative speed near zero. This is sometimes useful for moments of creativity and connecting diverse things. It tends to be a state capable of examining entire systems and their interactions. It is a perspective where deep learning and intuition occur. And yet, not much gets done while occupying this level of awareness.
  • Slow is when deliberate, rational thinking processes dominate. In the following Youtube video, Veritasium’s Derek Muller calls this state “Derek”. Slow is hard work. It requires concentration and has limited access to memory. Through practice and repetition, the mind adapts slow processes into fast ones.
  • Normal tends to be a mixture of slow and fast speeds. This is where a healthy mind balances.
  • Fast is when automatic thinking processes prevail. In the following Youtube video, Veritasium’s Derek Muller calls this state “Gun”. Fast is good with repetitive tasks, quick answers and rapid development. It’s impulsive. Fast drifts into insanity when left unchecked by rational, slow thinking or external prompts.

These two following videos present a better sense of newer concepts of the dual process theory of mind known as System 1 and System 2. It suggests how to use your own built-in computer brain to do more work with less effort:

The Science of thinking. How the brain works, how we learn, and why we sometimes make stupid mistakes:

RSA Animate: The Divided Brain. Renowned psychiatrist and writer Iain McGilchrist explains how our “divided brain” has profoundly altered human behaviour, culture and society:

When fast mind dominates coding, development of software can become so complicated that it becomes fragile. A little change in circumstances can render weeks or months of work useless. There are ways to help avoid complexity.

One of the most important ways is to check the code you’re writing against what you want it to do. Take care to think about how circumstances might change. When working with others, these practices are usually part of a software development process. And yet, as an independent coder, you don’t need to subscribe to or practice any one style. In fact, sometimes a process can be rigid and get in the way of practical coding. Understanding some characteristics of mind can help you be more productive. You have more flexibility when working alone or in an informal environment with a few others.

As a reluctant coder, make a clear plan of how to build your app. Consider how the code might have to change with changing circumstances. Assume those changes will take place before you are ready for it. Revise the plan to include those changes, and you have saved yourself many headaches.

Another important way to keep coding in check is to make unit tests of each procedure. Some suggest to make all the tests first, but that’s only helpful if you already know all the coding you need to do. It’s quite useful to test each procedure as you write. By creating code that tests your code, you are passing some fast mind processes to the computer. Passing unit tests is a way to verify that you are making progress. The tests help catch errors that could otherwise waste a great deal of time in debugging later. You may find that your confidence in your app improves as code passes an increasing number of tests. With a little practice, you will find that being a reluctant coder results in more useful code and less coding.