Software have a poor image due to lack of perfectionists in the software industry. Buggy software are happily released. Correct software are very hard to build. I wonder how many have ever existed.
I don't think endemic poor software quality is about "lack of perfectionists." It's mostly about perfectly rational cost/benefit analysis. A lot of software is valuable for reasons other than code quality (e.g. network effects). In this case it makes complete sense that businesses would rather be first to market than produce something of the highest technical quality.
There are other issues at play, of course. In cases where quality and business profitability are strongly aligned - think avionics - then there is plenty of high quality software.
> It's mostly about perfectly rational cost/benefit analysis.
I disagree.
Looks at any exploit database. A large percentage of the exploits on any typical day are the sorts of mistakes that a well-educated developer wouldn't make, or that best practices and modern tooling would prevent.
That's not even a cost/benefit problem, because in many cases there's no additional cost to doing things the right way. It's a culture and education problem[1].
[1] by which I do not mean traditional university education, fwiw.
At the risk of splitting hairs... there are costs associated with finding developers who have this education and/or fostering a company culture where security best practices are important.
If software companies were seriously punished for compromising PII, then I imagine we'd see a change.
Maybe engineers are making a rational cost/benefit analysis too. In that perfectionism doesn't pay more or lead to promotion. Actually it can be harmful to call things out in a corporate environment.
Buggy (and bloated by extension) software never has my money at least. I never trust, for example, my battery life and my mobile traffic to software houses that are not exactly perfectionist.
Perfectionism should become a skill, not just a characteristic.
One of the consequences of that being tons of cheap disposable software jobs everywhere, crappy recruitment process, good engineers literally drowning in the sea of the above.
No kidding. Just ask the Japanese - They were known for going through their software with a fine-tooth comb before releasing, but they started to realize how far behind the Americans they were (and arguably still are).