My hammer is code

You know the phrase “To a man with a hammer, every problem looks like a nail”?

Well, I’m pretty sure my hammer is code. Any time I run into a major problem or small inconvenience, my first thought is: “Can I build an app for that?”

That may sound like a good thing, but sometimes it gets me in trouble.

For example, in my early years as a freelancer, one of my clients needed a basic blog. Rather than doing the sane thing and just putting them on WordPress, I built them a whole freaking custom Rails app.

In order to add a new blog post, they had to email me the content, which I had to go through manually putting HTML tags everywhere so that it would be a valid ERB file, then include it as one of the views on the site. It was such a wasteful solution, it cost my client a lot of wasted time and money, and I still regret it to this day.

I have a hunch that most issues can be 80% solved with an existing solution or even just a plaintext file or a spreadsheet. And yet the temptation to overengineer everything is constantly there.

If I do a little introspection, I can see that part of that temptation to overengineer comes from my ego.

Putting in the hard work to make a custom app makes me feel like what I’ve created is special and valuable enough to share or charge money for.

If I imagine myself launching, for example, a paid Notion template, my inner critic pipes up:

“Wow, another notion template?”
“Lazy and unoriginal.”
“You can code, you’re better than this.”
“Anyone can do that.”

My ego hates that. It wants me to do something unique and impressive, so that no one can criticize me like that.

Meanwhile, some people are making a meaningful, ethical living for themselves simply selling Notion templates. And they are probably super happy that they don’t have to deal with all the complications of building and maintaining custom web apps.

It’s time for me to challenge my ego on this. To expose it to the discomfort of doing something that can be considered “beneath” my abilities as a programmer, and which might be considered dreadfully unimpressive by many of my software engineering peers.

And this is partly out of necessity. I’m working a full-time job, and I simply don’t have time to waste. If I want to build something on the side, it’s going to have to be a weekend project. So if I want to ship fast and often, I’ll need to aggressively simplify and scope down the work.

Wish me luck.

I might send a newsletter sometime.