← Back to writing

Overcoming "Builder’s Guilt"

I have felt guilty as a programmer for a long time. The source of this guilt? I haven’t spent my days building my own custom tools from scratch. For years, I believed that relying on off-the-shelf software was a sign of weakness—that a “true” programmer would simply code their way out of every inconvenience.

But recently, while reading the book Digital Zettelkasten: Principles, Methods, & Examples, I had a fantastic realization that completely shifted my mindset.

I picked up the book because I was facing a massive challenge: I need to absorb a tremendous amount of complex knowledge. Between tackling the rigorous OSSU computer science curriculum, diving deep into AI, and studying finance and English, my cognitive load was maxed out. I evaluated my study workflow and found myself juggling Anki, Logseq, draft paper, Cornell Notes, distraction ledgers, and an AI workflow. I needed to figure out how to elegantly link the notes in my apps with the thoughts in my mind.

However, I immediately hit a roadblock: the English in the book was a bit too difficult for my current reading level. As a developer, my instinct gave me two options. The first was simple: find an existing tool to translate the book into a bilingual version. The second was the classic “programmer style” route: fire up my editor, use my favorite programming languages, integrate APIs from Stitch, Gemini, or Claude Code, and build a bespoke translation tool myself.

I chose the easier route and found an existing tool. Immediately, the self-blame crept in. I felt like I was cheating my profession. But I realized that this guilt was completely misplaced. Every hour I might spend building a makeshift translation app is an hour stolen from mastering Rust, diving into systems programming, and advancing through my actual computer science goals.

Think about the TV documentary Animal World. When a species faces an environmental challenge, individuals don’t all take the same evolutionary path. Some fish adapted to walk on land, while others evolved to dive into the darkest depths of the sea.

Humanity is similar, and our greatest evolutionary advantage is our ability to use tools. In our highly competitive tech landscape, some engineers will choose to invent entirely new frameworks and build tools from scratch. Others will choose to aggressively find, adapt, and optimize the best existing tools so they can focus their brainpower on higher-level problem-solving. Both are valid paths to success.

Therefore, I am dropping the “builder’s guilt.” We don’t need to build a project from scratch to satisfy every minor demand. Sometimes, the ultimate programmer move is knowing when not to write code.