The software development tools market is littered with obsolete or dead-end products that attempted to make incremental improvements in the way enterprise software is created and maintained. Although a few improvements succeeded spectacularly well, such as the relational database (RDBMS) and SQL, most approaches to streamlining the development of procedural code proved to be ineffective. A long list of partial solutions starting with CASE tools and continuing to the present day with solutions like .Net all suffer from many of the same shortcomings — they are code-centric, they work on a limited number of hardware platforms, they are expensive to purchase and use (especially factoring in the cost of technical expertise) and they require a bewildering array of supporting infrastructure that is exposed to, and must be managed by, the user. In a word, they are complex and their complexity is built into the fabric of these approaches making it impossible for users to factor complexity out.
The antithesis of complexity is not simplicity but modularity. Modularity enables users to sub-divide large tasks into smaller efforts that may be attacked by specialists and the standards provided by modularity give all who participate in the development process a blueprint for how to connect their work with the work of any other people with a similar mission, not matter if those people are down the hall or half way around the world. Together modularity and standards set the stage for a new paradigm in application development, but by themselves, they are not enough. There are modular, standards based approaches to code development on the market today but they have not delivered an application development paradigm that transcends the limitations of building code.
The evolution of the software development platform has provided the last necessary building block that users need to retire the old paradigm of procedural code development. The platform gives purpose to modularity and standards and provides a management layer that shields the user from concerns about operating systems, databases, security, networking, resource provisioning and much more. Just as today’s car drivers do not need to have a working knowledge of transmissions or fuel injection systems, today’s application developers no longer require detailed knowledge of their back-end infrastructures.
Importantly, providing a reliable platform that shielded drivers from the complexity of cars resulted in enabling more people to drive which, in turn, created our modern mobile society. Similarly, shielding those who need to make business applications from the complexity of computing systems will unleash a new round of creativity in business applications and result in a new level of sophistication and awareness in commerce that enables companies to be more intuitive and responsive to the world around them.