When talking about the productized software, people often think of Microsoft Office and Microsoft XP. Of course the Microsoft product series is very successful. They can provide excellent GUI, and good user experience.
In China, there is a different picture for software products. Let me take Chinese software development companies for example. Most of the companies in China work on some projects, instead of specific products, When a company starts a new project, they need to invest lots of developers and money into the project. Sometimes, they also need to send a number of technicians to the customer site to do the development. In my opinion, there are two reasons.
(1) The software is not very satisfactory enough to be a perfect product.
(2) Chinese customers have lots of special requirements.
Customer is GOD. We can not change the ideas of customer most of time. So, we need to improve our product. Then how to evaluate a software product's success? Because of various concerns, different users hold different opinions and will arrive at different conclusions.
As for redevelopment and customization, the following should be more concerned:
(1) Software scaffolding
If the product provides scaffolding, the redevelopment people will quickly generate code (from database, UML, etc….). As we know, the Spring, Hibernate also provide some scaffolding.
(2) Easy installation package
Most of time, the installation gives the first impression to the customer. So it is very important.
A simple installation must ensure everyone, even someone not very familiar with the application, can install the software.
The installation log file also plays significant role. Sometimes, it’s possible for the customer’s environment to have some problem so that the installation runs unsuccessfully. In this situation, the customer can send the log file to the technicians for analysis.
People who do not know about your product also can install easily according to wizard.
(3) Lots of Examples
The examples are the best teacher. Why most of java developer favor apache ant? The reason is that apache ant can provide lots of examples; you can find any task example in apache ant web site.
Example not only provides assistance to the development but also the product redevelopment If your product provides lost of examples, the questions from customers will be reduced substantially.
(4) Online documentation
If the developer can find some on-line document, he will not worry about that the document in his hands is an old version. And of course, the product developer also can work more effectively. For example, if the document has some error, or need to be modified, he can fix it quickly.
(5) Very good support
If the customer has some problem when he use or customize, he can get easily the support.
As for end-users, the following is very important.
(1) Friendly GUI, operator easily
(2) Collection client information online active, when some error happen.
(3) Auto-update to new version.
For customer, he does not need install some patch.
(4) In a conspicuous place clearly marked version of the software, and contact method
As for a kernel developer, he might think we need to provide:
(1) OSGI framework or plug-in framework to facilitate the expansion
(2) Standard software delivery process
(3) Software quality control
(4) A very good suite of documents.