Heard of Gresham's Law? It says that "bad money drives out the good." This applies to more arenas than finance, like management. Bad managers drive out the good ones. Once there's a tipping balance—enough bad managers to make a fatal difference—the game is over. The good ones leave.
How about design? Put enough bad or incompetent engineers in positions of authority and forget about a good product. Things will head downhill fast, and the good folk will start peeling off.
Technology, when coupled with fast-turnaround products, can provide an opening to the bad as well. Take programmers, for instance. They started out coding bit field by bit field, then loosened up a little with assembly, and worked at the application level with C and Pascal. Now they're working at the object level with C++ and Java.
Thus, programmers now work at higher, more abstract levels. But these languages, coupled with more memory and faster CPUs, have also engendered a lower class of programmers. "We can afford inefficient code," says management, and that's just what it gets. The inefficient, grotesque code now produced in C is truly awesome, and that's nothing compared to what these folks do in C++.
Hardware isn't off the hook either. Consider HDL's gift to hardware design: programmers as logic designers. So, today's larger, faster ASICs and FPGAs may deliver quick turnaround, but not necessarily effective designs. It's hard for HDL programmers to visualize datapath flow, roughly 90% of a design. The result is an increasing number of half-baked, inefficient, ineffective designs, sustained by more and more gates and faster logic.
In years past, engineering epitomized careful, elegant design. No more. Bad design, armed with technology and tools, is driving out good design. Before, hardware had the edge over software design. Will hardware and software now compete to see which is worse? The bad drives out the good. Let's add tools to keep the good.