Life as a developer

Overcome procastination and avoid getting stuck

What if you could get more done and deliver code of better quality by utilizing a few simple techniques? All you need is a timer, and to be willing to step away from the computer and expand your interests.

Procrastination

Everyone deals with some form of procrastination in their daily life, whether it is checking the latest updates on Facebook, binge-watching TV shows or spending all your time by the water cooler. Even if you are writing line after line of code, you are procrastinating if that code does not offer any value; this is sometimes referred to as Bikeshedding or Yak shaving. Twitter is flooded with people procrastinating by complaining about #procrastination – you are not the only one concerned with this.

Fortunately there are techniques that everyone can use to overcome some of this waste. When I work, I try to split my effort into sprints of 25 minutes. What I do is focus all of my attention towards the problem at hand. That means closing the Facebook tab, shutting off notifications on my computer, putting my phone in flight mode, grabbing my noise cancelling headphones and getting in the zone. After a sprint is finished, I usually have something worth checking into git.

This is known as the Pomodoro technique, a method first described by Francesco Cirillo around 1980. There are timers that you can buy, either physicals one from Pomodorotechnique or as an app – just search for Pomodoro in your respective stores. You should also grab this script from Ståle Hansen at his blog. The script puts your computer in presentation mode and set your Lync status to “Pomodoro Focus”. By doing this, you are not only making sure you do not get disturbed, you are also spreading the word about this great technique.

Do not forget to give yourself a small reward after a solid Pomodoro. A reward can be in the form of mindless Internet surfing or getting up for a cup of coffee. Tell your colleagues about it and they will soon follow when they see you pushing commit after commit. Not only does it make you more efficient, I have also found that it reduces the chance of bugs. This is because you do not allow yourself to lose focus when you are doing a Pomodoro. I first heard about this neat trick from Scott Hanselman in his post Productivity vs. Guilt and Self-Loathing.

Barbara Oakley sums up the benefits of the technique very well in the book A Mind For Numbers:

In the Pomodoro-timer systems, the process, which involves simple focused effort, moves to the forefront. You disconnect from being stuck on any one item and can get into a state of automaticity without concerns about having to finish anything.

Focused and diffuse modes of thinking

If you want to get the most out of each Pomodoro sprint, it is important to know how to efficiently deal with problems where the solutions do not offer themselves up easily. As a developer, you often face these kinds of situations, where your brain simply does not want to cooperate. Should you stare intensely at the screen, massage your temples until the problem caves and you have a solution? Alternatively, you could try the same approach repeatedly until you have found a possible solution that seems to work. (This is known as the Einstellung effect.) Both might work, but neither gives the best results and they offer little learning. Sometimes it is best to save the problem for your five-minute Pomodoro break: take a walk, maybe lie down and get in your Alpha mode, or maybe even talk about your problem to your bathtub duck (this is the “rubber ducking” technique).

All of these small tricks are ways to activate your diffuse mode of thinking. Let your focused mode take a break, and engage other parts of your brain to help you get the results you are after. Eureka moments when you wake up in the morning are usually the result of your diffuse mode working subconsciously during the night. Your diffuse mode is not only useful as a last resort on difficult problems or when you are stuck in the Einstellung effect, but can also come in handy when you are trying to learn a new topic. It allows you to see the new material from a big-picture point of view and lets you make connections to related topics.

Transfer of ideas and concepts from one area to another

One piece of advice taken from the book The Pragmatic Programmer is that you should learn a new language each year, and become a polyglot programmer. The reason behind this is that ideas and concepts that you learn in one language can be transferable. This does not only relate to other programming languages, but also languages in general and other topics as well. When you are learning about a topic, chunks of information are stored in your brain. When you fully grasp a certain topic, you can compress information into chunks. A chunk will occupy less space of your precious working memory and free it up to use on other bits of information.

Barbara Oakley further state in A Mind For Numbers

Good chunks form neural patterns that resonate, not only within the subject we’re working in, but with other subjects and areas of our lives. The abstraction helps you transfer ideas from one area to another.

I hope these simple techniques can have the same impact on your productivity that they have had on mine.

Photo credits:

Resources:

goldnarms

Arnstein Johansen is a .NET Developer with a speciality in web development, but he also dabbles in mobile development and everything new and exciting. Arnstein works for Itema AS, a mid-size consultant agency in Trondheim. Itema has 25 consultants and recently won the prize for Norway's best workplace. He likes to share his knowledge by holding talks for others, either it is clients, colleagues or likeminded developers in user groups. He has hands-on experience from large projects, the latest from Urørt where he leads a team of developers creating a music service used by around 100000 users.

One Comment

  1. Pingback: 程序员如何克服拖延症 – 熊耀星博客

Leave a reply