As a developer, my most important tools are a pen and a notebook

After I signed my contract to join my new job a month ago, I was so excited. Not only that I would join the company but also because I got to buy a new notebook. The weekend before my first day I headed to the local bookstore and spent a good amount of time browsing through the notebooks available and ended up with this happy orange one.

Why am I so excited about a notebook then?
Because it’s the most important tool I have as a software developer.
When it comes to building software or solving problems, writing code is the necessary bit at the end where we tell the computer what to do but way more important than writing that code is figuring out what code to write.
I learned very early on in my career that I’m not very good at thinking when I’m at a computer. When I have my code editor open, I’m in a “function mode” where I write stuff that does something. When my brain hits that mode, there’s not much creative energies flowing around.
So I often step away from the computer. Sometimes it’s for walks (I tend to work at companies near water features so I’ve used to go for strolls near San Francisco Bay, Spree or the best of them all, Aurajoki) but often I take my notebook and sit on a couch or outside at the patio and ponder.
I might be thinking of initial solutions to new problems (ie. designing how to approach it, drawing UI sketches or flowcharts) or I’m helping myself understand the flow of data and interactions in the current code base to figure out how to fix a bug or add new functionality.
Writing (and sketching) is such a powerful tool for thinking in that. It helps me turn my vague abstract ideas into tangible artefacts through words and drawings. It helps me expose the gaps in my knowledge or understanding because I can’t skip them as easily when writing as I can when just thinking about them.
When I’ve written code, I like to write about it as if I would be explaining it to someone else. Whenever possible, I like to publish them as blog posts as well but even when it’s not possible, writing it that way helps me find inconsistencies, bad designs and even mistakes in my code. I’ve written about how writing is my favourite refactoring tool.
A lovely side benefit of thinking through writing is that it leaves behind a copy of my thoughts and the process of how I reached them. I don’t have to separately go and write notes because my thinking process already created most of them and I usually just reorganise and polish them a bit to make them more useful in the future as well.
That way, if someone asks what I was thinking about when I did X two weeks, six months or two years ago, I can go back to my notes and tell them exactly that. (Spoilers: quite often that someone is me in the future.)
I also have a longer post about how I take work notes as a developer that focuses more on the content of my notes.
If something above resonated with you, let's start a discussion about it! Email me at juhamattisantala at gmail dot com and share your thoughts. In 2025, I want to have more deeper discussions with people from around the world and I'd love if you'd be part of that.