Author: Hailong Zhang, CEO of CODING, is a technology entrepreneur. CMU Master of Computer science, former Oracle Senior software Engineer. In 2010, he returned to China to start his own business. He co-founded the Open Source Chinese community and founded CODING in 2014. Coding.net is the largest one-stop cloud development platform in China, providing code hosting, project management, product presentation, WebIDE and other tools to help software developers improve productivity and realize the vision of “Coding Anytime anywhere”. Coding.net has amassed 150,000 developers, 200,000 projects, and two rounds of funding from IDG and Lightspeed totaling $12 million. In August 2015, CODING launched the Code Marketplace, which aims to improve the efficiency of software delivery through cloud crowdsourcing and help the software development industry achieve efficient resource matching.
In this world, there are a lot of Party A and a lot of Party B. In our life and work, we either act as Party A or Party B, often the two roles come alternately. It seems that party A’s payment should play a dominant role in the transaction, so why does Party A in the field of software outsourcing often feel embarrassed in the process of project delivery?
I often act as a third party, and I have seen all kinds of Party A and Party B, so I can see through it: the success of a software development project depends more on Party A, its ability, attitude, and expectations. The project is easy to change party B, but change party A, basically dead. We often see a change of leadership in a company, and an unfinished project is highly likely to fail. So, it’s important to be a good party A. Let’s talk about why and how to be a good party A.
No one knows what you’re thinking
There are so many contradictions in the world because our minds are opaque. No one knows what you’re thinking! If you hire someone to do software development for you, you have to tell party B exactly what you want to do, what the scenarios are, and what the problems are. You’ve been in your field for years, and you think something’s obvious, but party B doesn’t. The questions you take for granted may be completely unheard of. Therefore, as a party, you should take the trouble to explain your needs in as much detail as possible. Many software projects to make the effect is not ideal, the bottom line is that party A did not make clear at the beginning. You can’t assume that your needs are common and simple, so party B should make what you want for granted. If the software you want is so common, you don’t need to customize it and buy it off the shelf. Each requirement is unique, so please don’t use the language of “just make something similar to XXX software” to describe the requirement. You say you want a car, and party B makes it, and you say you really want a four-wheel drive, heated seats, and a convertible. This outcome is only one, is to add money, delay, otherwise party B does not work, but you are not happy, buried the seeds of discord.
As the majority of Chinese clients are not mature enough, many Chinese developers and outsourcing teams tend to take foreign contracts, including those from Hong Kong and Taiwan. All the overseas projects I have participated in, without exception, are very detailed demand documents, and the contact person is very patient to explain the business logic to Party B. More importantly, Party A knows very well where his responsibility lies. When there is a problem, he will judge the cause of the problem and will not put all the responsibility on party B. This is something we can learn from and something I often tell Party A we need to improve.
You get what you pay for
We all know you get what you pay for, but why not software development? Why should you ask party B to work for free? Some party A does not realize the value of software because it is invisible. That’s why some vendors put software into servers and sell it at a high price, because the servers are real and they’re happy to pay. Obviously, this is not true. The value of custom development software is labor, although a lot of times the billing is by the project, but actually also by labor time, like decoration. The wall looks like it is charged by square meters, but it is actually converted into the manual area of brushing so much. So when you decorate, brush the wall and find that the color is not satisfied, brush again, can not give money? Any function development, adjustment is a cost, you want to do a lot of features within a limited budget, then you have to accept the fact that it is rough, or you have to accept a long cycle, waiting for Party B to arrange free time for you to do it slowly.
I remember the restaurant theory that you can’t have all three: good, cheap, good service. Very reasonable, almost all restaurants are impossible to take into account these three points, if there is, it will be a lot of people to eat, queueing to death, natural service is not good. The same applies to other industries. How can you expect software development to be “good quality, cheap and fast”?
I am party A, I am the master?
In real transactions, sometimes there is a situation that party A is the father before giving money, and Party B is the father after giving money, so there is the so-called third party. This is especially true of software development, which is not a physical product and is often not fully defined. However, in a successful software project, both party A and Party B are either the master or pure Party A and Party B, each with its own responsibilities and obligations. As the party receiving the money, Party B should have a better attitude towards Party A and be patient, but it should be emphasized that Party A is not above Party B. Let’s start with something informal, and take decoration. The 21st century has entered the second decade, but when we decorate, we still have to send cigarettes to the decoration master? Why is that? Why do you have to buy cigarettes when you already paid for the decoration? This is an attitude that master you work hard. The result is that the master is happy, the work is also fast, the quality is good, horizontal and vertical, to ensure that there is no jerry-building. You can see it in some places, you can’t see it in others. Software development is the same, you respect party B, party B will naturally experience, nothing else, the same function, I can write the code, notes to write more points for later maintenance.
Let’s get a little more formal. If the software development project is completely in accordance with the contract, it is estimated that Party A also has a lot of small tail, everyone does not let who things are very difficult to do. So it’s necessary to get along. In addition, software projects always have minor modifications. If the product definition is strictly followed, Party B may not make these modifications or require additional money. But if people get along well, these small changes are easy to make. These are very realistic situations. After all, software development is still a craft.
This article is addressed to Party A, so party B’s problems will not be discussed in detail. Say a conclusion: if you think party B unreliable, or you give money to listen to him, please replace party B as soon as possible, the money behind do not pay again. Although the cost of replacing party B will be high due to the initial investment, it is better than the project ending badly. And many times of practical experience shows that if Party B is unreliable in the early stage, the possibility of becoming reliable in the later stage is zero. Unless you’re willing to suck it up and get the project done, pull the plug and replace it.
Tangle or deliver?
All programmers know that a program can’t be bug-free, and bugs tend to get more and more fixed, but this is not understood by many party a. What I often tell party A is to see whether the main functions and main processes can go through. Except for some special areas of software, such as finance, industrial control and so on, other software, especially in the Internet field, should be launched first and then perfected. Almost every Internet product I’ve seen follows this path. So, in the vast majority of cases, we should deliver as quickly as possible rather than obsess over minor issues. The average software project has a warranty period, so these minor problems can be fixed over time. This has several advantages. First, there is no rush and the quality will be better. Secondly, with actual users and operational data after the launch, some problems can be more accurately located.
The other thing is psychologically speaking, it takes months to build a software project, and if you keep putting it off, it will affect morale. Although, theoretically, party B is just to help you develop it, whether the line is not related to him, but the sense of achievement is still a little. After the launch, everyone’s mood to fix the Bug will be different, and everyone knows that it has been launched, and there are problems to be repaired in time. All in all, I suggest party A not to be entangled in the delivery stage, deliver first, and then use the warranty period to improve.
You may be party A in software development, but you may be Party B in your field, and thinking about it makes you a better party A.
Finally, how to tell if you are a good party A? It’s simple: is Party B willing to reduce the price by 10% next time and continue to cooperate with you?
(after)
* Note: All images are from the Internet