Planning for the Future
Alex Campbell griped a bit earlier about how much of a complete pain in the butt it is to maintain an overly complex system. Demonstrative/educational reasons aside, it's quite unnecessary to build platform flexibility into a system when the platform has already been decided. Yes, I do realize that punch card based data providers do not support stored procedures, but sometimes it's just easier to code for a SQL-92 database provider than to build an abstract data factory layer that can handle anything, including cuneiform tablets. Anyways, that got me thinking ... do folks in other fields think with the same “what if they change their mind later” mindset ...
Home Builder - We feel uncomfortable giving you just a standard two-car garage. What happens if you want to change your primary transportation to an earth mover or a pocket bike? No, we're going to set it up so all you have to do is extend the length and distance on a few poles, and viola!, new garage. Bricks? Well, no of course not, that's not flexible enough ...
Chef - Hey! Don't put mayonnaise directly on the sandwich! If the patron gets halfway through dinner and wants mustard instead, he would have to scape the sauce off of the meat and probably have to get a whole new bun. It's much more flexible to mix the mayonnaise with a flavorless gelatin solution to make it a semi-solid and allow the patron to peel it off and change it to whatever sauce-block she wants.
Privacy Fence Builder - Hmm ... having the gate over here doesn't make much sense. If we need to move it later, it's a pretty complicated process. We'll just build the entire fence out of gates, and lock the ones we don't need. Of course, if we want a gate in between two gates ... hmm ....
Any others I'm missing?