I suspect that people at work think I’m a bit odd. Not off-odd, like someone who perhaps might show up and machine-gun the shop one day, but quirky-odd, a person who doesn’t do things quite the same way as other people. I think this is largely as a result of my habit of taking off my shoes when I’m sitting at my desk. During the warmer months, that actually means taking off my sandals and padding around barefoot, which is seen as odd for some reason.
I don’t understand why, really. Our feet weren’t designed to be wrapped up in shoes multiple hours per day. Why people think there’s something peculiar about preferring to go barefoot, I don’t know.
Anyway, in a complete non-sequitur, Â a software application is like a building. There’s a foundation. There are structural members. There is stuff to keep the elements out, analogous to roofing and siding. And there are the decorative things, railings and trim and closets and stoves. In a traditional client-server application, the foundation is the database. Most N-tier applications are really just fancy client-server apps, with the middle tiers working as server layers for the tiers above them and as client layers for those below them.
In most business applications of any size and usefulness, the foundation is a relational database of some kind. Â As with housebuilding, if your foundation is shaky then everything is shaky. And as with housebuilding, if you’re going to put up a building, you should design and lay your foundation first. You should do this before you pick out the stove and lay the tile in the entranceway.
However, many (many many) software applications don’t do this. They lay the flooring on the ground and build the stairs to the second story, propping them up with bigger and bigger timbers when they fall over. They pour a concrete footing wherever a stray board happens to hit the ground. Sometimes.
And then they wonder why the place falls over when the first windstorm hits.
After that, they hire a guy like me and give me the job of pouring a foundation. This is, as they say, a non-trivial task. Right now, in addition to everything else, I am engaged in connecting up a series of footings that look like they were poured by an incompetent flower-arranger.
It’s weird. You wouldn’t buy a house from a contractor who was really good at cove mouldings, laminate floors, and newel posts but that knew nothing about foundations. Why do so many companies fail to grasp how fundamental the database design is?