Best habits for a solo developer


20 January 2020

I'm a fan of habit-based workflows over goal-setting. Goals create multiple motivational and emotional problems:

  • anxiety: "I'm failing at my goal! Must distract myself from this anxiety by procrastinating."
  • depression: "This goal is too big, I will never make it... Might as well distract myself from this sadness by procrastinating."
  • anger: "I have achieved the goal but have not received the expected reward! I'm done with goals in this area!"
  • ennui: "I have achieved the goal and somehow I feel disappointed... What goal will finally give me satisfaction?"
  • confusion: "I have achieved the goal and I don't know what next."

Meanwhile, a habit requires only that I show up and practice it, without overthinking. Goals get accomplished as a side-effect if I select the right habits.

"Here's a billion dollar question for you, then, Jane," you might say. "What are some positive habits for a solo developer?"

Ensure your body and mind will be able to keep up

Physical exercise and meditation are great ways to start the day. Exercise balances out sitting at the desk all day. Meditation helps your mind prepare for long periods of concentration, and gives you time to recover from stressful daily busyness.

I'm a recent convert to physical exercise that trains posture muscles (yoga, pilates, etc.) It helps with problems common among engineers: back pain, hunched shoulders, forward head, and anterior pelvic tilt (a condition which makes you look like you have a permanent beer gut; you get this if you sit a lot.)

When I work out at home, I use the Down Dog app as my coach. Every session consists of a customised video with poses that seamlessly flow into each other, accompanied by detailed instructions. There is a a free version for beginners too. The only thing you need to buy is a mat, and maybe some anti-slip sports gloves.

I've previously written about meditation. It has improved my ability to recognise and resist distractions. I would recommend to make it a part of your morning routine.

Meditation classes will teach you how to sit in the correct posture, so that you don't start aching after 10 minutes. Teachers will also give tips and explain things not covered thoroughly by books. Also, when meditating in a room full of people I feel like I am physically resonating with other class participants and my concentration is greatly amplified.

For meditation at home, I use Ensō meditation timer app. I sit on a meditation bench placed on a yoga mat (and sometimes an extra cushion) to protect my knees.

Meet new people, hang out with friends

Yes, I know the article is about habits of a solo coder. The "solo" part is a disadvantage. Regular human interaction is necessary for your mental health

  • which makes it as important as exercise and meditation.

Humans scale through relationships. The more people you know, and the deeper relationships you have with them, the more support, knowledge, news, feedback, opportunities and challenges you will receive.

A network really means "friends or acquaintances who will do you a service you when you need it." That's it, that's the definition. So networking is about meeting new people, strengthening existing relationships, and helping others. You don't need business cards for that.

Instead, join a fun club, meetup, or gym class to meet new people on a regular schedule and keep your small talk skills functional. At the same time, make sure to organise hangouts with your existing friends, so that you spend quality time together and deepen your friendship.

I recommend Monica as a great tool to organise your relationships. It has a free plan, low subscription, and a forever-free-open-source version (if you want to host it yourself to make sure your contacts never end up in the cloud.)

If you're an introvert, you might benefit from finding an online community first (Slack, irc, Discord, Twitter, Mastodon, Facebook group, forums, blogs.) Social media sites are a great way to get used to a new group, showcase your work and get feedback, help others and get help. Social media and face-to-face interaction are complementary approaches, and you should engage in both. Start with the one you're more comfortable with, but don't stop there.

Introduce accountability

As we are living in an attention economy, businesses have started optimising their websites, apps, videos and so on for engagement (addictiveness). It is now very easy to sit down "just for a minute" and wake up an hour later, bored yet mentally tired. I’m assuming you want to use your time to the fullest. You will benefit from knowing how you spend it.

Qbserve, a time tracker, logs what I do on my laptop. I like it because of:

  • flexible activity categorisation that works out of the box
  • great UI, developed with an eye for motivating the user
    • the red/blue/green "productive time %" indicator in menu bar is a greatgamification feature (I challenge myself to keep it blue/green)
    • the "open eye" on in its taskbar icon when it's active, "eyes" apparentlyencourage you to stick to commitments
  • it stores all the data on my laptop only (privacy!)
  • free trial, one-time purchase

