When I started in IT a couple of decades ago, I had the good fortune to be in a company that happily built everything by themselves and primarily on the Mainframe. I know it makes me sound older than I really am, but it is true. One thing that characterised development on the mainframe was that it was a computational platform that grew out of scarcity and discipline.
Compute was scarce and strictly metered since it drove the bill (even third party licenses were billed after how many MIPS were burned). Storage was similarly limited and all of this resulted in IT operations being firm gatekeepers that controlled every little detail around what could and would happen on the platform.
This had some indirect effects that I observed early in my career. Mainframe developers were incredibly structured and a strict process was followed for all changes made and more importantly data was intricately modeled, discussed and validated before it was created by the DBA. Weeks or months could pass where we created, reviewed and debated the precise data structures that would be allowed so as to minimize the storage impact and, yes, the third normal form was as normal as the line in the canteen for lunch, when they served roast and potatoes.
Fast forward, a couple decades to now. Development today is free, there are no gatekeepers, everyone can deploy anything anytime since compute and storage come in abundance. In fact, the more deployed the better as DevOps would have you think.
That is good. I am pro freedom and speed and all, but there is one important thing that was lost when the old world of the mainframe was torched . The focus on carefully crafting the data structures that would form the foundation of what was built. The grind that went into going back and forth on whether the right tables and relations were created. The scrutiny of each attribute and what it meant. All of that is gone and the third normal form is a mythical creature of the distant past like brontosaurus.
Instead we have endless confusion about what data means, where to get it, how it should be structured resulting in technical debt and refactoring. We patch it up and speak of data products and data mesh. But deep down nobody really knows for sure what the data structures are or what they mean. There are good reasons we replaced the mainframe, but certain disciplines that grew as a necessity around the mainframe, such as data modelling according to the normal forms and Entity Relation models, may actually come back to help us.
Particularly the old school art of crafting a logical model that is agreed on by all stakeholders before anyone starts coding. This is not big design up front, it’s just old school common sense. Let’s face it, if we can’t even agree the data in a logical model that we can explain to others, what are the odds that we can build something that will work for end users?
Photo by Musa Ortaç on Unsplash
