I think what might be hindering my ability to publish a popular product is that I end up being too perfectionist.
For instance, I wanted to make a program that showed an image downloaded from an URL.
Now, instead of just showing it, I decided that I needed to store it so that I didn’t download it every time. Then I realized that two images with the same name would end up overwriting each other so I added a number N if the image of number N-1 already existed, then I realized that adding a number would hinder the user from using that file(because the extension gets modified)… you can see? It’s not that I’m doing things that are not needed, a decent program does everything I just stated, but given that I have only one employee(myself) I should focus on that later.
This is a generalization of that “design first” principle. Do the FUN stuff first. Do the rest later. There is a trade-off, obviously, if you do the FUN stuff first you end up without backwards compatibility. A small price to pay perhaps?