It troubles me that we are so easily pressured by the purveyors of technology into permitting so-called "progress" to alter our lives without attempting to control it—as if technology were an irrepressible force of nature to which we must meekly submit.
—Admiral Hyman G. Rickover
Admiral Rickover's words are particularly relevant to information technology (IT), which suffers from very little in the way of significant physical limits. If you think the technology too weak or too expensive today, just allow Moore's law (see chapter 2) to play out a bit longer. This implies that we are free to mold IT just about any way we choose, subject of course to limitations imposed by the installed infrastructure and past investments. Clearly, the desires and needs of end-users are (or should be) a dominant consideration. The greatest success (at least in a business or societal sense) will accrue to those who make people—individual users of IT as well as their social and industrial organizations—central to their thinking about software.
Application software is the subject of this chapter. Its primary purpose is to serve the needs of end-users, be they individuals, groups of individuals, organizations (e.g., companies, universities, government) groups of organizations (e.g., commerce), communities of interest, or society at large (e.g., entertainment, politics). Application software is distinct from infrastructure software, whose primary purpose is serving software application developers directly and users secondarily. A more complete definition of a software application is a set of functionalities and capabilities (also called features) that forms a cohesive whole, has integrating qualities (e.g., a common security model), and targets a characteristic domain of human activity. This domain may, at its extremes, be horizontal (serving a wide range of human activities, like word processing), or vertical (serving a specific range of human activity, like the administration of a medical practice).
It is important to note that the users are often not the customers of a software supplier. In some cases they are one and the same, as with an operating system and applications purchased for home use. In an organization there are usually intermediaries who acquire and deploy the software and operate it on behalf of users (see chapter 5), and they are the customers. The same would be true of an application accessed over the Web.
While software development has a reputation as an isolating and antisocial activity, this prejudice is increasingly outdated and inaccurate, particularly in the case of application software. Successful application software results when developers placing themselves in the contexts and mind-sets of the future users, and possess empathy for them. The application software developer needs to work closely with future users (or at least a representative sample) and not simply imagine and conceptualize their contexts. Imagine building or landscape architects or interior decorators who failed to interact extensively with future occupants, who must live with their decisions indefinitely. They won't succeed, and neither will application software developers who work in isolation.