The software technology industry is like an ants’ nest. From up close, everything seems random, chaotic, and purposeless, but as we zoom out, pattern, order, and purpose begin to emerge. At least, this is the way I see it. While I love to get very close to the smallest details, once in a while, I like to step back and see how we, the software industry, came to where we are in order to better understand where we are going.
From the beginning of software, the two main characteristics of an application that are often opposed to each other are richness (i.e., application function and experience) and reach (i.e., application distribution and access). A model in which both of these characteristics are maximized has always been seen as the Holy Grail of software development.
If we step back and look at the evolution of the software application architecture over the last 20 years, based on these two core characteristics, we can plot the journey of the quest for this Holy Grail on a decreasing sinusoid depicting five generations, as shown here.