I spent the first three years of my software career as basically just a guy that wrote code. I came into work, I had some project I was supposed to work on, and so I wrote some code for it. Usually this code worked and people were happy and sometimes it even made the company money, so I considered myself a good programmer. And then I found Steve Yegge’s essays which made me reconsider all of that, and to this point just reading those essays has probably been the most formative experience in my career so far.
Steve was the first person I knew of that spoke about software engineering as a discipline that demanded self-improvement. He wrote about dozens of subjects, but the one huge message I got across from reading all of them was, “there is more to this craft than meeting requirements at your day job and learning the syntax of the single programming language you use there.” Some of it was a little intimidating, especially when Steve gave examples of suboptimal behavior that I was directly exhibiting (or when he was bashing on Perl), but as long as you focused on Steve’s overall point and didn’t just argue his potentially imperfect examples in your head, you would realize he always had something great to say.
So I’ve made it a habit to reread his essays from time to time, and the other day I checked out ‘Ten Predictions.’ It’s on his old Amazon blog (as opposed to his personal blog, which sadly he doesn’t update as often as he used to), and I remember first reading this in 2007 and thinking, “hmm, I wonder if he’ll be right.” Well when I reread it, I saw a lot of references to things happening or not happening in 2010 and 2011, and since that’s, well, now, I don’t have to wonder if he’s going to be right — we can actually tell if he’s right or not.
So, let’s see what Steve had to say. Keep in mind the original essay was written in early 2004 (I believe).
Prediction #1: XML databases will surpass relational databases in popularity by 2011.
Reason for prediction: Nobody likes to do O/R mapping; everyone just wants a solution.
XML databases like BaseX never caught on, so while Steve was wrong about that, he was right that people did want solutions to problems that didn’t fit nicely into a relational database. The past five years have seen an explosion of “NoSQL” solutions for structured and unstructured data, named such because they don’t require fixed table schemas and easily scale horizontally.
Will these solutions eventually become more popular than relational databases? Well, I think that question is misleading because I don’t think relational and non-relational databases fight over ‘market share.’ We’ve seen a gradual evolution of both sides where relational database solutions are becoming more horizontally scalable and getting better at storing unstructured data, and NoSQL solutions are getting better at providing the same kind of query languages and developer tools available to relational databases. So the idea of one surpassing the other in popularity is kind of a false dichotomy, as their designations will only get less and less binary as time goes on.
Read the rest of this entry »