| I've also struggled with this, and I'm not sure there's a silver bullet answer. But I think a lot of the common advice (too simple to work!) is actually helpful: - Limit scope As much as you think 'no one will use this without XYZ feature'; no one will definitely use it without it existing at all. Just make the basic functioning product and see below: - Get real users using it early (release early) Having real users (perhaps even paying users) using my project, relying on me for fixes/updates, seems to be a nice kick-in-the-pants to fix/work on the project. Even with minimal users or zero-revenue, having that feedback that someone finds what you're doing useful rather than coding into a void is really motivating. - Build something for yourself If you need/want to use it, you'll continue to work and improve the project to suit your needs. Theres some additional work likely to make it available for others to use, but if you're using the product yourself often - perhaps thats motivation to see how others could benefit from it as well. Also realize - it's never 'finished'. If it's a project that you either (a) enjoy working on or (b) actually has users, there will always be more to do. So embrace that and find (a) or (b) early. |
It’s true that a product is never finished, there is always something else to add or take away. A project should have a definition of done, there should be a clearly defined point at which the project is finished. Some measurable points that once you reach them, you can say it’s over.