Make it a big part of lawyers' jobs to try to salvage cases that other lawyers have bunged-up because though they somehow managed to pass the bar, they don't really get the whole "law thing" and see how quickly that changes . . .
Also this.
This. Oh, gods, this. In corporate lawyer world, where you DO have lawyers who salvage the abysmal horror of a previous lawyer's work, trust me, the gloves can fly off quick. Usually not in public, but that's solely because they can and will get fired for bad PR.
Programming sucks for a variety of reasons, but mostly because the discipline was not pursued or perfected before computing machines were invented, and so the whole thing has been improv and half-assery from the beginning when the task of inventing programming fell to the people who built the machines. For a correctly pessimistic viewpoint on the state of computer science, read the essay "On the cruelty of really teaching computer science" by the late E. Djikstra, or wade through some of his essays at http://www.cs.utexas.edu/users/EWD/.
True, but IMHO, not the complete picture.
In my opinion, we have three key parts. Programmer culture, proliferation of programming languages and speed of development.
Programmer culture:
There's a main split between self-taught and formally taught. Usually either school or more rarely, some training program. Self-taught focus on clever solutions rather than standardization. Formally trained folks often focus too much on standardization, and the standardization is usually hilariously badly designed. You need both. It's generalization and should be taken as a very loose concept, but very common. I rarely see self-taught programmers that are SDLC Commissars, but I've seen hundreds that were cowboys. Formally trained folks are more likely to be hit or miss whether they end up as loose cannons or procedural NKVD. We need something flexible enough to get the job done, but rigid enough to enforce good habits such as documentation, good security practices, optimization, etc. Good programmers find that balance. All the genius in the world won't overcome zero documentation, gaping security holes, slow DB io, etc.
Programming languages:
IMHO, absolutely no one should be coding in Java, as generally there tends to be between tens and hundreds of open vulnerabilities and Oracle refuses to consider a sane or reasonable patching regime. This has been the case for several years. Has it stopped folks from writing Java apps? Nope. Will it stop folks from writing apps? Nope. SHOULD it stop people from writing Java apps? Depends on what you value. To me, I care about my customer or employer's data. A manager deciding how to code a Blu-Ray player or interface for a SAN doesn't care about my data. They care about making their deadlines and budgets, with a secondary focus on selling products. Their interest in end user safety exists, but it's way down the priority list.
No programming language meets every metric for everyone. Do you prefer ease of development, or speed? Do you prefer security or speed?
Best folks can do is not hop on the bandwagon for every new programming language, and try to develop good practices for the programming language they do use. I'd recommend that folks who design a new programming language put some thought into developing best practices during their build process. But hey, why not wish for unicorns and world peace at the same time?
Speed of development:
Basically, we write crap code too fast to make deadlines and/or add features. Why? Because of deadlines. Because of need to sell products to earn a paycheck. Because users often care about features or shiny over stability and security. Because writing new features is more interesting than code reviews and boring checklists. Some programmers decry "patch culture". I understand the scorn, but I'll take it over the previous culture of "Well, once it's released, security vulnerabilities will NEVER be fixed." Embedded devices are still usually in this model. Cell phones are also largely of the same model.