> Second, you will always have a competitor with more experienced engineers and a better choice of tools that they'll beat you at least at quality if nothing else.
Software development is always about trade-offs. You can churn out way more features if you don't need to take quality into account. I would welcome any competitor in my field who is super focused on quality, since they will waste a lot of time and money that could better be spent elsewhere.
For example, I'm not going to make some code bug-free, when there is a 50% chance that that feature will end up in the wastebasket 2 months later.
Besides, you talk about unforgivable bugs, but what are they to your early adopters anyway? I had users lose half a day of work because the save crashed right in the middle of it. They weren't even angry. They said is was inconvenient and just remade the whole thing. When I fixed it they were happy. They are still users now. That's how "unforgivable" these are to early adopters.
So yeah, don't forget one of the bigger companies had a "Move fast and break things" policy. In the end it's the market that decides. And according to my experience, early adopters are super forgiving.
> Software development is always about trade-offs. You can churn out way more features if you don't need to take quality into account.
I believe that the curves are different. In the short term, just-do-it coding absolutely moves faster. Sustainable practices cost noticeably more visible effort per unit of value created. However the cost of rework eventually catches up with just-do-it and the net value-per-time drops below sustainable practice.
I've seen different anecdotal statements of when those lines cross. I see it as happening within a few weeks, I've heard others say 3-4, some say months, up to 1 or 2 years; I expect these variations are due to many factors. In the most recent codebase where I deliberately prototyped without careful practices became bogged down in about 2 weeks.
While I do agree with the higher-level discussion that software quality is not the only factor affecting market success, I don't believe that it is always advantageous to sacrifice quality on the theory that it will be faster. Success takes longer than most people expect. Setting up a dichotomy between success-needs-quality and success-needs-speed just leads to a kind of stalemate where artillery barrages of anecdotes are exchanged from entrenched opinions.
I was talking about the quality of the product, not the code. Sorry if that was not clear. You need to keep your code clean and simple, that is for sure. But this doesn't mean there will be no bugs in there.
So you can still move fast, have clean code, and end up with some nasty bugs.
>You can churn out way more features if you don't need to take quality into account.
Creating quality code should not be at the expense of extra features. Just hire more competent, experienced engineers and there will be no need to sacrifice one for the other.
Quality is a function of experience and skill, it is not (or should not be) a function of development time.
Software development is always about trade-offs. You can churn out way more features if you don't need to take quality into account. I would welcome any competitor in my field who is super focused on quality, since they will waste a lot of time and money that could better be spent elsewhere.
For example, I'm not going to make some code bug-free, when there is a 50% chance that that feature will end up in the wastebasket 2 months later.
Besides, you talk about unforgivable bugs, but what are they to your early adopters anyway? I had users lose half a day of work because the save crashed right in the middle of it. They weren't even angry. They said is was inconvenient and just remade the whole thing. When I fixed it they were happy. They are still users now. That's how "unforgivable" these are to early adopters.
So yeah, don't forget one of the bigger companies had a "Move fast and break things" policy. In the end it's the market that decides. And according to my experience, early adopters are super forgiving.