How to stop thinking about code after work

Being a developer could be one of the most mentally exhausting professions.

Non-devs just can’t appreciate the multiverse fractals we have to bootload into our mind and traverse while at our desks every day.

The thing is, once the engine gets going, it becomes difficult to shut off.

You can find yourself incessantly traversing the code-paths on your way home from work, while you’re walking the dog, and even while lying in bed preventing you from getting your much-needed beauty rest.

Sometimes staying in this state can help us solve a hard problem or come up with an elegant solution, but most of the time you’d like to actually have a life and let after-work be filled exclusively with after-work stuff.

No one likes to be the guy that yells at their significant other because they used the word or when they meant and because you’re steeping in an apathetic wasteland of logic.

So how do we disconnect and leave the code at work where it belongs?

For me, after work means playing with my dog, writing these articles, going to electronic dance music shows, and learning about business and marketing so I can one day pay off my student loans and work for myself.

Because I care about these hobbies and goals, I can’t afford to lose time by bringing my work home with me, so I’ve developed a technique to help me let go when the work day is over.

This technique is also useful if you work remotely. Remote devs suffer this perpetual codemind state too since we lack that environmental context shift that takes place when you get to physically leave a workplace and enter your home after work.

How having a daily “Personal Standup” can help you stop thinking about code after work

The informal strategy I like to use is called a “Personal Standup”.

You’re most likely familiar with the morning meetings that dev teams use nowadays, sometimes called scrum, kanban, or daily standups.

A time when your team briefly discusses current tasks and any impediments blocking progress so you can resolve them and keep development moving forward.

A little bit before or after this meeting I host my own personal standup using my trusty todo.md markdown file.

I am a big fan of organizing your life and goals using the same sort of conveyor belt of tasks used on a kanban or scrum board, and although I love task management tools like Trello, Pep, or LeanKit, I have found that for this micro-sized, single day personal standup, using a basic markdown file in a lightweight text editor works best.

It’s simple, fast, and I don’t need an internet connection to use it.

My todo.md can sometimes grow to include multiple lists like:

  • ## Notes for note taking while writing code for a new feature.
  • ## Comments/Questions For Standup to remind myself of things I need to bring up at the next team standup.
  • ## General TODO list that holds high level tasks that haven’t been broken down into the smaller can-be-done-in-a-single-day style of task that are the highlight of this article.

TODAY

The most useful section of my todo.md is the ## TODAY section.

It is this section that helps me to mentally map out how my day will begin, but most importantly, how it will end.

Every day I make a clear list of specific tasks, usually based on what I’m supposed to be working on at the higher team level.

If I’m assigned to work on a feature that allows a user to add a profile picture, for example, I will choose a set of subtasks that I believe I can reasonably fully complete in a single day.

That could look something like:

## TODAY

- add image column to user table in db
- add supporting get/save methods with caching
- add button to profile screen that opens file picker
- add a call to save image in `SaveProfile()` method.

To make things as easy as possible to get started, I’ve put created a downloadable todo.md that is exactly like the one I use, except that I’ve added a few additional notes and tips on it.

Get it below using your email.

You’ll also get my future articles but you can unsubscribe any time.

Start having your own Personal Standups by adding this todo.md to your desktop.

Managing the list

Your list could shift around a bit as you work and realize pre-requisite tasks must come first, but it’s important you do your best to keep it complete-able within the same day. We’ll talk about what to do with tasks you don’t complete in a moment, but I’ve found this technique works best when you set and maintain a stable and achievable amount of work.

I’ve found if I let my list grow, I’ll get overeager and try to push myself, that’s when I get into situations where shutting down after work is much more difficult.

Combine that with the delicious dark magic of coffee and I’ll be spun out like the Tasmanian Devil well into the evening.

Set your tasks, maybe even slightly under what you think you can do, and don’t let it grow.

When the day is done

As you work, be sure to mark items as DONE.

Don’t delete them though. They stay as visual aids so we know what we’ve accomplished and can reference them if we need to tomorrow. I like to just put word DONE in front of the item like:

## TODAY

DONE - add image column to user table in db
DONE - add supporting get/save methods with caching
- add button to profile screen that opens file picker
- add a call to save image in `SaveProfile()` method.

Once the work day is over, I will do a couple things to truly disconnect.

This is where the true magic begins.

The Cherry-On-Top Task

If all my tasks are marked as done, this is a good place to be in.

If they aren’t all done, I will simply move them from the ## TODAY list into a ## TOMORROW list so that all of the items for today are marked as done.

Marking that last task as done allows me to feel mentally resolved for the day.

I will sometimes even add a last minute cherry-on-top task that I can complete quickly and mark as done, just so I can get the feeling of that final task end-of-day resolution.

It might sound silly, but I mentally tell myself “Okay Joe, work is complete. Great job!”

I recognize the work I’ve done for the day as a solid day’s work and give myself permission to close up shop.

Physically closing my laptop or closing all the apps can help as well. The point is to create a vivid context switch from work-mode into after-work mode.

That’s it!

Having a personal standup will not only help you disconnect and get on with your life after work, it has the added benefit of keeping you productive during work too.

Even after all this, you still might have code-thoughts bubbling up. That’s where techniques like mindfulness and meditation can allow you to catch yourself before you lose yourself.

Keeping your ## TODAY section small and achievable, marking items as done, and maybe even using a cherry-on-top task will go a long way towards providing you with the resolution that we as developers need to in order to call the day DONE.

Psssst! Know anyone who might want to read this?