Southwest has their quirks (poor boarding procedures for people with kids, some people really don't like open seating, etc), but they continue to allow each passenger two checked bags for free. They also don't charge explicit fees for ticket changes, though you have to pay the difference in seat prices if they have gone up. So far, they seem to be doing OK, so at least one airline hasn't had to go super-crazy with the unbundling to stay profitable. (Instead they just made their frequent flier awards much harder to use than 5 years ago.)
I think the only "extra charge" option is their Early Bird checkin, which basically gets you on the plane first for $10.
I tend to think of your taxonomy in terms of design outcomes:
4. Sufficiently engineered
1. Doesn't work or works on accident.
That is to say, average developers tend to nail the common case, but lack the experience or knowledge to spot the corner cases. Your "above average" developer wants to demonstrate his knowledge by optimizing for as many corner cases as possible at the expense of simplicity in the common case. The well-above average developer can balance the common and the exceptional.
Both over and under-engineered solutions are "bad," but the under-engineered solution usually has the advantage of less code to delete when you have to redesign everything.
Yeah, most of the cheating I heard about in my CS program 10 years ago was not from people who were necessarily lazy or "party-people" or whatever the usual stereotype is. Most of the temptation to cheat was for people who were completely in over their head with the entire subject and felt backed into a corner. They were wedged between a lack of preparation and social pressure to succeed. ("I did OK in math class, and I like using my computer, so why can't I do this?") The first time many of them had ever thought critically about the structure and function of a computer was day one of CS 101 (consider trying to do college algebra if you had never seen mathematical operators before) and they just got more behind as time went on. This was not helped by the cattle herd design of public university classes.
The ethically smart ones got extra tutoring from classmates and teaching assistants, or worst case, switched degrees when they realized they were hopelessly behind. The not so smart ones abused the help of their friendly/naive classmates or found some other way to BS through the material. Most of the time, this didn't work out even on semester timescales, but I do remember one group project where a guy couldn't write a single line of code unprompted, yet somehow had landed a job at IBM to start at the end of the semester.
I don't have any sympathy for people who cheat in classes, but I agree that characterizing the problem as simple laziness or the "moral bankruptcy of the kids these days" teaches you nothing about how to address the problem. Sadly, the solution probably involves things that are socially or economically infeasible: Smaller intro classes, actual focus on pedagogy and not teaching fads in intro classes, de-emphasis of 4-year degrees as a prerequisite for white-collar employment, more investment and advertisement in focused two-year programs for technical fields, etc.
And we don't have to use Highlander Rules when considering drive technologies. There's no reason that one has to build a storage array right now out of purely SSD or purely HDD. Sun showed in some of their storage products that by combining a few SSDs with several slower, large capacity HDDs and ZFS, they could satisfy many workloads for a lot less money. (Pretty much the only thing a hybrid storage pool like that can't do is sustain very high IOPS of random reads across a huge pool of data with no read locality at all.)
I hope we see more filesystems support transparent hybrid storage like this...
For $26, you can measure the power of each device on and off and figure out who the actual power hogs are:
Then at least you'll save wear-and-tear on your plugs for devices that are really off when turned off. (Like your washer and dryer, for example. I would be surprised if they draw power when off.)
Two is not equal to three, even for large values of two.