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 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 one can improve and build new features.

People related: Building a “well-engineered” product requires a much higher level of skills than what it takes to build an application. Typically, those who need application development services review an
d test the screens of the application, and that generally suffices for them to know whether the application works or not. Whereas, product customers look into the code base, to see how it meets the attributes of scalability, robustness, customizability and architecture adherence. Hence, the engineers working on product development need to have a much higher order of skills.

Process related: In a generic application model, good documentation, proper configuration management, strict adherence to the design, architecture and coding standards are important, but not mandatory. In software product development, this discipline is “mission-critical”, to say the least.