[51CTO.com original article] The career planning of IT engineers makes many people very entangled in choosing the technical route or the management route. Technology or management, how should programmers plan their career path? What problems will they face when switching from technical positions to management positions? How to fully demonstrate their own value? What preparations should entrepreneurs with technical backgrounds make in advance? Let us discuss the career development route selection and planning of engineers with Mr. Zuo Huadong. Expert Profile The founder of Shaanxi Benchu Network Technology Co., Ltd., majored in Business Administration at Xi'an Jiaotong University City College. Jianfan Studio was established when he was in college. The team mainly developed websites for schools. When phpwind9.0 was released, Jianfan Studio produced many plug-ins and became the third-party developer with the most phpwind9.0 plug-in templates at that time. Later, he founded Benchu Network and engaged in website construction and other related services, involving software and hardware. He has very rich experience in product, technology and operation integration. The sharing mainly starts from the following four aspects
1. Technology or management, how should programmers plan their career path? 1. Personality assessment: Are you suitable for management? 2. Career path assessment: Is management a must?
2. What problems will you face when switching from a technical position to a management position? 1. Technology selection. 2. Whether it is suitable for agile development. 3. How to avoid rule by man. 4. Execution is the key to management success or failure.
3. How to fully demonstrate your value? 1. Teamwork ability. 2. Ability to control progress.
4. What preparations should entrepreneurs with a technical background make in advance? 1. Be fully prepared that human hearts are much more complicated than technology. 2. Management costs will increase significantly as the number of people increases. 3. Make a good balance between management costs and development costs. First of all, I would like to thank 51 CTO for giving me this opportunity to share, thank you all for giving me the opportunity to talk, and thank you Gitee for your continued support for our project. I am ashamed to say that I am not a winner, but a loser with many failed experiences. I would like to share with you some of the pitfalls and solutions encountered by our team in the process of technology and management. Since I am using Linux Mint, QQ may crash, I hope you will be more tolerant. That’s about what I’m going to talk about today. 1. Technology or management, how should programmers plan their career path? The first big question: Technology or management, how should programmers plan their career path? First do a personality assessment – are you suitable for management? There are probably hundreds of answers to this question online, many of which are just nonsense. I want to talk about this question from an experience perspective. Being indecisive, having difficulty making decisions, and changing one's mind every day confuses those being managed and casts doubt on the credibility of the company's management. This may happen to some extent due to lack of confidence in the initial management. We also encountered this problem in the early stage. All the systems and policies involving the whole company were notified in a unified manner. We first tried them out for a while to see the overall situation. Even if we wanted to make changes, we had to wait until the next time we notified all employees. However, we don’t need to worry too much about this. This is a defect that can be overcome. We should pay more attention to these issues in our daily work. Serious pessimism, lack of security, always seeing the shortcomings first, feeling pity for others, and always having delusions that there are always bad people trying to harm me. This kind of emotional problem is quite serious and often has a negative impact on the team. The team needs more positive energy. If the management is full of pessimism, the people being managed will definitely not be very motivated. This problem is quite serious, and it is recommended to overcome the psychological factors first. This emotion will affect the development team, so try to think positively when it happens. They don't like to take responsibility and look for a scapegoat when something happens. They get angry easily and often blame the people being managed for not having execution ability. They are eager to find someone to train and cheer up the people being managed. It can be said that this is very common and widespread. There are many medium-sized companies that like to train and brainwash their employees to make them have execution ability, but this kind of cheering behavior is precisely an excuse for managers not to take responsibility. This situation is more common in medium-sized companies. The actual reasons are: first, the manager did not emphasize it many times, and second, the interests of the people being managed conflict with the interests of the company. The impact of this problem is not obvious in the early stage, and it is recommended to gradually overcome it at work. Some companies also conduct training and lectures at every turn, hoping to improve execution ability in this way. In fact, the managers themselves need to be improved the most. I have seen a saying before: Japanese companies have high execution ability because they often repeat tasks more than three times. Focusing on personal relationships, not distinguishing between work and life, doing things based on feelings, and unclear about rewards and punishments. First of all, try to put aside personal relationships at work. If it is really difficult to choose, it is recommended not to manage, otherwise it will lead to serious cliques and internal corruption in the company. Whether it is rewards or punishments, they must be based on the company system. In addition, if special approval is required, it must be applied through the process, and then the system must be continuously improved. This problem is quite serious, and I suggest that we try to overcome it first. This problem is quite serious, I suggest you try to overcome it first. Similar situations have happened in our team before. We felt that we had been together for a long time and we couldn't bear to dismiss the employees with negative energy, which eventually affected the resignation of core members. In general, for the public, you should do what you should do, whether it is a dispute or a reward or punishment; for the private, you should eat when you should eat and have fun when you should have fun. It is very important to be able to handle this relationship accurately. Employees who have left our company sometimes come together for a meal or something, and the manager’s mentality should be: there was no grudge in the previous life anyway, so why are there so many complaints? In the early days of our team, due to the lack of unified overall planning and the fact that everyone was too independent, everyone was always doing what they thought was right for the company, which resulted in a serious waste of resources. If a soldier is incompetent, the general will be incompetent too, which also shows the importance of the manager's character. Therefore, we cannot always do things in an independent and independent way. Even if we are very capable, this may have a negative impact. 2. Career path assessment: Is management a must? After completing the personality assessment, the next step is to know whether you must do management, or take the management path. Management is one of the paths that many programmers choose, but it is not an inevitable path. Management does not mean that you can enjoy a comfortable life from a high position. The greater the power, the greater the responsibility. For example, if you are required to launch the product the day after tomorrow, and you have more than a dozen programmers struggling to fix the bugs, what should you do at this time? Find external help, or work overtime? How can external help quickly familiarize themselves with the company's projects? How to calculate overtime pay? How to avoid dissatisfaction? What if you can't finish the overtime work? If you are already overwhelmed by this, rethink whether you really want to be a manager. Good management does not necessarily mean good technology, but at least the managed must be convinced, especially when there is a chain of contempt for programmers. For example, in a certain company’s shopping mall system, it is said that all PHP has been replaced by JAVA because the technical director is familiar with JAVA and feels that he cannot manage PHPers. Of course, there are also some who prefer the traditional way of managing code using FTP, which results in everyone having to download about 5G of code and files for synchronization every day, often overwriting each other's files, and the company does not make code standards. In this case, if you still want to improve your skills, you should either participate in management yourself or leave as soon as possible. For the final route evaluation, I still hope that everyone can make a table for comparison to see which ones can be abandoned and which ones can be overcome. By the way, the team of the guy who used FTP to manage the code later collectively opened a Thunder membership to solve the download problem. 2. What problems will you face when switching from a technical position to a management position? Then the second big question is: What problems will be faced when switching from a technical position to a management position? 1. Technology selection Technology selection is an issue that a technical manager must consider. In addition to considering the current company situation, business and market conditions, you should also understand the talent recruitment situation. We started out mainly working on the web, using PHP for the backend and the Laravel framework for code quality, but it was particularly difficult to recruit Laravel people in Xi'an. With the release of vue, our company used Laravel for the backend and vue for the frontend, which to some extent reduced the workload on the backend, but the Laravel recruitment problem has not been well solved, and there is a high turnover of staff. Later, as the business scope expanded, I found that pure PHP was increasingly unable to handle some high-concurrency and embedded scenarios alone, especially with the popularity of single-page applications today, which require the backend to provide APIs. During this period, I also learned about swoole and reactphp, but it was relatively more difficult to recruit people and the training cost was higher. It was also very difficult to recruit people for node.js, so we finally decided to recruit people who could switch from Java to node (due to cost and other reasons, we did not recruit mature Java engineers). In order to reduce the situation of discomfort and we also hoped for a better architecture, we chose the nest.js framework, which is a node version of spring. We also used typescript to unify the front-end and back-end languages. In order to better adapt to typescript, we finally chose React (it has a large number of downloads and usage, and a mature and stable community). Through this transformation, our actual development costs have dropped by 30-40%, development efficiency has increased by more than 20%, and performance has been greatly improved (in business scenarios, the node.js asynchronous non-blocking mechanism performs very well). This is not to say that PHP is not good, but if you want to use some good technologies and frameworks, you should still consider the local talent market situation. If you are confused about technology selection, you can communicate with us. However, on the issue of technology selection, it is not recommended to blindly pursue new technologies. You should consider the actual situation. Of course, it is not recommended to be too conservative. Trying some new technologies is still beneficial to your future development. Don't worry too much about the quality of the language. It mainly depends on market demand. 2. Whether it is suitable for agile development. Agile development is basically a standard feature of a good company. Despite this, I still do not recommend agile development for some small teams. On the one hand, it has very high management requirements, especially when the company's project management has not yet taken shape. Blindly advocating agile development may be counterproductive and eventually lead to mutual shirking of responsibility. In addition, agile development is not suitable when the team members are unstable. Of course, if none of the above problems exist, then I strongly recommend switching to agile development. We are currently using a mixture of agile development and waterfall development. In addition, whether you use agile development or not, I recommend using git for code management. Both GitHub and Gitee, which is more in line with domestic usage habits, can be used. The most important thing is that Gitee is free to create a private library, which is quite conscientious and is a good "net disk" for code. For our team, there are three main branches: one is internal development, the second is external development (some outsourcing), and the third is our open source project Notadd, which is equivalent to three teams. Using Gitee Enterprise Edition to manage and assign tasks and view task statistics has greatly facilitated us. This is our team's Notadd open source repository: https://gitee.com/notadd/ (An open source modular development framework based on a new technology stack that can greatly reduce project construction costs. Currently, PHP and node.js versions are under development.) This is the main project of our team. We expect that future development will be scalable and modular, which can greatly reduce the amount of repetitive work. At the same time, we will use some new technologies to continuously improve the user experience. Everyone is welcome to submit PR to us. According to our experience, Code Cloud is more suitable for small and medium-sized development teams. In addition to meeting basic code hosting needs, it can also conveniently support project management and document collaboration needs. Of course, small teams can use the personal version of Code Cloud to create a private library. 3. How to avoid rule by man. The view on things and people must be separated. This is a rare quality for managers. It is very important to be objective and not subjective. Regarding the rule of law, I recommend watching "The Qin Empire: The Splitting". Regarding the section on Shang Yang's reform, I think that for Qi, only Shang Yang's legal system could be continued in the end. Let me give you an example of a typical rule by man: I had a friend who went to the company at 8 o'clock. The boss sent out a notice at 8:10, saying that everyone must arrive before 8:40. Because he didn't check his phone and was "late", the boss deducted 200 yuan from his salary in order to establish his authority. The boss had the final say on whether to deduct or how much to deduct, and there was no corresponding system, so he chose to resign. In terms of management, it is normal to have loopholes, but we should correctly recognize the problems, modify the corresponding rules, and notify them instead of giving special treatment to all of them.
In addition, equality does not mean absolute fairness, and individual differences should also be considered in management. 4. Execution is the key to management success or failure. The execution here refers to the execution of managers. As a manager, you should strictly implement the system. The system can be loose, but the execution must be strict. Don't be afraid of trouble in the early stage. After forming a habit, it will be a virtuous circle. Even if you are not the one who carries out the tasks yourself, you should conduct in-depth assessments of the executors to ensure the effectiveness of the execution. A system that does not talk about rewards and punishments is just playing rogue. If you violate the corresponding system, what kind of punishment you should receive should be determined in advance, otherwise there will be many pitfalls in subsequent implementation. 3. How to fully demonstrate your value? 1. Teamwork ability. As for management, what should be cultivated is a team, not a talent. Teamwork ability is a foundation. Using git, formulating code standards, naming requirements, and unifying the environment are all ways to minimize differences between team members. In fact, due to differences in personal abilities, it often happens that code written by A requires a lot of effort for B to understand. At this time, it should be considered that each member must continuously improve the development documents and instructions during the development process. There is another situation that is particularly common, especially for some inexperienced programmers. For example, when they are working on a small function, they do not search on GitHub or Gitee first, but write it themselves. After filling in all the gaps, they find that some great people have already written it online and it is open source. A lot of work is done in vain. You must develop the habit of searching. Of course, it is not recommended to search everything. Our company had this problem before. After searching, we were confused about which one to use, and then searched for several hours. It is also a good idea for the company to establish a commonly used open source library, and everyone can put the links of the good libraries they often use. 2. Ability to control progress If you do project management without good progress control, this will make you unwelcome in many companies. Progress is the lifeline of many development companies. On the one hand, we need to make a good time assessment, including the time allowed by the project, the time arranged by the project management, and the time that can be completed due to differences in personal abilities, and reserve plenty of time for bug fixes and possible project delays. The time given by developers is often unreliable. During the process, it is necessary to control the progress of daily management. It is not recommended to include weekends in time assessment. In the actual development and adjustment process, you can decide whether to include evenings and weekends (overtime) according to the project situation. If overtime is frequent, it is recommended to give developers more vacation time after the project is completed. Emergency remediation. Generally speaking, it is difficult to find external assistance for remediation unless the other party is very experienced. We have also encountered the situation where the remediation team ran away. On the other hand, we should communicate with sales and marketing as much as possible to calm Party A's emotions. At the same time, we can launch some major functions first. If there are many such situations, we can find a reliable team for long-term cooperation (for firefighting). Don't make too many progress promises, try to reserve more sufficient time, and never be overconfident about the project progress. At the same time, ensure the security of the project code. All project codes are based on git submissions, which not only facilitates collaboration and prevents code conflicts, but also prevents some accidents. We have a history of blood and tears of hard disk damage. Should we build our own system or use a cloud platform for code management? In fact, it is very expensive for small and medium-sized enterprises to build their own gitlab, and there is no guarantee that the code will not be lost. The cloud platform will make multiple copies of storage and regular backups, so even if the local and remote repositories are accidentally deleted, they can be restored, which is unmatched by self-built systems. It is recommended that teams with conditions purchase some paid versions of Git hosting platforms, which generally have agreement guarantees. The reason why our team's Notadd project uses Code Cloud is to prevent the recurrence of the above tragedy. 4. What preparations should entrepreneurs with a technical background make in advance? The last big question: What preparations should entrepreneurs with a technical background make in advance? 1. Be fully prepared that human nature is much more complicated than technology The same is true for management. For many things, the original intention may be good, but the execution eventually goes wrong, and the final result is that good intentions lead to bad results. We often encounter developers passing the buck, with the front-end blaming the back-end, and the back-end blaming the front-end. Some developers are afraid of offending others and take the blame themselves. The division of responsibilities must be clear, and any problems must be raised at the time (for example, the back-end interface is not finished) to prevent the phenomenon of passing the buck. 2. Management costs will increase significantly as the number of people increases This problem may not be obvious when managing a team of just a few people at first, but once the number of people increases, the management cost will increase quickly. Let me give you a simple example: for example, in order to solve the problem of corruption among some sales staff, a sales monitoring team is set up. Then, in order to solve the corruption problem of the monitoring team, a monitoring team is set up to monitor the monitoring team. The cycle will continue like this. Management costs will inevitably increase significantly, but it is the sales staff who ultimately create value. Zhihu has an interesting article that is worth reading: https://www.zhihu.com/question/22977065/answer/236152323 The story of washing dishes, in order to solve the problem of detergent being stolen (low cost), the management cost in the end far exceeded the cost of detergent. 3. Balance management costs with development costs Management is a means, not an end. Excessive management of a small team is highly discouraged. As mentioned above, don’t forget the original purpose for the sake of management. In fact, we need to balance the management cost and development cost, and consider how much benefit and value this can bring, and how much manpower is lost in management. What is the purpose of doing this, and is there a simpler way? In short, it is more recommended to increase small costs in management to solve large development costs. At the end, I want to talk about something else. As a manager, I always hear people say "existence is reasonable", but this is a misunderstood statement. The reasonableness here is not in line with human ethics. It should be combined with the original philosophical thought, but in line with the absolute spirit of its existence. Otherwise, law and crime exist at the same time, why should the law punish crime? That's all for today. Thanks to 51CTO for providing the platform, and thanks to Open Source China and Code Cloud for their strong support. Finally, friends who are interested in our project are welcome to star our open source project Github: https://github.com/notadd/notadd Code Cloud (Gitee): https://gitee.com/notadd/notadd (Node.js version is under development) I also hope to discuss the appropriate management method with you in the future. Thank you again for listening to me. Today, I sincerely thank the official of 51CTO. Without him, there would be no wonderful push. The following questions are from the 51CTO developer community friends and sharing Q: Java-Jelly-Shenyang: Teacher, what do you think is the biggest difficulty for a programmer to switch to a management position? A: Mr. Zuo from Benchu Network: Overcome your own character flaws. Technology can be improved, abilities can be cultivated, but character flaws are more difficult to correct. Q: Java-Zang Xi: I am confused now. I don't know how to improve. I am at an intermediate level. I feel that my foundation is poor and I don't know how to learn new technologies. I keep repeating the same thing over and over again. I don't know which aspect will improve me the most. Do you think it is caused by doing too much hard work? A: Mr. Zuo from Benchu Network: What are you confused about? Do you feel tired from development or do you think your leadership is weak? Find a direction to learn first. For example, if you want to do business and focus on architecture, you can write node interfaces in Java and deeply learn Python to do web development - PHP. As for frameworks, it is recommended to learn the more general ones first, and then learn the more advanced ones. Once you learn one, it will be easier to master the others. Q: Java-Zangxi: Teacher, is the self-taught degree useful? A: Mr. Zuo from Benchu Network: Education is not that important for small and medium-sized enterprises, but you have to be able to answer questions. Someone in a forum boasted that he could write distributed search in an interview, and he was hired with 16K, but... Q: Java-Zang Xi: It seems that many of the questions asked now are about the underlying principles. How should this be dealt with? A: I suggest you start with Linux, and then learn more about technical articles. Your interest in this area will improve very quickly. Q: Liaoliao1157: Which direction should technical secondary school students go? A: Mr. Zuo from Benchu Network: To be more realistic, many companies still value academic qualifications, especially the Fortune 500. If you have the ability to lead a team, the situation may be much better. Q: C#-LMY-Yantai: There is no one to guide fresh graduates in the company and it is very difficult for them to do their work. How should they improve themselves at this time? A: Mr. Zuo from Benchu Network: If there is a technical person in charge, you can ask him for advice, or talk to the leader. In addition, you can also learn some courses by yourself. There are also some people around me who learn programming and work in TV stations. Q: Java-Jelly-Shenyang: Is it reliable and feasible for a programmer to take the PMP exam first before becoming a project manager? Q: Mobile Security-Warlord-Beijing: Teacher, I am also curious, is PMP reliable and is it worth taking the exam? A: Mr. Zuo from Benchu Network: It is feasible, but you should also pay attention to accumulating project experience, as the actual situation will be more complicated. Q: Xiaobai-Commander-Shenzhen: I have no basic knowledge now, how can I learn? I want to do web development. A: Mr. Zuo from Benchu Network: It depends on the direction. Do you want to work on the web or interfaces? You can look at node.js or php. If you have a js foundation and want to learn web in depth, choose the former, otherwise choose the latter. However, in the current situation of PHP, there are many programmers who only know the php framework, and the overall level is relatively low. If you work more deeply, the salary will be very high. Q:java-Yafeng-Hefei: Why use nodejs? A: Mr. Zuo from Benchu Network: Looking at the annual report of GitHub, first, there are more and more open source projects of JS, second, large companies are increasingly fond of JS and its derivative products. Third, the number of packages on npm. The current advantages of node are, first, it is easy to use in the front end, second, it has performance advantages over PHP, and third, it is the ecosystem. Of course, PHP's web status will not be shaken by any other language for the time being, and many companies will also consider the development cost. This depends on the company's situation. Recruiting people is a cost, development efficiency is a cost, and maintenance is also a cost. If you are the person in charge of technology, I suggest you use new technology when the increase in enterprise costs is not so obvious. From the company's perspective, it also depends on the business. If you are outsourcing and maintaining a bunch of systems, then don't upgrade blindly. Q: Network Administrator-Solo-Guizhou: @本初网络-Teacher Zuo, can you tell us about your career plan? Let’s learn from him. A: Benchu Network - Teacher Zuo: Everyone’s situation is different and there are individual differences. Q: Xiaobai-Commander-Shenzhen: How should I learn by myself? A: Benchu Network - Teacher Zuo: MOOC.com and Tencent Classroom are both fine. Q: Backend - Doctor Chen - Beijing: Regarding technology selection, it was mentioned above that it is a team decision. How does the business consider this issue? A: Mr. Zuo from Benchu Network: For example, if you are working on embedded systems, you can only choose C and C++. If you are working on web, you can choose PHP, node.js, and java. If you are working on interfaces, you can choose node and golang. If you are working on algorithms, you can choose python, golang, and C++. Different languages have their own scope of application. Then you can weigh the cost and the situation of the side job. Q: Backend - Dr. Chen - Beijing: When the business develops to a certain extent, should we select new technology or increase scalability? A: Mr. Zuo from Benchu Network: It also depends on the business situation. If the historical burden is heavy, give priority to scalability. If the historical burden is not heavy and re-selection can solve many existing problems, then consider re-selection. There is no absolute right or wrong. Q: Network Management - Solo - Guizhou: Technology, due to the financial industry, we no longer have our own R&D team. Age is also a barrier, so it’s a good time to learn and find a new direction. A: Mr. Zuo from Benchu Network: I am not very clear about your specific situation, but I also suggest that you make a table for comparison. Self-developed teams have their own advantages. Not self-developed also has its advantages. Q: C++-Fengxi-Xi'an: I would like to ask Mr. Zuo how to cultivate a technical atmosphere in the team A: Mr. Zuo from Benchu Network: First, solve the relationship between products and technology, and let the products understand the technology. Let me give you an example. Wuhan Deepin Technology has a bug contest every Friday to see who can eliminate more bugs. If you have time, you can hold an internal technology sharing session to let developers learn new things and discuss with everyone. Q: Architecture - Xiong Da - Chengdu: How to see who eliminates more bugs? A: Have the product team sort out the bugs on Thursday, and rank them on Friday based on the number of bugs resolved. Then there may be small gifts. I’m just giving an example. Q: Network Manager - Solo - Guizhou: 32 years old, bank programmer, will I switch to a business position? Most of the banks are outsourced, and there are few promotion channels for management. Will I switch to another industry? Or will I change jobs? I can't bear to give up the bank's treatment. Only business personnel can take up management positions. Currently 20k, but there is no promotion channel. A: Mr. Zuo from Benchu Network: I am not very clear about the banking system, but 1. You have to be able to afford the energy, and 2. Are you pursuing stability now? Especially considering your family. Q: Network Administrator - Solo - Guizhou: If I change jobs, will many companies still want programmers in their 30s? I am the one who takes the lead in connecting almost all the systems of the bank, and I know a lot of things. A: Benchu Network-Teacher Zuo: I think the interpersonal relationships in your position are more important than the ability you mentioned. Q: Java-Shenzhen-Fandy: I have paid attention to some recruitment requirements. Currently, the IT industry has high technical requirements for project managers. However, in the actual development process, many project managers generally only do coordination, design or technology selection, and do not participate in actual code writing or technical problem handling. Is this a contradiction? Will the recruitment requirements limit the career development of technical project managers, or increase the threshold for job hopping or further development? As for whether project managers are more management-oriented or technical-oriented, I feel that in reality, the technical requirements are higher. A: Benchu Network - Mr. Zuo: Except for general outsourcing companies, as long as the enterprise is developing normally, it will definitely be exposed to more and more technologies. [51CTO original article, please indicate the original author and source as 51CTO.com when reprinting on partner sites] |
<<: The evolution of web-based "application jump" technology
Tencent Technology News: In recent years, Apple s...
Many people may now ask: Can Douyin continue to o...
1. Overview In 2024, based on the scenario charac...
Those who have made or played Douyin know that Do...
In the hot summer, have you noticed some transpar...
Opening up a new model for Sino-US Internet coope...
Today I’m going to talk to my friends about Zhihu...
Before I officially share, I would like to briefl...
As the aging process of the population accelerate...
To learn to fly, you must first learn to walk. Wh...
1. Do not push the battery car into the elevator ...
At the age of 18, he worked as an assistant Fight...
Recently, NIO issued an announcement stating that...
How to track friends’ location using WeChat mini ...
Some time ago, I wrote an article titled "Wh...