James Dunne

Thoughts on software development

05 Apr 2023

The real "must have" tools for programmers

Forget programs. The most important productivity tool for programming is your mind. And the next best set of software development tools are ones that take care of you.

It isn’t about Git. Or Docker. Or testing frameworks. These are all useful tools. I use them daily. But they are not the most important software development tools.

Your wellbeing is, in fact, the most important factor in your ability to write good software. And the most important programming tools are anything that improves your wellbeing.

You are a problem solver. You are in the business of solving problems. You use software as a medium of expressing solutions but before code comes thought. The clearer you think, the better your productivity.

The best productivity tools for software developers

In no particular order, the best tools for taking care of your mind are:

  1. Quality sleep
  2. Hydration
  3. Exercise
  4. Family and social time
  5. Notebook and pen

How a good nights sleep makes you a better programmer

Quality sleep is your most important programming tool.

Sleep deprivation destroys your ability to solve problems. During sleep, your brain restructures and reorganises information, creating links between unrelated ideas. This leads to new, creative ideas that you use in your day to day to solve problems and write better software.

In fact, you can use sleep as a problem solving tool itself. Ever waxed a day struggling with a problem? Sleep on it. You will notice that either you have a solution or you will make progress towards the solution.

None other than Thomas Edison himself used this sleep technique.

Whenever Edison struggled with a problem, he would take a plate and a marble. He’d take them over to his sofa and lay down for a nap. He’d lay the plate on the floor. He’d keep marble in his hand, hanging over the plate. Once he dropped off to sleep, the marble would fall and clatter on the plate. And he would wake up with an idea.

Like Edison, you could do this too. Or you could get a good 8-hours in. Either way, quality sleep is one of the best tools for programmers you can get.

How staying hydrated keeps you sharp

Next on the list is hydration. Dehydration can wipe out any boost in cognitive performance from a good nights sleep.

Being 2% dehydrated can impair your performance in tasks that use your attention.

Programming is 100% about problem solving. And good problem solving means good clear thinking. Keeping yourself well hydrated is key to better code. Thus, good hydration is a must-have dev tool.

How a short walk can make you a better programmer

Look, I’m not the fittest of the bunch. I’m far too overweight and I eat far too much. So this isn’t a lecture about that.

You don’t need to hit the gym everyday (but I’m sure that would help - I wouldn’t know…). But if you’re struggling with a problem, a short walk is a problem-solving power tool.

Albert Einstein and Darwin swore by this technique. At Princeton, Einstein trekked a mile and a half there and back. Darwin would take three walks every day.

Why you should invest in your family and social life

This one is less about having a direct impact on your problem solving skills. Staying in the office late won’t immediately wipe out your ability to solve problems. In fact, a few days won’t.

But after months or years? The stress from:

  • A divorce or bad breakup will make it harder to solve problems.
  • A parent or grandparent passing away will make it harder to solve problems. Especially if you are guilty that you should have spent more time with them.
  • A child with issues stemming from a non-present parent will make it harder to solve problems.

If you have none of the above… you may find you have no social life with which to unwind. Building a social life gets harder as you get older.

Invest in your family and social time. These relationships are forever - your job isn’t. That investment will pay dividends in your ability to solve problems. Family and social time is one of the most effective programming tools in your belt.

How a notebook and pen is your most valuable tool

A notebook and pen is one my favourite programming productivity tools. It gets your eyes away from a computer screen. It gives you a blank space to focus on solving problems. You are free to draw, doodle, write long-form and write bullets and play with a problem in a way you can’t with a keyboard.

But if you prefer typing, that’s okay. Using Obsidian or Notion is useful when solving problems. Even better if your notes sync across devices. If you get a thought whilst on the move, you can get it out of your head and written down.

The main benefits are:

  1. Getting away from distractions
  2. Getting away from your IDE
  3. Getting into a pure form of problem solving, using only mind and words

Your notebook will become one of the most valuable programming tools you own. As you write more into it, its value will grow over time. Marnix Klooster, posting on the C2 wiki, described it as one of the best changes they had made that year.

Summing up

Tools like version control, editors and type checkers all have their place. But these tools are only ever as good as how well you use them. Your wellbeing dictates how well you use them.

The most important software development tools are away from the computer. And they all serve to boost your wellbeing and mental sharpness.