Gains from entrepreneurial software companies
I have worked in two startups. Company A has grown from 3 to 20; Company B has grown from 20 to 60. Neither of the two companies is successful. Therefore, we need to learn more about experience and lessons. Just like teaching materials, the opposite teaching materials have more educational significance. I will talk about my thoughts on the important issues faced by startups.
Flexibility
Compared with large companies, the flexibility of small companies is the core competitive advantage. The flexibility of small companies refers to the ability of small companies to quickly respond to users. When I was in company B, the company was in the expansion period (20 to 60 people ). At this time, the company lost its core competitive advantage.
When we first arrived at Company B, the company's situation was: we have already made products, some hardcore users, and some investors have expressed their willingness to invest in shares, hoping to be listed in two or three years. To go public, the company needs to change the number of people and management. Our company has implemented the following measures:
1. Divide the technical department into various groups. Such as the android group, IOS group, web group, distribution group, and architecture group. In order to improve the company's overall technical strength, the company spent a lot of money to attract experienced people to each group. In the past, two or three people could complete the entire software including Android, IOS, Web Front-end and background services through simple communication. Now, to complete such software, the leaders of each group need to discuss each other and get a compromise.
There are three problems with the compromised results: (1) long time spent; (2) more development leaders will adopt different strategies for their groups, rather than taking the global considerations. The effort of each group leader is not a common product goal, but a partial benefit of each group. (3) The result is determined by multiple people. This will lead to persons not responsible, everyone will share their responsibilities.
The direct result of the three problems is that the company is in a difficult situation of turning around the ship. In this case, you need a person who can make quick decisions on a global scale, and the person who makes the decision can persuade each group to accept the decision. At this time, the company is still a small company and needs to maintain flexibility and fast response capability.
2. Set up the project department and product department. It may be to make the company look more large. The company needs to recruit new employees and arrange some work for them. The Project Department and product department have recruited many employees to plan and manage the work flow of the Development Department. New employees have two problems: (1) lack of experience, many of which are not long after graduation; (2) Lack of technical background and inability to manage technical R & D. At the same time, the development team leaders are experienced and have certain management capabilities. When managed by persons from other departments, there may be discooperation.
For example, the Project Department should control the progress, and the development team should spend as much time as possible. The Project Department cannot assess the rationality of the time. The Project Department cannot decide who should assume the corresponding responsibilities when pushing responsibilities between the group and the group. The product design made by the product department usually does not consider the cost of development and implementation. As a result, when development is performed, a large amount of time is spent to meet the non-core features of the product. These situations make the Project Department and the product department have to be indirectly managed.
Indirect management means that all developers in the Project Department should evaluate their own time and negotiate with the development team on time. For example, it takes one month for the web group to evaluate. The Project Department will say that one month is too long and we will submit it to the customer for demonstration in half a month ...... The product department uses the development team (rather than the user) to find defects in the product design. For example, the android Group finds that the Code implemented by product design is inconsistent with the Web end, which in turn leads the product department to reconsider how to maintain product consistency.
Indirect management enables the entire company to continuously consume human resources internally. A department that makes a product should not only make the product, but also manage the project department and product department. Such organizational forms are difficult to adapt to rapid changes.
When the company plans to expand its business scale (20 to 100 people) at the early stage, it often focuses on simply expanding its business scale, while ignoring the advantage of continuing to maintain its initial stage-flexibility. This results in longer response time and slower user growth. The high and low value of an enterprise depends on the user, rather than the company's management level and technical level. Only by quickly responding to users can we continuously improve the company's value.
Existing users
When I was in company A, there were only seven people in the company. Two entrepreneurs and five new graduates. I am one of the students. At that time, the old man just came out from a large company and had a certain business relationship, so he could easily obtain customer orders. We started with a project for a customer for two years. In the past two years, the company has made some profits. This is precisely because there are indeed users.
The company switched to an Internet product for development. When making products, companies tend to ignore actual users. More importantly, they want to imagine some users and then design the products according to the user's needs. This is what our company did. As a result, the actual number of users of products is relatively small and it is difficult to grow. This puts Company A in a passive position.
At the early stage of the company's business (2 to 20 people), we must make products that do exist for users. Although the product is not perfect, if it can solve the user's problems, the user will have a high degree of tolerance. At this time, all users are professional users, and the suggestions are of great significance to improve the product. After the product is complete, these users can also promote the product through word of mouth. Therefore, the existence of users is essential for the success of entrepreneurial users.
Define product version
For a product, the recommended version management is as follows:
Version Number |
Version name |
Version description |
V0.1 |
Development version |
It is designed for dedicated professional users to solve their actual problems and continuously improve their products based on their suggestions. |
V1.0 |
Official version |
It can systematically solve problems in the industry, and the Code may not be easy to maintain and the efficiency may not be high. |
V2.0 |
Upgrade official version |
Completely rewrite the code of the first version to solve the problem of maintainability and low efficiency. |
Vx.0 |
Subsequent versions |
At this time, the company has been operating, and subsequent versions will be adjusted according to the company's operations |
The first three versions need to be concerned during the period from the initial stage to the expansion period.
Development version (v0.1 ). A usable product can be quickly developed to solve the actual problems of users in a certain field. It is emphasized that if the version is released too early, it will lead to a loss of user confidence if it cannot solve users' core problems. However, it is necessary to avoid developing a perfect system. Simply put, it is to develop a product with core functions, so that users can complete the product during use. In the complete process, we can further introduce v0.2, v0.3, and other versions.
Official version (V1.0 ). When this version is released, users have been able to systematically solve problems in their fields. For example, in a sales system, the core function is the invoicing function. during use, users can generate such functions as report generation, salary management, and personnel management. These functions are constantly improved in v0.x. By V1.0, users can use this software to solve the entire sales issue.
Upgrade the official version (V2.0 ). V1.0 is constantly accumulated through code repairs and supplements. The code is not easy to maintain, and the performance bottleneck is unknown in the early stage. When you use V1.0 in actual production, performance problems may occur. This is the problem to be solved during the upgrade of the official version: 1. re-design the entire software to make the code easy to maintain; 2. Solve performance issues such as V1.0.
Is the more people recruited, the better?
Start-up companies should minimize operating costs. You can save your company's site selection, recruitment, and expenses. For software startups, the biggest expense is labor costs. If the company has spent a lot of labor and can achieve the expected results, this is my next question.
The software industry has a book called The Mythical man-month, which was published 20 years ago. The content in the book is still very useful. The core of software development is to maintain the uniformity of concepts. A large number of developers may need to spend more time communicating to maintain the uniformity of concepts, resulting in a waste of time. That is,First, a large number of people cannot make development faster. At the same time, communication may produce an ambiguous understanding, which may lead to inconsistent concepts. That is,Second, many people are more likely to introduce bugs in the software..
To maintain conceptual Uniformity means that all parts of a software are in a software environment. Each module of the software works together to complete the overall functions of the software. When the concept is broken, developers only see the local information and do not understand the global information. Introduce other local problems (introduce bugs) while doing a good job ). This requires local developers to resolve conflicts, which results in a waste of time for communication.
Therefore, a programmer with a monthly salary of 1 W will not be less efficient than three programmers with a total salary of 1 W. Especially in entrepreneurial companies, programmers are more efficient when they work for themselves.
Of course, the fewer people, the better. A startup company has the following main problems: 1. Make the product; 2. Sell the product. The number of people depends on these two points. The person to be recruited is either the person who can make the product or the person who can sell the product.
After recruiting people, we also need to consider cooperation and other ways to exert people's enthusiasm. It is easy to make a person motivated, and it is very difficult to make ten people motivated.
Requirements for software startups
A software start-up company requires at least two persons, one responsible for launching the product (CEO) and the other responsible for launching the product (PA ). If the CEO has a certain understanding of the technology, it will be more advantageous.
CEOS must have the following capabilities:
- Persuade others to accept themselves
- Calm and calm handling
- Strong integrated and unified capabilities
Pa (programming artist) must have the following capabilities:
- Master the technologies required for each lifecycle of software from requirement, design, implementation, testing, and O & M
- Features of hackers: Fun, high IQ, and exploration spirit (from hacker and painter)
Gains from entrepreneurial software companies