mutahhir.dev

On the impossibility of finding a good product to build

I’m a big fan of building products.

I love working at companies that are building interesting products that help customers.
I love to come up with ideas that I think can be great products too.
However, I find it impossible to conceptualize a product and build it.
I’ve tried, and tried, and failed, and failed.

I’ve read books on the topic.
I’ve watched YouTube videos that help explain how to start building products.
Books that clarified that building product is not about the ‘idea’.
Videos that told me that bootstrappers should only build B2B products.

I’m an engineer, the software kind.
I don’t want to build a teeny tiny portion of the product.
I’ve done that enough at my day jobs.
I want to build it all.

I am a bit of a romantic at heart when it comes to building product.
On some level, I know that selling the product isn’t what I want to do.
It’s just the building of the product that attracts my imagination.
This is a very recent realization though.
It is one of the many reasons I keep failing in building things I want to build myself.

I start with an interesting idea. One that I fall in love with instantly.
I plan it out, thinking about the features, the software frameworks I’ll need, the domain I want for it.
I’m having a lot of fun doing all that.
Then, at some point during all this fun, there’s a nagging sensation at the back of my brain:

“I need to make this product sell.”

Not an unreasonable idea.
‘Products’ are meant to be sold.

At this point, as a responsible product owner, I’ll pivot from building the ‘interesting parts’, to building the ‘selling parts’.
The thing is, without a proper market validation, I don’t know what to sell.
It’s not like I did some market research before thinking the product was a good idea.
The product seemed like a good idea because a bunch of neurons on my brain fired in a specific way.

I’ll then start doing some market research.
Market validation for me would be googling the exact thing I’m building.
Either I won’t see too many hits on the thing, or I’ll find an existing competitor (funny word to use: competitor. My product is just 100 lines of garbage code that doesn’t compile at this point).

If there’s a competitor, I’ll start adding more features to the product in my head.
That way, I can justify building it anyway.
Sometimes I’ll go full spartan, and decide that my product will only do one hundreth of that competitor’s product.
Because that’ll be cooler.

I used to have an irrational response to competitor products.
I am now elated that someone else is doing exactly what I thought about.
Because there’s obviously a market for it.
Well, maybe. It’s hard to know how big a market is from one competitor’s web page. If there are many competitors, there’s probably a market.

If there’s no competitor, I need to choose the narrative why quickly.
Usually, the story I tell myself follows the general direction of: ‘nobody has thought of this yet!’ I’ve grown enough to now know that a) that’s cow manure, and b) if it’s true, I don’t have the resources, and patience to create a whole market.

Building products is a lot of work, and requires lots of patience.
Something that’s not as apparent when you’re in the throes of a great idea.
When I first start coding, and yes I start coding really early. Because why not.
I think all the things that I want to do will be easy, and each item will take a few hours, max.
And then I hit my first snag.
The new library I was using, because it was the shiniest technology out there, has an issue open for two weeks that prevents it from being used with the latest version of the language.
Or I’ll find out that the two technologies I wanted to use together don’t work together well.
Or everything should work, and I’m still getting this error that I can’t get rid of.
Inevitably, something comes up.
And its death by a thousand papercuts.

Once I’m there, struggling, I start thinking why I even wanted to build this product in the first place.
I start getting real.
I admit to myself that the reasoning was a bit weak.
In my mind’s eye, I had a glorious picture in mind of how the experience would look like, but I never stepped through it in detail to know what it would be like, exactly.
I didn’t plan enough, and am now frustrated because I thought it would be smooth sailing.
Software seldom is, I should know.

I take a break. First, for a few hours.
Then, I decide to come back to this tomorrow.
After that, next week. And so on.

I’ve got gigabytes of npm installed packages sitting around in my hard drive.
They aren’t going to contribute to building my product.
Because the product won’t be built.


Sidenote: This is a bit of a jab at myself for being unreasonable when it comes to coming up with ideas and building things that don’t need building. Some of this might resonate with you if you’re someone like me who wants to build cool stuff. If so, tweet at me and I’d love to laugh together at our mutual folly.

That being said, I have learnt a lot about what to do and what not to do when it comes to product building through the years, and I’ll write more about the more technical / serious aspects of building in later posts.