After reading sumtec's thoughts, I felt a lot and wrote something casually.
In his post, sumtec talked about a problem that software development should be customer-oriented rather than technology-oriented. In other words, it should be customer-oriented software development. The customer pays for the product or project. The key is the customer's hard work. Customer-oriented development can maintain good relationships with customers, reduce rework times, reduce risks, and ultimately improve development efficiency and ensure on-time delivery.
How can we develop customer-oriented software? I think we should grasp the following points:
1. Make meeting the customer's needs a shared vision of the team
Generally, different workers in the project team define their own jobs as their success criteria. The success of the requirement personnel is to capture the customer's needs as much as possible; the success of the system architecture designer is to design a stable and adaptive architecture; the success of the development engineer is to write the documents that meet the requirements of the system design documents. Code The success of the test engineer is to ensure that the system does not have known bugs... these goals are together. This is a long shift, but there is no guarantee that the entire group has a common goal. However, when the vision of meeting the customer's needs is accepted and endorsed by all the team members, disputes on many small issues will disappear, because everyone knows that, everyone strives for a common goal. At the same time, cooperation and trust can be established, which is greater than the total skill of all people.
2. Select the controllable software life cycle model of the customer
Sumtec talked about various problems brought about by waterfall model development. Indeed, the waterfall model is not suitable for customer-oriented development. In front of the waterfall model, the customer can see what he wants only after completing the entire model. In other words, the customer is invisible to the project throughout the project cycle. The invisible project cycle gives the customer a feeling of losing control over the project, which can lead to many problems, such as schedule, such as requirement changes.
Stage delivery, usually a model that is popular with customers. In this way, the customer has an intuitive understanding of the progress of the entire project. Many ideas about changing the schedule or proposing further requirements will be abandoned by the customer because the customer knows what the project will do. At the same time, after each delivery, the customer can be overcorrected to maximize the satisfaction of customer needs.
3. Find out who the real customers are.
This issue is very important!
Generally, the customer sends representatives to propose the requirement and monitor the project. However, in many cases, this representative cannot make a decisive decision on the project! Behind him, there were larger leaders in command. This is also the reason why the customer Representative puts forward many unreasonable requirements during the project. In the project startup phase, it is necessary to take various measures to gain a deep understanding of this situation and then conduct the project, do a good job of reporting to behind-the-scenes leaders (even mail CC for macro problems is much better than nothing ).
4. accurately capture customer needs
The customer's requirements are often vague. Even if a written requirement specification is put forward, it is just a draft and cannot guide development. However, when the customer sees the developed things, his or her thinking will become active and will put forward many further demands. Developers should be good at using this and use the interface primitive method to induce customers to come up with more demands.
5. Control the scope of customer requirements
Customers' requirements are on the ceiling, while our products are on the ground.
Because the customer does not understand software development, they will propose many unrealistic and difficult-to-meet requirements. Generally, the customer will think that the requirements they propose are easy to implement. Therefore, the customer needs must be pulled down from the ceiling in the project startup phase, or even put on the ground!
This job can be done by product managers and consultants. Before the customer puts forward specific requirements, the customer's senior leaders and directors should be provided with free product training. Let the customer know what problems the product can solve and what problems cannot be solved. According to industry practices and specifications, how can each problem be solved. In this way, the customer's ideas are standardized into a small basket. They can only swallow their ignorant ideas into their stomachs, rather than spit on you.
6. attitude towards demand change
No matter how good the project team members are, demand changes will happen sooner or later. It is not advisable to explicitly reject changes and fully cater to customers to satisfy all changes. A good attitude is to accept changes that have little impact on the project, so as to maintain the relationship with the customer.
7. Maintain relationships with customers
There is a celebration with the customer at each milestone, and some souvenirs with the team logo are often sent. The most important thing is to occasionally send emails to the boss of the customer representative, praise the customer company and customer representatives for a few words.
To do this, contact colleagues in the marketing department and Sales Department. They are often more competent.