As software professionals, one of our primary strategic goals is to eliminate redundant work. If we manage servers, we want to automate that management as much as possible. If we write software, we want code re-use. If we are writing boiler plate code where we are simply applying the same pattern to a new object, we want to automate that code generation.
We are getting pretty good at automating, or having computer systems automate the redundancy in our work. A great example would be ORM generators. They work great! Well, actually, they can work great. Or, sometimes, they can be our worst nightmares.
Here is the central theme of today’s topic. In just about any IT discipline you can ask what is the best way to do something, and many times you will have an answer begin with, “It depends.” You can use all of the boiler plate code and system generators you want, but, to date, most of them don’t handle “It Depends”. They work great for the “Happy Path” against which they have been created. But, get into new circumstances, and things begin to fall apart. Sometimes they fall apart in a big way.
Yesterday we talked about a database having more than 300 materialized views. In the comments to the editorial I read people responding that they had heard that views were a good thing. They are correct, except, “It Depends”. You can read the editorial for yesterday if you want more technical details about views. I using that as an example of why we still need database professionals today.
I can’t tell you how many times I’ve heard, “We don’t need Database Designers anymore because we can generate the database from the application code. And it auto-migrates. And it keeps the code and the database synchronized.” And then, because they haven’t learned the database areas where the implementation “Depends”, things fall apart.
The inverse is just as true. How many times have we as database designers made the job of application developers more complicated, simply because we don’t understand the app code scenarios where “It Depends”.
At least for the near future we are going to need people who understand when the best answer is “It Depends”. As long as that domain of knowledge is big enough, we are going to need specialists, or at least people with deep understanding. We are going to need database professionals, not just web developers or application developers. So, don’t throw away your SQL Engine hat for a while folks. If you want to expand, pick up another Engine, or another software layer…but I think we are going to need you now more than ever.