A few weeks ago I moved my notes from a proprietary app to plain text files and wrote a set of scripts to improve my note-taking workflow. I spent several evenings rewriting my Linux server setup tool. Previously, I built a web app that converts Kindle highlights to Markdown. Now, I'm in the middle of rebuilding this website using a custom static site generator.
Combined, these projects took a sizable chunk of my time. None of them is particularly impressive or challenging. Most offer no practical utility for anyone but myself. I can't even pinpoint a specific thing I learned. I could've simply picked an existing tool and gotten on with my day. In many ways, it was a waste of effort and I often ask myself if this is the most efficient way for me to spend my time.
That said, I believe these seemingly trivial projects should be an essential part of your creative life. If you build software for a living, no matter how satisfying your job is, you will rarely work on problems you personally identify with. Most of your energy will be spent on mentally engaging but abstract business puzzles. There's nothing wrong with that per se, but using your skills to solve your own problems or annoyances offers a different level of enjoyment and satisfaction.
Ideas for personal projects hide in plain sight, but as you grow older, they become increasingly difficult to notice and justify. Tackling an obscure issue nobody else cares about may not seem to be inherently valuable (sometimes it won't be), but even the simplest project will inevitably spawn a series of questions. Attempts to answer them will often lead you down the rabbit hole of exploration and the result may be different from what you originally set out to do — but it won't be obvious right away. My mini side-business began as a collection of shell scripts. At the time, I was trying to improve my photo editing skills and spent countless hours tinkering with
exiftool, trying to reverse-engineer other people's photos. It took a while until it occurred to me that I could turn these scripts into a web app and share it publicly. With hindsight, it's a no-brainer.
The vast majority of my projects never reach this level of maturity. Only a fraction of them are even worth mentioning. Still, it's impossible to know which ones will resonate until you put them out there. You can only connect the dots looking backwards, so go ahead, build a note-taking app, a personal CMS, a family photo album, a shell script for your dotfiles. Pick something that is widely regarded as a solved problem, but can never be fully generalized to match your specific needs, preferences or workflow. It doesn't matter if you finish it, but if you do, share it with the world. Even if it goes unnoticed, one day it might spark a bigger idea in someone else's mind. Keeping your work private leaves no room for serendipity.
Remember that the whole internet is pieced together from an infinite number of tiny insignificant projects, so if you ever feel uninspired or unmotivated, just start working on something small, build up the momentum and see where it takes you.