How do you qualify the output of your software development efforts – is the result a product or an application? If your software addresses the needs of a particular group of individuals or a single organization, it is an application. On the other hand, if your software addresses a wider target audience, it is a product.
The requirements and corresponding skills and processes involved in developing a product vary vastly from those needed for building an application. Some of the key differentiators of a software product compared to an application are as follows:
1. Technology-related
An application is “custom-built” for a single organization or set of users, but a product is “generic” and is built to cater to the demands of a wide variety of users. However, each user needs to be able to use the product in a way that suits him/her. Hence, a product must be customizable, scalable, robust, well-architected, and must have a solid framework on which new features can be built.
Generally, in the case of an application, it is enough if the specified functionality requirements are met. There aren’t too many enhancements and changes made once the application is built. For software products, however, as time goes by, newer versions are released and several versions may have to co-exist at the same time. Therefore, if “under-the-hood” engineering of a product is not strong, maintenance could turn out to be a nightmare.
In comparison to an application, a product needs to be more easily integrated with other applications or products and support multiple environments. Support for globalization needs, adaptability to new pricing models and enhanced security are vital in software products, whereas they are not required or at best optional for applications.
2. People-related
Building a “well-engineered” product requires a higher level of skills than what it takes to build an application. Typically, customers for application development look at and test the screens of an application to know whether it works. Whereas, product customers look into the code base to see how it meets the attributes of scalability, robustness, customizability and architectural finesse. Products also demand superior usability skills.
An important consideration in product engineering is being quick to market – therefore, knowledge continuity of the engineering team becomes important to reduce the learning curve for existing product designs/architecture framework etc. and in maintaining older product versions.
3. Process-related
Proper documentation, configuration management and strict adherence to coding standards are important when building applications, but not mandatory. For software product development however, they are “mission-critical”. Frequent release of new product features and getting to market quickly are pre-requisites in product development and demand strong processes to deliver quality products. At the same time, the product engineering process needs to be flexible enough to accommodate frequently changing market requirements.
The differences outlined above highlight the fact that product development is not the same as software application development. It requires a different approach and a specialist product engineering team to be a success.


"Online communities, iterative methodologies and software scalability" with Andres Camacho - Vice President of Engineering at Vinfolio 