This is a creation in Article, where the information may have evolved or changed.
This article is based on my presentation at the high-availability architecture group meeting. Since childhood has always been a person, every public speech will feel nervous, can not complete the expression of their ideas, is envious of the speech can talk about people. So I put my ideas into the article to express.
Individuals in the open source is a novice, in early 16 released an open source project, called Go-commons-pool, is a Golang universal object pool, up to now fast 200 stars. Entrepreneurship is also a novice, beginning in 15 as a technical partner to start a team communication collaboration tools. A year to do development at the same time part-time to do a bit of product work, but also do some operating work. Feel that the business and open source of the similarities between the two is quite a lot, so share some sentiment with you. Before you talk about more dry, I this project is relatively simple technology, so I listen to Tim's advice, more mixed chicken soup bar. :)
Whether it is entrepreneurship or open source, the first question to be faced is what? Where does the idea of what to do come from? There are two ways of doing this:
- Observe the people around, observe their own lives and work, observe the habits of everyone, see where there are improvements, see where there are pain points. For example, my pool idea is someone in the group asked questions, I searched the next, found that Golang does not have a common use of the object pool. For example, someone found a taxi so difficult to stand roadside for half a day, so there is Uber. Someone wants to sync files across multiple devices, so there's Dropbox. Some people find that they are doing repetitive work at work, so there are various frameworks.
- Take a look at other advanced areas, advanced areas, whether it can be used for reference, the results of advanced areas or areas to transplant into the backward areas or new areas. Has been a relatively popular copy to the China business is this model, through the development of advanced regions to predict the future trend of backward regions. It is also true that Indigo's share of the high-availability group that day predicted China's trend through the development of Japan's economy and society. I do this pool, in fact, is also an analysis of the Java community situation, I think Golang in the future of the server side of a great job, definitely need a robust object pool, used for connection pooling and other purposes.
Think about what to do, and the next step is how to do it. This step, seemingly entrepreneurial and open source gap is relatively large, but the similarities between the two are still there, in fact, the key point is to assess and arrange the "matter" of the resource input. Resources include money and time. If the previous thought is too big, and the actual resources do not match, the result may be a startup yellow, or open source project created a warehouse, wrote a readme and then did not then. The test is the ability to assess the complexity of things and the ability to control resources.
What happens after the project is made? The next step is how to let your user base know, which is now popular saying "Amway." Pingcap's Huangdongxu just mentioned their marketing methods and channels. The core of this step is to know where your users ' focus is and how to reach your users at minimal cost. Open source projects may be through a variety of open source community or technical people community, their own social networks, technical meetings and other ways.
Initial user reach is completed, the user knows your project, some people may point the star, this part of the person is a potential user. The other part of the person has fork, which is estimated to be ready to be used or made two times developed. How to maintain the current user and attract more users? This is the stage to consider. including but not limited to the following:
- Complete the documentation to teach users how to use it. Do not abandon the user "retarded".
- Respond to user feedback and handle issue. The words of pioneering products is to have customer service system.
Gradually more users, and then form a community, with their own brand. This step, like I do such a small tool can not reach, but such as Pingcap tidb, like Xie Mengjun Beego This framework, have formed their own community and brand.
Summarize the key points in the process:
-
The idea is not abstracted well. In fact, all the tools and products are to do an abstraction, the user needs of the abstract. For example, the classic example, ask what the user needs, the user must say that a faster horse, rather than a car. A car is an abstraction of a user's travel needs. But how do you do this abstraction? I have summed up the following three realms.
- Dry principle (don ' t repeat yourself), do not repeat yourself, most commonly used in code specifications, it is recommended that you do not copy and paste at will, but to do some abstraction. But in fact, all the advanced features of the language, facing objects, modularity, code generation tools, various frameworks, are all in the solution of this problem. In other words, if you find that you are doing a lot of repetitive work, it is possible to abstract a tool out here.
- Don't reinvent the wheel this principle seems controversial, but I think the controversy is not figuring out the difference between "invented" and "made". Don't reinvent the wheel, but you can build new wheels or improve existing ones. This principle is said not to repeat what others have done, do not work behind closed doors, to make improvements on the basis of predecessors. Always think that the person who invented the wheel is very great, it is very difficult, the historical position can and invented the fire of a spell. With wheels, the tools that humans use and the tools that animals use are essential differences.
- Before we do not repeat themselves, but also do not repeat others, the third realm is "do not let others repeat you." Share your tools, frameworks, abstractions, as open source products or SaaS services, and let others not repeat the work you have done.
- Development is slow, competing products appear, or function is weaker than competitor.
- Promotion did not do well, we do not know, the result is beyond the latter.
- There is no real need for things like pool, some people think that the Go channel simulation is very simple, there is no need to use a complex pool. For example, many copy to China projects, found in the Chinese environment is not acclimatized.
- No maintenance after open source, no enthusiasm, no response to user feedback, and eventually lost. This is true for many zombie open source projects.
Therefore, I think the engineers who want to start a business, can start from open source, open source as a start-up exercise. Experience the whole process from conception, development, and promotion, so that you can experience some of the key points in the entrepreneurial process and evaluate your strengths and short boards. After all, he is an engineer, the development of the time can be self-control, the user is also an engineer, the problem is to solve their own familiar areas, the need to spread the community is also familiar with the community, the situation of people and the circumstances of the project or encounter difficulties, you can imagine, if you change to an unfamiliar field, Unfamiliar users, unfamiliar communities, how difficult will it be?
In addition, say a point about the technical person's entrepreneurship. I think Wang Anshi a very good poem "Spring River Plumbing Duck Prophet", our first line of writing code of the engineer is in the water ducks, river changes we will definitely feel, this aspect is advantageous. If you go up, don't write code, run ashore, you may not feel the river changes.