Dave focuses in on standards and protocols such as Ajax (in his Atomization of Software post) as to what is leading this sea-change. I differ slightly with his opinion in that the biggest revelation is developers seeing the importance of ‘software as services’. Tools, standards, and protocols have existed for some time to support this way of developing software. In fact, software as services is the critical piece making Ajax useful.

However, this is not how software is usually developed. Most software has been written as all-inclusive applications where the client interface is tightly coupled to the server interface(s). This means that each of the parts are useless without the whole. The crux of the problem is that software designers have spread “state” – what the user is doing – through all the software layers.

Over time, the best designers recognized solutions to the coupling problem and learned the importance of atomizing service requests. What this new crop of Ajax applications does is give more developers a view into the patterns that the best software architects discovered decades ago. In other words, only recently have the majority of web developers had exposure and the ability to learn from this model.

Although an example of the “layering microapplications to create more complex applications” pattern already exists in Unix command line piping, the purpose of most applications has been simply to capture and manage large amounts of information that didn’t need to be shared. However, the need for data management is getting to be less and less important while sharing data is getting more and more important. This situation is true in general but even more so with web applications.