This is one of my thoughts on recruiting and training game programmers over the years. I always wanted to summarize it. The main purpose is to better train the new C ++ programmers of the company, and establish a complete set of systems such as game programmer training, development, and success to become the core backbone, management, and option beneficiary. For MMO game production, solving the C ++ technical team is one of the foundations for ensuring qualified software.
My core h3d studio technicians and game production managers are all members of the smth BBS game production edition. Since, all previous moderators of iner have worked in h3d studio. Here, I will remove the specific training and technical team establishment content and only talk to you about the vital interests of game programmers.
In addition, this is not a case to judge in a descending order. I am not a very senior technician or administrator. I just insisted on doing one thing for a long time and learned a lot. So there are some experiences. In this article, the evaluation of other structures or low levels of people does not mean that my own level is high. Do not misunderstand.
1. Current Situation of C ++ game programmers
C ++ programmers in China 100% are self-taught. Because there are almost no similar C ++ training institutions in China. Everyone knows that social training is the main purpose of making money. It is a great luck to be talented. It is not like sun, a Java company. There is no C ++ teaching in Chinese university education. The basic C/C ++ courses only help students get started. However, for the practical application of C ++ software engineering, the practice of university textbooks is of little significance. Most importantly, the university does not have qualified C ++ teachers. Programming is a technology. The university is engaged in scientific research, and most of them are scientists who rely on paper to earn a living by their professional titles. Not a technician. If you do not have more than 0.1 million lines of code or successful software project experience, it is difficult to teach intermediate and senior C ++ programmers.
The gaming industry has high requirements on C ++ programmers. It is much higher than software in the general industry. Because any MMO is a medium and large software project. The number of daily users reaches hundreds of thousands or millions, and the number of users is hundreds of thousands of online large network multi-person interaction software. It integrates more than a dozen programming technologies in specialized fields.
In addition, medium and high level C ++ programmers are generally very competent. Because they are all self-taught, this requires high IQ, strong self-learning ability, problem-solving ability, and perseverance to overcome difficulties. However, there are not many such talents in the gaming industry. Aside from talking about senior talents with overall large-scale software architecture capabilities. It is also difficult to find C ++ programmers who can undertake independent module development and have the ability to solve problems independently. People with these capabilities and technical expertise (graphics engine, network engine, etc.) are even more scarce.
Therefore, even large game companies cannot meet the needs of C ++ game programmers. The C ++ programmers who have already worked in the company are not able to develop C ++ game programs independently after three months of training and one year of training.
2. Requirements for C ++ game programmers for MMO Game Development
As mentioned above, all MMO games are medium and large software. Various software quality metrics such as space occupation, stability, performance, and maintainability are strictly required for MMO game software. Far greater than general industry software. This scale is similar to that of the banking system. The client and software logic are much more complex than general commercial software. This requires the software compiler to have a high programming quality.
In game software, software engineering is only 1/3 of the project. The other two parts are planning and art/audio. From experience, demand changes are not accidental events for MMO game software, but a basic attribute of MMO game software development. Large investment in game software, long cycle, and high risk. The MMO market is also changing, and interactive electronic games are developing rapidly. Gaming software must face external changes. Because of the long development cycle, software demand changes have become a basic attribute of software development. As if complexity is a basic attribute of software engineering.
This leads to uncertainty in the Development of game software. Interactive Entertainment is different from commercial applications. Entertainment is a field between reason and sensibility. C ++ development faces the binary world logic of 0 and 1. There are irreconcilable conflicts between these two fields. This situation puts forward higher requirements for C ++ game programmers.
First, basic C ++ knowledge and C/C ++ skills must be extremely solid. It is not a knowledge point or skill point that is difficult to obtain in books for game software development. The knowledge system and skill system developed by game c ++ can be satisfied by using existing C ++ books. For example, C ++ paorgramming language, C ++ primer, effect c ++, and more effect c ++. However, before starting game programming, it is very difficult for people who thoroughly read and practice these books. Of course, the person who can really do this is already a senior C ++ programmer. I once met one and went to Google shortly after graduation.
Secondly, we have a deep understanding of object-oriented. Is very important. Proficient in C/C ++ syntax and programming skills, but meets part of the requirements of C ++ game programmers. The profound understanding of the object-oriented concept will bring huge changes to large-scale C ++ project development. Sometimes, in a C ++ game project with more than 10 concurrent developers, the object-oriented method becomes a life-saving tool. Design Patterns and related books are also required courses.
Finally, the essence of good technicians is arrogant. This is normal. However, this kind of habit affects your continuous improvement and teamwork. And when it becomes the technical manager and the technical core of the project, the value of such technical personnel will be greatly reduced. If we move beyond this level as soon as possible, we will expand our horizons and continue to improve our overall quality. Only when the technical management capability and architecture capability are improved will their own values continue to grow. To put it into practice, it means the benefits and personal growth.
The essence of game development is team development. At any time, only valuable technical personnel in a team can reflect their own values.
3. Growth and technological development routes
There are several stages of development for general technical personnel
A. Ability to develop local functions independently
For example, write a logical interface function for a UI. Compile a self-drawn control for a login dialog box.
B. Ability to develop and tackle a function module independently
For example, add a small logical function module to the game.
C. ability to independently design and develop a system
For example, designing and developing an autopatch System
D. Ability to solve technical difficulties and design the architecture
For example, developing a synchronous network simulation system and developing a medium/large game production tool
E. Ability to have the overall architecture, management, and coordination with others to develop a large system
Client master, server master, engine master, etc.
6. Technology ctor
Develop technical development directions, establish technical teams, and manage technologies.
The process of moving towards each stage is accompanied by huge workload and engineering pressure. Sometimes it is a failure that spans one year. It is a good way to switch the organization, start again, or stay in the company as the core team and start from new opportunities when the company's project fails. But the key is to learn from the lessons and try to learn more and practice as much as possible. It also develops based on its strengths. Of course, it is best for game producers to rely on a core team. Become a member of the core team.
The third-level program is already an indispensable talent for the company. However, programmers often have different understandings of themselves and companies. I have met some people who use their brains and write fast. Various technologies are involved. But he is always uneasy about letting him develop and design a system independently. Even a relatively independent tool. It will also be a mess. Keep people in the backend. But you still feel that you are at a high level. This kind of person is impetuous and has a low eye and does not want to do a complete thing in detail. So we can see that he keeps jumping and jumping, but his job in the new company has not seen much improvement. The company attaches great importance to handing over one thing to a programmer. Is it possible for a programmer to complete the matter and complete the matter comprehensively. Even if it takes a little longer, it cannot be done. This will cause fatal consequences to the project.
4. Development Benefits
Based on our own experience, let's talk about how the company considers the treatment of Technical Employees.
The six files mentioned above roughly divide the level of treatment. In fact, at the third level, your treatment is determined by this industry. It is not determined by a company. This is because the gaming industry lacks such C ++ programmers. With this level, it is not difficult to find a job in several major city game companies. Large companies are slowing down, and I am a company of less than a hundred people. Therefore, the industry price should be considered by the company. If there is less, the loss of C ++ programmers in software projects will have a great impact. However, the increasing value is actually the bottleneck of C ++ programmers. If you have been thinking that your level should be so high for a few years, it would be completely dumbfounded to reach a company with a relatively high overall technical level. In this case, it is very difficult for technicians to start over with a low mindset.
In the current gaming industry, where the technology level is generally low, it is not very good for programmers to raise their salaries. Even if a newbie has thousands of levels, he will be given 10 thousand yuan. He doesn't know how much water he has. In the next year, I took 3-4 million RMB. What can be delayed is learning, which affects the mentality. Those who have a good mentality and know the direction of their technical staff, who have 3-5 years to work, if they have the opportunity to take options and equity, are less likely to be higher than those who started from the very beginning, I don't know how many times the height is.
5. Next I will talk about my personal experience in recruiting C ++ programs.
As a C ++ programmer, A has a long growth cycle. If you are a newbie (less than 20 thousand of the code and have not done any large projects), we will look at three points. Whether you are willing to study, have a sense of responsibility, and be smart. Currently, there are not many people who can satisfy these three points.
A sense of responsibility is a matter of character and determines whether it contributes to the company. This is the most important thing. Some people are actually selfish. The contribution of such people to the company is negative. In the end, its own value is also very difficult. Because technology depends on the commercial success of the game to reflect the value. To achieve business success, you need a team to pay for one thing. Whether it depends on how much technical knowledge can be learned. I have realized that there is a big difference in human IQ in the last two years. The higher the IQ, the better. Otherwise, the future is not great.
B. If you have 2-3 years of C ++ program experience, you should check your personality, whether you are arrogant, whether you are aware of cooperation, and whether you change jobs frequently.
First, we should be responsible. It's too selfish, too considerate for yourself, and always regards your own interests as the most important person. No matter how good his technology is.
Then we checked whether it was arrogant. When people are the easiest to be arrogant, they often get started with a technology and make some small achievements. However, our vision is still not open, and we have not experienced the in-depth technical knowledge in this field, and there are no good people around us. At this time, technical staff are prone to arrogance. Moderate self-confidence and arrogance are allowed. However, nothing is done, indicating that there is little room for improvement.
Cooperative Awareness is the key to game development. This includes the ability to communicate, think, and solve problems. A dedicated technician is a terrible thing in the game team. Because game software is not something that a person can do. Due to the complexity of the logic, various technical fields are required and the requirements change frequently. Each step requires the cooperation of the team. There is little hope of survival in the game development field for technicians who lack such awareness or who are not suitable for team development.
As a C ++ programmer, frequent job-hopping resumes are fatal. Anyone who has been doing C ++ For A Long Time knows. It takes a lot of time to enter a huge C ++ software project. After training, project familiarity, and contribution to the project, this time is short. If a person often changes jobs, it means that he has never worked hard on the core of a project. Or, if you fail to do so, you can run away immediately.
C. For programmers with special skills, comparison programmers. C ++ only requires training space for beginners. However, they have high professional requirements. It should have been carefully studied in a certain technical field. Of course, at the end of the company, we have to become a senior programmer who is familiar with C ++. Because any technology in the professional field must be used as a tool in the project.
D. Good C ++ game programmers are not easy to find. If he did well, he had long been a core member of the project. If the project is good, its own treatment will be very good and stable. You do not need to apply for an application through the general recruitment channel. It is either pulled to the company as the core technology to take the option, or start your own business.
Here is an example. Netease has a cloud style. Everyone knows that he is the client master of westward journey 2. He is China's first open-source C ++ game engine developer. A complete set of C ++ game engine code is available. He did this in college. Go To Netease after graduation. With the platform, it became one of the most successful MMO in Chinese history. As a game technician, his value is already very high. We can't tell you how high it is. But you can perform this analysis.
An experienced C/C ++ programmer. He has had successful project experience in China's independent R & D of millions of online games. Currently, Netease has been paying for engine and game products for its independent leadership team for nearly three years. Such a resume has a high value in itself. He can find a job with an annual salary of 100,000 yuan in any company. If he has the ability to manage. Project management or technical management capabilities. The contribution made by a listed company should be measured in millions/year. If he can find a business person, take charge of the helm, and have a certain commercial ability, he can start his own business independently. The angel venture capital attracted tens of millions (otherwise, nothing can be done, of course ). If the product can be made, it is natural for you to reach tens of millions.
I believe that there are not many people with higher levels of game programmers, luck, and development space in China. Then we can take him as a benchmark.
I know many people disagree with him. However, the question mentioned here is not about him. He does not need to judge whether he is not convinced. As a person in a society, it is not measured by the number of lines of code that can be written, how elegant the code is. From this point, the value of technology is 0 before it is converted into a successful commercial product. As a technician, the standard for society to measure his value is not to check whether the code is of superior quality and fast speed. It depends on how much he can contribute to a successful commercial product or company's development. I still don't quite understand this truth a few years ago. As a technician, I believe that most of my fellow technicians are unlikely to understand and agree with this opinion from the root. Here we will not judge the level, but the value. Your value represents your benefits. This is not the decision of a boss, but the decision of a company depends on the per capita GDP, the current industry development level, and the industry sales. I think this applies to all game production personnel. It is made by a technician.