My first professional experience with computing came while I was serving in the United States Army. I was given to opportunity to learn on the job and then attend a formal military training program in a bygone era where one of our chief data storage media was a punched card. Punched cards each had the potential to store up to 80 characters of information and also served as a tremendous media for making Holiday wreaths as well as other arts and crafts.
The nature of accomplishing automated data processing in a world where tiny chunks of data had to constantly be pieced together was very tedious and time consuming. After code was developed to process 80 byte chunks of data, the logistics of physically getting the data from the paper cards into the computer's memory was another daunting task. We often had to manage to get many two foot long boxes of cards loaded into card readers that would scan though the cards at a snails pace in order to process a day's worth of data. It was particulary fun when someone had carried a box of cards out in the rain and gotten them nice and wet, sticking together, wrinkled and unuseable before you attempted to run a daily process that was definately going to run for more than a day. Try to explain that in your morning standup!
It suffices to say that the challenges were many and time was a commodity in short supply. As the years went on there were bigger and better storage media available but there was still always the need to write code to put things together. I recall having the need to sort many files together in various sequences so that I could match records together. That would often be followed with sorting that file again so that I could match it with something else. I do not recall how may hours were consumed simply debugging problems that were caused by things not being sorted in the proper sequence. Things were really tough.
I still remember the day when I had an opportunity to get my first look at this thing called a relational database. They told me about joining two or more tables together with a simple statement using this Structured Query language. And, oh, by the way, the input files, or tables, were not sorted before I joined them together. Even better, the data that I wanted to use to join things together was only going to be identified by the name of the field that held the data. An oh, I have no idea what byte the field starts at, I just use the name of the field and write a simle statement that said I wanted all of the data from table1 and table2 where the accountid on the first table was equal to the accountid on the second table. As I heard this explaination, I envisioned hundreds of lines of code and sort steps and sort control statements melting before my eyes. If what they said was even slightly true then my life would change!
It was true! Relational is awesome. Over 30 years later and I still love SQL.