Re: The little voice...
I agree there has been a distinct reduction in quality not just in software, but in almost every sphere of human endeavour.
When I went to Uni I deliberately chose specifically a Software Engineering degree believing that the industry would inevitably be forced to take up engineering principles and apply decent design methodologies in order to produce quality code. Especially considering how much of our lives were going to be increasingly dominated by software.
Sadly exactly the opposite happened.
People bandy around the term Engineer, without any professional Engineering qualifications
Companies consider design up front to be an expensive luxury they can't afford.
I was employed by a chemical engineering software company whose products were used to design & build huge, safety critical, chemical and petrochemical processing sites. Assuming their engineering principles would extend to the tools they use to build these things. Sadly I was much mistaken.
On my first day I had a 5 minute chat with my manager & we did a bit of white boarding for my first task in his office. What I didn't realise was the two sentences I came out of that meeting with was actually his idea of a design spec for the project which was intended to take 6 months of coding.
Before the end of day he wanted to know why I hadn't written any code yet!
This department used to pretty much rewrite applications from scratch when they wanted to add some functionality. Sometimes because the application had been written in a way that it was impossible to extend and sometimes because the code was so cryptic no-one could untangle it.
Once I was allowed to lead the dev team I would assign 3 of the 6 months for requirements & design. We never rewrote another piece of software, we frequently would implement functionality given 6 months by management, in 6 weeks. Simply because it was designed to be extendible and also because the extensive requirements spec would also give major clues to the next several years of developments.
If it is done correctly engineered software can massively reduce development, time, costs and ongoing maintenance costs.
In the years since I find most developers I have encountered, still don't believe that to be true & management are much, much harder to convince.
These days people seem to forget that there are a number of development methodologies available (if they use any at all). Often though these are just box ticking exercises.
Another thing I encountered more recently was management insisting we use Agile, even in completely inappropriate situations. It really isn't necessary if you \re building an application for which all the functionality is known at the start.
If we built buildings, bridges, cars, planes or chemical plants the same way we build software, civilisation would collapse (and explode, plummet, crumble etc...)
As we rely more and more on software to control our lives we really should be trying to find ways to re-introduce some quality into its production. Sadly I have lost all faith that that will ever happen.