The following points are from the Internet translation outside China and the actual work experience:
1. Good software must not be cheap
Software development is the same as other professions and requires a lot of time to learn.
Practical experience: as many software products in China are currently, although the price is low, they are often project derivatives, and the quality and performance cannot be guaranteed. The maintenance cost is much higher than the product price, which cannot help users improve work efficiency and reduce work burden! A high price may not be able to buy the most suitable software, but a low price is certainly only able to buy a pile of garbage!
2. Clear requirements
We know that it is very difficult to list all detailed requirements at the beginning. This is why we have invented agile development. However, if you give us wrong demands, we can only deliver wrong software. You can blame us for the poor use of the software, but you give us a wrong demand first. In the end, it wasted a lot of time and money on both sides. Software developers may be very smart, but only you can solve your business needs!
Practical experience: customers will always be the experts in their business. Accurate and rigorous business logic and processes are the basis for developers to understand their needs. How to transform the business into software requires repeated communication between the two parties. The customer gradually establishes the business concept and application background for developers, only with clear requirements and correct understanding can we develop software products that meet the customer's business requirements. If the customer's requirements are vague and inaccurate at the demand stage, the development will proceed, there must be an increasing deviation!
3. Completion of good software
To deliver a good software, developers should do their best in the project. However, customers cannot sit on one side and ignore this project. If you want your software to be delivered on time and correctly, you should keep in touch with the developers so that we can promptly discover and correct the problems. This does not require you to stare at our work all the time. You only need to reply to our email in time, for example, within 24 hours. I have met some customers who have completely disappeared after contract signing and told me why the development was not completed when the software was delivered? What do you mean ?!
Practical experience: the development process of any project that the customer actively cooperates with is smooth. problems can be found and corrected in time, and the construction period can be completed within the planned scope. Otherwise, if the customer is indifferent to the development process and only waits for the final result without providing any valuable suggestions or reference information, the final work will inevitably not meet the requirements.
4. Not all functions are visible.
The absence of beautiful interfaces and a large number of new features does not mean that we have not worked hard. In fact, a lot of work is irrelevant to the front-end. This is why we should invest resources to improve the background code. According to the carprinle http://en.wikipedia.org/wiki/Pareto_principle, 20% of the Code solved 80% of the problem. These problems may be server performance bottlenecks or data corruption. Although you spend money on these aspects, you cannot see the software interface changes, but it is worth it.
Practical experience: Domestic Customers focus on Software Quality in two categories: one is the customer's leadership, most do not know the technology or understand less, focus on the interface effect and interactive experience, performance, storage, and other important factors are basically ignored. The other is the technical personnel directly in charge of the customer. The communication between them is smooth, and the quality of the software is often valued, that is to say, these invisible functions, but the Interface Effects and interactions cannot give good suggestions, and cannot accurately speculate on leadership preferences. Based on the current national conditions, the right to judge the quality of software is in the hands of leaders, which determines whether the software is easy to use, depending on the external modification, however, invisible and even key features are often ignored.
5. It is difficult to give accurate time predictions in advance
In any field, it is difficult to predict the project time. This is especially true in the IT field because customers often do not know what they really want. Tell us what you think, we will give you a time estimation, just an estimation. Requirements often change in the development process, so don't always take the estimated time for it.
Practical experience: Most customers do not have a correct understanding of Software Development estimates. The estimation time is always mistaken for the accurate development time, and the time is extended when new problems or requirements are found during the development process change, the customer will mistakenly believe that the work was not completed on time. Therefore, the impact of each extremely small demand change, any issues found during development that may affect the progress, should be reported to the user immediately and repeatedly stressed to make them aware of the changes.
6. Programmers are also people
We may work and think like robots. We may not be able to come out in the office for a long time, but this does not mean we are not human beings. When you have dinner at a restaurant or make a safe plane landing, you will be grateful to the chefs and pilots. When your family is cured in the hospital, you will be grateful to the doctor. So please also bring this gratitude and respect to us.
It developers laugh at themselves as code farmers, so ......
7. Tell me what to do and not instruct me how to do it.
You describe your problem and ask professional people to propose a solution. Ask the developer to do what he is good at: solve your problem. In the IT field, developers often know much more than customers. That is to say, developers know the advantages and disadvantages of different solutions, and they will choose the right solution. Do not complicate simple problems. Do not tell us how to solve them. Professional problems are solved by professional people, which can save you a lot of time and money.
Practical experience: customers who have a little understanding of the technology may be the worst customers. It is easy for them to take it for granted that they are also technical personnel and can solve technical problems. Even their own solutions are superior to those proposed by developers themselves, but as described above, in the IT field, developers often know much more than customers. Just like in the business field, customers often know much more than developers.
8. Listen to our suggestions
As mentioned in the previous section, developers may know more about the technology field than you (customer. If you want to play an automatic video on your website, and developers suggest you do not do this, then listen to him. Because he has already done similar cases and knows that automatic playback is boring for many people. You like this video, but not necessarily others. If your developer suggests that you do not use flash, trust it. He knows that flash is not good, maybe you don't know.
Practical experience: the more projects developers experience and the more problems they encounter and solve, the more experience they can accumulate. Customers can only see the direct effect of a specific function, but cannot correctly assess the positive and negative effects caused by the function, nor can they propose a good solution for balanced utilization of various resources from a global perspective.
9. Conclusion
Software developers need to make all efforts to complete a good software. There are many books on how to control software quality, how to do requirement analysis, agile development, and so on. But as a customer, you should also follow some basic principles. The biggest problem is that the customer wants the lower the project budget, the better, but constantly changes the demand, and there is no good communication.
Practical experience: This fantasy is an impossible daydream! Active communication and pragmatism are the correct way to achieve a win-win situation!