Jeff, I should have made something clear at the outset. I have huge respect for you. (I use SO daily, several times an hour, literally.) This joke did not sit well w/ me, and I reacted. I appreciate your explanations, thank you.
that leaves us with the impossible choice of working with it to implement new features, or forgoing adding new features to rewrite it (and infuriating the business folks)
This where you’ll find the answer. Sooner or later, you’ll have to ask “Why does business folks don’t care about quality software?”
You should eventually conclude that the ideology of Capitalism that is thought to us as the natural system of living is the root cause of this. This however is way beyond the subject of software and is not easily quantified and tested unlike writing software. So naturally engineers like us will simply just accept Capitalism, especially since it’s paying our profession good money.
Even with code of conduct and jail time punishments. Capitalism will sooner or later find ways to destroy these one way or another. You can see this in doctors - sure they wash their hands now - but they ask you $9999999999 for a $50 treatment resulting in many deaths. There’s Trump destroying all probably all regulations while keeping the population busy with other issues.
Firstly - the spelling is Marc Andreessen (typo in post).
Secondly in reply to Alex, I think the problem is that saying “a programmer” is WRONG, at least as wrong as saying “a scientist”, or “a lawyer”. In those professions you would immediately ask “what kind of scientist?”, “what area of law?”. So my question is, what type of programmer?
The development profession is growing, dividing, and individual branches becoming very detailed, yet there isn’t a visibility or understanding of that fact, either within the industry or outside of it.
The same problem happened in science. Science was started by wealthy enthusiasts, which became more formalised over time. When it was formalised, it was set into specific branches of science. These branches have further branched such that now a quantum physicist uses the same scientific method as a marine biologist, but they have very little understanding of each other’s fields at a detailed level.
I’ve been developing professionally for 20 years (and another 10 or so as a student/hobbyist). I’ve seen this same fragmentation occurring to computer science.
We have specific understanding of the area we specifically work on, and little understanding of other areas. Can you really expect an graphic designer, who can also do UI and UX development to understand the anatomy of an HTTP request, the png file format in binary, or even the mathematical calculations that drive jpeg compression?
Can you expect someone who develops mobile apps day-in day-out to understand Microsoft’s Transact-SQL optimisations, or the popper use of R to modify existing data transformations to take into account specific data requirements? I wouldn’t. Heck, I wouldn’t expect a career Microsoft specific DBA to have all the skills and knowledge to manage an Oracle database.
So I don’t see that we need “better” programmers, we need a better understanding of the information technology ecosystem.
You wouldn’t hire a marine biologist to review the calculations of you quantum physicist, but you might rightly expect them both to be capable of using a mass spectrometer - even if they use it at a “quick and dirty” way that works.
Nobody should complain that a developer doesn’t know SOLID design without first understanding the context of that developer. They should expect all developers are aware of a SDLC process (and I say “a” because that is another area of continual branching).
I know a lot of developers of Enterprise Resource Planning systems that don’t understand the ecosystem outside of their specific ERP. Why is that wrong, when they understand their ERP system thoroughly?
Seek first to understand where others are coming from before judging.