Technical re-architecture to accommodate future changes in the platform is not all that is required in solving the Riddle of the Great Sphinx, nor even, perhaps the most important part.  I have studied a number of software vendors seeking to learn what has made it possible for them to build software that lasts, and I believe that the answer lies first and foremost in the organization of their development staff. 

 

Allow me to tell you what I have observed, beginning with what I have found to be highly unsuccessful arrangements.  One is to have developers dedicated to the presentation tier, others to the middle tier and still others to the data tier.  That form of organization is idiotic, because it logically guarantees that the effort of coordination among the staff will be maximized, whereas we know, from Frederick Brooks’ essay, The Mythical Man-Month, that success in software development requires that the effort of coordinating resources should be minimized. 

 

Another unsuccessful arrangement is to have one group dedicated to the assimilation and application of new technologies, while the remainder of the developers have to carry on using older tools.  That arrangement quickly leads to having some products on the bleeding edge of technology, while the vast majority of a suite, usually incorporating the core of the product languishes behind.  There is also considerable resentment of those in the advanced technology group among the other developers. 

 

The successful arrangement is subtly different from the others, but vastly more effective.  In that type of organization, one group is dedicated to building a platform, a core set of components, that other developers are actually tasked with making into customer-ready solutions.  That permits maximum flexibility, where either group can adopt advancing technologies to suit their needs.  Socially, the developers in the platform group are not resented, but respected, and the others either aspire to hold their positions or enjoy their own.  There are two species of this arrangement, one of which tends to be more successful that the other, although they both work well.  The first arrangement has the group tasked with using the core components build customer-ready applications encouraged to pursue the advancing technologies.  That arrangement is not quite as optimal as the other, in which it is the core group that tends to assimilate new technologies first.  The latter arrangement is preferable because the capabilities of the vendors product suite tend to advance more quickly, and because the process of incorporating the advanced technologies into the core tends to be done more systematically, with more careful thought concerning their proper application.  That form of organization is my answer to the Riddle of the Great Sphinx, the most certain way of building software to last.