Tips on writing and tips on living

Brandon Sanderson’s tips on writing are incredibly useful for software engineers and applicable to me personally. In particular, thinking about what type of progress you’re signposting is an incredibly useful communication tool and priming your mind is an incredibly useful productivity tool.

Type of progress

To write a novel, Sanderson suggests thinking about the primary type of progress in your novel. For example, in the Lord of the Rings, the characters are making physical progress across the map from the Shire to Mount Doom. You can see Bilbo Baggin and the ring physically make progress. In a romance novel, readers want to see the two characters grow closer.

This sounds like an incredibly important idea to keep in mind when I communicate with my manager. As a software engineer, my managers won’t be reading every code change and document I make to determine my progress. They’ll be reading the tickets and messages I provide to them. Having a consistent, clear, and understandable way to show progress is incredibly important in the process of building and maintaining trust with my manager.

In the teams I’ve been at, choosing the right type of progress is also important. Which sub-goals should we set to fulfill our ultimate goal of making money? Do we want to improve our infrastructure to improve reliability? Do we want to improve our code coverage? Do we want to improve our code coverage number or do we want to make tests that actually ensure our code functions correctly? It’s so easy to get caught up thinking about what’s easy to measure instead of what we actually want to do. But a clear, consistent, and understandable metric is important to communicate internally. It’s a hard problem.

Prime your mind

Sanderson also suggest thinking about your novel when your body is occupied, but your mind is free, so that you can make the best use of the time where you sit down to write. While your mind is free, think about what the next section of your book will be about? What exciting things can happen? How can this scene feel different and interesting? If you do this, by the time you sit down to write, you’ve gone over what you plan on writing several times in your head already. This makes it much easier to write the novel.

I go through a similar process with coding. I think about the steps I’m going to take when I sit down to code. How am I going to verify my assumptions? Is this code easy to run in an interactive environment or will I have to test it in a simulated production environment? Or will I (uh oh!) test in production? Which part of the code will I change? I have no idea which part of the code I’m going to change? How will I find out which part of the code I need to change? Who can I ask? Which parts of the code base might have hints? What can I search? All these questions and thoughts and more go through my head while I’m going to and from work.

Priming my mind for coding has two effects. First, when I sit down to code, it feels good. I make progress quickly and successfully. Second, it whet my appetite for coding. That I have ideas I want to try out and I can’t do anything makes me eager to start coding.