Applications and Middleware
Creating enterprise software requires two distinct types of expertise. First, developers must be intimately acquainted with the application domain. An application domain includes objects and logic that accurately model business concepts and processes. Creating an effective business application requires you to understand what data is involved, the relationships among the data, and what expert users expect to do with it. It is painfully obvious when an application is not designed by domain experts because it forces users into unnatural paradigms.
The second expertise required to develop enterprise software is the ability to write efficient and transparent middleware. The term "middleware" refers to the plumbing between application code and the system. Examples of middleware are system resource libraries, prefabricated graphical user interface (GUI) components, and database drivers. In addition, you can consider any code that you write that acts as a conduit between an application and these libraries to be middleware as well. Writing efficient, maintainable middleware code requires extensive knowledge of database resources and libraries.
These specialties differ in a few regards. Developers with application domain expertise usually attain their skill through industrial experience, while middleware experts learn from professional training and documentation. It is uncommon to find programmers with both skill sets. Most middleware programmers are not able to design a truly marketable business application. Conversely, many business application developers do not write efficient middleware code.
Another difference between applications and middleware is marketability. From the perspective of an application development company, applications generate revenue while middleware does not. Customers purchase applications based on the business processes they implement, so domain features are what makes an application marketable. On the other hand, business customers are less interested in middleware features other than expecting the middleware to be fast and robust. Application vendors invest more in application development than middleware for this reason.
Finally, business functionality is unique among applications. An application's features often focus on processes that are specific to a vertical industry. As a result, application domain code varies significantly. By contrast, middleware code can usually be consistent across all application domains, since all applications require similar middleware functionality.
As middleware developers gain experience working on multiple applications, they understand the common features and add them to their personal bag of tricks. Certain techniques apply to nearly every application domain. Developers refine and reuse these techniques, ultimately abstracting them in the form of reusable code or designs. This makes middleware code cheaper and more efficient for each project. As middleware code gets cheaper to develop, software companies can increase their investment in application development, which can in turn lead to higher revenues.
|