I use it in conjunction with Beeminder, a habit tracker app that charges me an increasing amount of money every time I miss a commitment. I also make some of my Beeminder trackers public, in order to put two currencies at stake (money and reputation.) It's a mind hack: humans are motivated by loss more than by potential gain.

Here is what I like about Beeminder:

  • public (and private) commitments
  • scaling financial pledges
  • many ways to measure progress
  • akrasia protection (you can't scale commitment down a day before you miss it)
  • you can schedule holidays (must schedule them ahead of time; see: akrasia protection)
  • free mode is perfectly usable; you don't have to have a subscription

Beeminder integrates with lots of other services, allowing you to track things automatically (this includes: Github, IFTTT, Apple Health and others.) For example, Ensō and Down Dog apps, mentioned above, sync with Apple Health.

Start with minimal commitment and pace yourself

For every habit (yoga, meditation, hanging out) you want to determine a minimal commitment level. A minimal commitment level:

  • doesn't "do" anything (doesn't trigger your "achievement" anxiety)
  • is easy to do pretty much anytime
  • causes you to think "eh, might as well..."

For example: want to pick up yoga? Your minimal commitment is to roll out a mat and change into gym clothes. (You'll find yourself thinking "eh, might as well do some stretches then." The crucial point is you don't have to.)

Once you're comfortable with minimal commitment, scale it up every so slightly, but only to the point where you're comfortable you will continue hitting the target. It is unintuitive, but never challenge yourself with commitments.

At this point, is important to talk about handling breaks in your habit. Breaks will happen, not through lack of willpower, but through life. Sickness, holidays, business trips can all interfere. After each break, roll back to your minimal commitment.

You want to achieve a steady pace that you can keep up all day, not a sprint that will peter out after 100 meters. Turtle rather than hare.

For daily, continuous work (like coding), I like using the Pomodoro technique. Pomodoro is great for ensuring you take mental and physical breaks. 25 minutes of work, 5 minutes break. Repeat x4, then take a longer break of 15-30 minutes.

This is how my Beeminder / Qbserve integration looks like:

  1. Qbserve triggers alerts after every 25 minutes spent on "reference andlearning" on a given day.
  2. The alert sends a value of "30" (minutes) to an IFTTT webhook.
  3. The IFTTT webhook updates a Beeminder tracker.

(If you're mostly interested in pacing yourself with Pomodoros, rather than detailed activity tracking, it's worth mentioning TimeOut which can run script actions, and also includes micro-breaks that remind you to rest your eyes.)

Set up your workspace to facilitate the habits

In order to show up, it is important to set up the environment such that it is easy to engage in the selected habits by default. You're working with momentum here: rather than stepping on a brakes in a running car, you steer the car towards an incline, such that it rolls to a halt on its own. As in martial arts, it's always better to have the opponent or environment do the work for you. Here are some examples of how I do it:

  • I have a bag with exercise clothes. I re-pack it with fresh ones immediatelyafter finishing morning exercise.
  • I leave the rolled-up yoga mat blocking the armchair (in which I normally sitwith my laptop), such that I can't sit without picking it up.
  • I minimize or close all windows which are not related to my current task,so that I can't CMD-TAB to a distraction accidentally.
  • I use a time tracker program with a highly visible indicator ofproductive/unproductive time spent ratio.
  • I leave books that I want to read on the sofa.

Additionally, I would suggest you rent a desk at a coworking space. (Other alternatives include joining a members' club, or getting a membership in an institution with a member's room.) It will guarantee a daily exercise of your social skills and provide an opportunity for serendipitous connections.

Summary

  1. choose habits, not goals
  2. exercise your body and mind
    • yoga
    • meditation
  3. schedule regular human contact
    • meet new people
    • hang out with existing friends
  4. track what you do
  5. put something of value at stake
    • money
    • reputation
  6. pace yourself
    • start with minimal commitment
    • after breaks always scale back to minimal commitment
    • work in Pomodoro time chunks
  7. set up your environment to facilitate the habits
    • rent a desk at a coworking space
    • prepare space and equipment to exercise every morning
    • prepare space and equipment to meditate every morning
    • optionally, sign up for meditation and/or yoga classes

For the best book on building habits, read "Atomic Habits" by James Clear (or start with free articles on his blog.)

Apps and resources

These are my personal recommendations, which I selected after trying out several alternatives.

Tags: grok mind habits