I caught up with Doug Finke in New York a few months ago and had a really interesting conversation about many different product ideas. One of the ideas we stumbled onto, when discussing products, is an idea that is really empowering when you start to take it on board. I'll summarize it in two different ways.
Firstly, the Zefram Cochrane version:
"Don't try to be a 'great' product creator. Just be a product creator, and let history decide for itself."
And in the terms that Doug and I discussed:
When making your own products, don't be a "completionist". A completionist is someone who must take care of every possible detail, must think of every use case, must consider every angle. Completionism is the death of products!
A completionist will think: do I need this feature? Well I need features, and this is a feature, so yes, I do need this feature!
A completionist will think: should I document this feature? I must document all of my features.
A completionist will think: should I ensure my feature is covered by unit tests? I must cover all of my code with unit tests. I cannot possibly ship without 100% unit test coverage on all of these crappy features I felt psychologically compelled to include.
A completionist will think: do I care about this potential user group? I must attract all possible user groups, so yes, I must tailor my application to suit this group as well. It would be leaving money-on-the-table not to!
This is the difference between a day-job as a programmer and a night-job as a humble product creator. In your day job you probably work with huge companies, where each small detail must be done correctly and completely. Your completionist attitude is constantly rewarded.
But in your night job, as a humble product creator, you must throw off the shackles of the big company attitude. You must be lean and scrappy and UTTERLY cost effective.