tayip9
If your market is quite crowded and people are making direct comparisons with your competitor, I would suggest taking the distinct advantages you offer, and making them your main selling points (the ones that really really resonate with your customers). Whether its design, UI, features, or some other mix, you want pick an area and fight for it. Losing in other areas is OK but the main focus is winning in your area and winning big.
If your issue is getting noticed, your strategy will be slightly different. It's no longer an issue of competition but one of customers not knowing about you product or service. In this case, I suggest reaching out to blogs, forums, and experts in the field. If you have a nice spin to your product or have something interesting to say, go can sell your story to the media.
If your issue is a bit of both, well, you will need to do a bit of both of the above.
If you are close to finishing, you might as well launch.
Competition means other people see an opportunity in your market too.
Who knows what the results will be? Maybe customers will resonate with your product. Maybe your product can be differentiated by better performance, better usability, or better service. Maybe customer feedback will lead to a pivot. Or maybe your site will lead to other opportunities.
The point is you are almost there. Make the jump and don't look back. If you haven't launched products in the past, the experience alone will be worth it.
If you feel like you're close to product/market fit or if your runway is short on your startup, you might want to continue the way you've been doing things.
On the other hand, as a self-taught programmer, I imagine there are a lot of skills that you can improve on. The danger of writing spaghetti code is you can't reuse it, and if you continue to write spaghetti code, it be becomes a habit. In the long term, your best investment is in yourself. Time spent on getting good at your craft may help you to get your product to market faster.
Also think about how much time you expect to use on revising/debugging old code. If you expect to extend or build on top your code, it is usually worth spending time revising it. I like to believe there are different degrees in quality for code. Spend more time on more vital or core components and less on others.
http://www.youtube.com/watch?v=u6XAPnuFjJc
Passion can be driven by incentives outside of salary.