While it is true that a dilution of the field has some impact on quality, I think there's other reasons too.
- We routinely depend on higher and higher level abstractions. These abstractions almost never cover 100% of the usecases you could imagine, but that doesn't mean they still won't get used inappropriately for a while.
- Corporate software is often subject to the technical equivalent of a pump and dump. The kind of situation where a developer wants to open source something but the company isn't really passionate about having them finish all of the features, only the ones that are pertinent to them.
- Companies are routinely understaffed, possibly by design. When I first started programming I heard all about programmers working in teams to accomplish things. When you don't have the option to pair on tough problems that means tough problems get a singular perspective.
- We routinely depend on higher and higher level abstractions. These abstractions almost never cover 100% of the usecases you could imagine, but that doesn't mean they still won't get used inappropriately for a while.
- Corporate software is often subject to the technical equivalent of a pump and dump. The kind of situation where a developer wants to open source something but the company isn't really passionate about having them finish all of the features, only the ones that are pertinent to them.
- Companies are routinely understaffed, possibly by design. When I first started programming I heard all about programmers working in teams to accomplish things. When you don't have the option to pair on tough problems that means tough problems get a singular perspective.