Since I started with software development years ago I was taught that quality matters the most. All those software development processes focused on achieving the best quality for the least of bucks. You were taught that everything you do should be designed, tested, and so on. I believed in that. I believed that that's the best way to do. I believed that to be successful software developer I should create good code. Code that shines. With good design, tests, etc. Then after few years of me trying to be better and better I somehow managed to read a few articles that changed my way of thinking - the worse is better, there's no such thing as perfect solution and you should stop thinking about it, the good is enough - if it works that's great, don't optimize it's not worth it (before you really, really are forced to). When I thought about it then I realized that's true, you can't push yourself too far into quality because you'll lose.
But now I think I realize that still I'm focusing too much on quality ;-) When reading all those stories from entrepreneurs or talking with guys that succeeded you can see that in the early days their mindset was "do something, let it work, push it through the doors, then gather feedback and improve". Don't waste time on beautifying your code, don't waste time on sophisticated design. If you want to succeed you need to have something working (with bugs, bad design, even crashing from time to time) - here's the selling point - it should do something useful for customers and ease their life. If it brakes from time to time, or isn't so fast, or has some other problems - as long as shortcomings don't overshadow improvements your software brings you're still in the zone, you still have customers and you still have time to improve. Just listen to people - you'll notice how they react, if they have any problems react - fast and efficient.
OK, you'll argue that this way you end up with some big, badly designed application that will be hard to maintain. You can also argue that doing everything good way from the beginning is cheaper than fixing it later. Sure, it's is cheaper but no one will give you money for something that's beautifully designed and implemented as long as it doesn't bring value to the customer. The thing is that I start to think now that I still put too much into the quality. I have this habit of refactoring things until I'm satisfied. I see bad design and can't stand it. I have an urge felling to fix it. That's a bad mindset. I'm trying to get rid of it and hopefully I'll succeed.
All those 'quality people' ask you "how much do you want to spend on quality?", "do you want to pay less or more to achieve quality?", they tell that getting things right for the first time is the best option you have.
I'm asking you "is it really?", "do you really care about quality?", "do you really give a sh*t how much do you pay for quality as long as you have money to spend on it (and you have still a lot money for other things)?" ;-) Of course you do care, but I think you care a lot more about how much money you can get and when. And in case of a startup (either a company or a new product) you want to get as much money as fast as you can in the shortest time you can - because your whole life (OK, life of your company) depends on this. Am I right?
And to be honest every software sucks, every software is a nightmare to maintain after a few years and a few generations of developers. Even if you focus on quality someone will have troubles working on it. You can't avoid this, sorry. So knowing this do you want to care about it so much? Just focus on getting money and you'll be fine even if your code sucks :-)
Am I wrong?