From programmers to Technical Directors, sharing 10 years of development experience

Source: Internet
Author: User
In China, many people think that it behavior is for youth. If you are 30 years old, it will be difficult to develop again! In fact, this is not the case. net and Java development has been around for 10 years. Here, I would like to discuss with you through my own experiences.

  Define the purpose of the incoming row

Many people work on the IT line and aim at "high income" because it is not difficult to be a page developer to learn a little bit about HTML, div + CSS, in addition, as a page developer, it is easier to find a job, and the income is higher than that of ordinary jobs, it has become the choice of many college graduates. If you just want to do so, you must be careful. Because the competition for it is fierce, especially in page design, there are many developers. To save costs, most companies will only recruit such personnel as needed; in the absence of orders, some small companies may also seek various excuses or use pay-as-you-go methods to expel such employees. On the recruitment information, we often see "recruiting page designers, conditions: under 30 years old ...... New graduates are welcome to apply. "This is because this type of staff does not have high technical requirements. Finding new graduates can save costs. Therefore, the phrase "it is for the youth of the IT industry" is just for people like above. If you lack the "Enterprising heart", you only need to hold "high income, it is easy to find a job. "If you enter this kind of attitude, the" IT industry is eating youth meals "will be fulfilled.

  Select an appropriate tool

Java, C #, PHP, C ++, VB ...... Which of the 10 popular development languages has the greatest potential for development? In fact, the development language is just a tool. "instead of spreading the attack, it is better to give a full blow, to a certain degree of familiarity, it is easy to learn another language. There are three main types of development languages:

1. Network Development

Now the network has become a bridge for communication in the world. For example, JavaScript, PHP, and Ruby are mostly used for network development.

2. Enterprise Software Development

Java, C #, and VB all achieve the object-oriented development goal and are more often used for enterprise system development.

3. System Software

C language, C ++, and objective-C are mostly used in System Software Development and embedded development.

Of course, this classification is not absolute. Java, C #, and VB are often used for dynamic website development. In many development projects, integrated development is used. In the same project, multiple development languages are used, and various development directors are used for simultaneous development. However, when you get started, it is recommended that you first select a suitable development tool for yourself, "focus on learning, and make every effort ".

  Clear development direction

When you have a certain understanding of a development language and begin to feel like a zombie and become a development tool, then you should clarify your development direction.

Usually in the company, you can see that the majority of developers working on the UI Layer are over 20 years old, they are full of energy, and there is no family burden, two years ago ASP. net MVC, Silverlight, and so on, when they first appeared, they could buy a few books at home in the evening or visit the Internet directly. After three or five weeks of study, I have a certain understanding of the technologies that need to be used. Most people who have been home since the past 30 years, and their only hope to go to work at every day is to arrive at and have dinner at home. After dinner, I just want to spend some time with my children and look at their homework. I don't have the desire to learn new technologies. So many programmers close to 30 years old have a sense of coercion (including myself at the age of 30). What should I do in a few years? At this time, you should clarify your goals and strive to move towards your own development direction. To sum up, you can select a suitable path from the following items:

  1. Transition from technology to business

In foreign countries, many developed countries place great importance on talents. The income difference between a Senior Programmer and a project manager is generally no more than 15%. However, China is the country with the largest population in the world, and there are a large number of domestic talents, so the abuse of talents is often seen. A small company's Development Department often sees new faces, but PM does not change. Because the boss knows nothing about the technology, and in their opinion, they only need to hold the PM's mind, so the technical aspects can be decided. As for the technology department, we need to change people, they don't have to worry about it. Therefore, the transition from a technician to a PM is a forward choice, but developers also need to know that to become a PM is not just a technology, what is more important is the understanding of management. A pm is mainly responsible for organizing teams, controlling costs, managing businesses, controlling project progress, communicating with customers, coordinating work, and conducting regular work reports. Therefore, to become a successful pm, we must pay more attention to organizational skills. PM must be able to improve the enthusiasm of the team, give full play to the team's strengths, and maximize profits for the company with limited development resources. After becoming a PM, we usually do not need to directly access technical development, but focus on business development, however, PM also needs to have a certain understanding of the technology (I wrote an article about the necessity of PM's understanding of the technology, which won a lot of support but caused a lot of controversy ). Here I want to emphasize my point of view: To be a successful pm, the most important thing is the management capability, but I should have enough knowledge about the technology, this is a bridge to communicate with team members. Only in this way can we closely integrate with the entire team members, so that the team members can feel their own meaning and mobilize the enthusiasm of the team, instead of ignoring the existence of technicians. Technology is not a sufficient condition for a successful PM, but a necessary condition!

  2. Development from programmers to Technical Management

In fact, a team leader has the same responsibilities as the project manager, but the team leader focuses more on technical development. Generally, a large project has two development teams under the leadership of the team leader, responsible for the core part of development, the other part is assigned to different development teams or outsourcing companies. I often see a few words on the internet, describing the difference between PM and TL: "technicians are willing to be led, but they do not like to be managed, I do not like to be driven or commanded like a cow. Managers force people to obey their commands, while leaders will lead them to work together. Management is objective and has no personal emotional factors. It assumes that the manager has no thoughts or feelings and is told what to do and how to do it. Leadership leads and guides people to achieve their goals. Leadership is highly emotional. It is not what you can command, nor can you measure, evaluate, and test ."

Both pm and TL have a deep understanding of business and technology, but PM focuses more on business management, profit, and risk, TL focuses on technical issues such as project costs, development difficulty, and software architecture. In the eyes of some people, technology and management are like a fish and a bear's paw, but in the next view, the two are inseparable. As long as you increase your understanding of Technology and Management in a timely manner and continue to develop to a deeper level, it is only a matter of time to upgrade from programmers to technical management personnel. For example, a common. net programmers, may be limited to ASP. NET page development, but once he has a development heart, he will naturally ASP. net MVC, Silverlight, winform, and wpf ui development methods are of interest. If you do not need much time to learn, you may know that these UI development tools are just some tools, in fact, there is no difference in development principles. Then, he will learn more about the communication modes at a deeper level and understand the commonly used communication methods such as TCP/IP, Web Service, WCF, and remoting, at this time, he may already feel that he has a better understanding of the development technology. Then, he advanced to the workflow, design mode, object-oriented design, domain-driven design, and service-oriented development. Finally, he became the technology leader. The above is just a metaphor, but it should be noted that during the learning period, you must pay attention to the communication with colleagues. Many developers prefer to be dedicated, and the Development Project always wants to be done by one person, it is not subject to external interference. But you must understand that, even if you have a great skill, it is impossible for you to handle a large project by yourself. Therefore, teamwork and communication between colleagues are necessary, which is also a prerequisite for success.

  3. Unilateral technological development

Cutting-edge talents who can successfully develop technology are the most desirable job in the future, but are not capable of reaching this position. Many developers think that the business will always carry the "Taste of money". The boss never cares whether the development principles are in line with the development principles and whether the tests are necessary, they will only boast in front of customers that the project can be successfully delivered upon expiration. If there is no major problem, the project will be successful. In fact, we also need to understand that the ultimate goal of a development project is to make money. It is also necessary to control the project cost and efficiency during the development process, therefore, management personnel must manage the project. But developers also want to stay away from this "money" and devote themselves to the technology world. People who are interested in technology often study a technology in depth and become technical elites. However, here is a shocking statement: China is already the second largest economy in the world, but its GDP mainly comes from the third-party processing industry. China can be said to be talented, but it lags behind in the high-tech industry. Over the past few years, we have seen a qualitative leap in high-tech technology, but there is still a gap between our country and developed countries in Europe and America. Therefore, it is more difficult to become a talented person with cutting-edge technologies in China than to become a foreign company. To become a cutting-edge developer, you must have a deep understanding of underlying technologies such as C, C ++, assembly language, embedded development, Windows API, and Linux API. You need to understand Java,. net ...... These advanced development languages do not mean they are more advanced than C, C ++, and assembly languages, but they encapsulate functions such as C and C ++, it is more suitable for enterprise software development, making development easier. However, if you want to develop some underlying software and a large system, you must use C, C ++, assembly, and other development languages. This is a condition for the success of cutting-edge talents.

  Determine future goals

People have grown up from experience. The Ancients set up cloud: Thirty. It is not a person's social status or economic source, but a person's intention to the future and life. To become a successful person, you should set long-term development goals for yourself as soon as possible, as well as for a developer. As people have different personalities and orientations, they have different choices for themselves:

  1. Self-Reliance portal, brave entrepreneurship

Almost 30 years old, many people will think that if you really want to earn money, you should establish a self-reliance portal to build a foundation for your own business. For first-tier cities like Beijing, Shanghai, and Guangzhou, to buy a house, the first-hand building is basically 20 thousand ~ About 40 thousand yuan/square meter, while in a common IT company as a project manager, the basic income is generally 15 thousand ~ Between 30 thousand RMB (unless you work in a large multinational enterprise, that's another matter). If you want to buy a house of around 100 m² RMB, it will take almost 10 years to earn an annual salary even if you don't eat or drink it, So you choose to start your own business, it is a future goal of many IT developers. To achieve this goal, we should focus more on the business. It is undeniable that in Chinese society, we often talk about "relationship". Even if the past 30 years of reform and opening up have led China's economy to flourish, however, for thousands of years, the downsides cannot be completely wiped out. Therefore, it is recommended that you establish a good relationship with your customers and maintain mutually beneficial interaction with your partners. This will be conducive to future career development.

  2. leaving the country to the second line

This is also the choice of many people. Many people feel a lot of pressure when they have a family. They don't only have a career in their life. They want to spend more time taking care of their loved ones and caring for their children. Therefore, many people will choose a job like system analysis, system maintenance, university teachers, and lecturers of professional colleges. The income is stable, and it is often less pressure on front-line developers.

  3. make unremitting efforts to make further efforts

Whether you are a project manager or a team leader, if you want to continue to be promoted to the level 1 level, it will still be polarization. From a PM to the management of a company, there will be a lot of changes in the event. The general manager of a company does not need to manage the costs of one or two projects, but the operations of the entire department and the business processes of the entire company. Therefore, the tasks to shoulder will be heavier. He once had a boss, Dr. Peng, who was the top leader of the company and earned an annual salary of more than 3 million yuan. He also showed up in newspapers and magazines. Normally, you can only give a few comments in some meetings. The normal company operation and business management do not require him to directly execute them. This is not to say that the management layer is very idle, because they have to face more social relations and contact the company's partners. This is very different from the work of a PM. Therefore, to be promoted from a PM to the management level, more efforts and sweat are required.

If you want to change from Team Leader to a Technical Director, the direction of work will also change. As mentioned earlier: a tl may pay more attention to the technical layer, emphasize interaction and cooperation with teams, and pay more attention to the improvement of development. However, a technical director does not need to directly participate in the development of a project, but pay attention to the development efficiency and achievements. How can he reasonably use limited development resources, control development risks and possible effects.

  Development Experience

After more than eight years of experience, there have been many twists and turns between a programmer and a project manager. However, because each person's experience is different, the path is different, as a saying goes, there are more than one road to success in Rome. I don't want to make you misunderstand, but just want to show you my development direction. If you are a developer, "programmer-> architect-> Team Leader (Project Manager)-> Technical Director" is a good path, which is also the next choice. In China, to further improve yourself, whether you want to focus on technology or business, you cannot do without the word "management. In some large enterprises, a team is often equipped with a PM and an architect. Although the two are responsible for different tasks, you will see that the income of an architect is often inferior to that of a PM, PM is often the core leader of the team and the key person. PM plays an important role because the company can make money. PM and TL are not absolutely different, and in some small and medium enterprises, a development team is only 3 ~ Five people, one TL often has business processing, cost control, architecture design, development management, and many other tasks. Therefore, the team leader and project manager will be arranged at the same level. The boss of a company will not know the team's architects and programmers, but will only ask PM about the project progress, therefore, only after being promoted to this level can we have the opportunity to further improve our management capabilities and provide ourselves with room for improvement. To become a technical director, the requirement is no longer simply to manage a single project, but should be more important than the reference of emerging technologies and the rational use of development resources, the agile handling of development projects is also being tested.

Working with programming and code, from programmers to Technical Directors

I have been working in it for ten years and have been a programmer as a technical director. Now I have taken a look at this path for 10 years along with the domestic IT industry. It technology is developed by IT software, I would like to share my views with my friends who are about to engage in software technology R & D:
    
1. Recognize the current IT situation and select the appropriate technical direction and technical start point
    
It is estimated that everyone knows more or less that the IT industry's knowledge is updated quickly and the competition is fierce.
    
If you have a clear plan or understanding of your future development direction before you start your career, I believe that you will go better and farther than others, make more money... haha
    
It software practitioners generally have these opportunities: product pre-sales (marketing, business), product development (coding, design, testing), product after-sales (support, implementation ), product Management (project management, etc)
    
A. Pre-sales (marketing and business)
    
This work should be carried out mainly in the early stage of software development (without products) or in the early stage of contract signing (with products ).
Generally, it requires a high level of business and technology. This is not just about interpersonal and communication skills.
If you want others to buy your products, you can use professional product quality as the background to win with professional conversation, professional technology, and professional business understanding.
    
Practitioner requirements:
Practitioners are required to have certain social experience, technical experience, business experience, or social circles and communication skills.
    
Suggestion:
If you have just graduated from school or do not meet the above requirements, you 'd better consider it clearly. Of course, there is nothing absolute in this world, and it depends on yourself.
    
Reality:
As far as I know, this part will be done by some senior executives (with relevant experience) and business experts or people with special backgrounds.
    
B. Product Development (coding, design, testing)
    
This part of work, of course, is the main force of the IT industry, but you have to consider it clearly.
If you want to be a designer or test, you 'd better first code a period of time,
A good designer cannot not be proficient in related technical platforms!
Good overseas testers are also chosen from almost all the developers.
    
A. Code Writing
In this career selection scope, it is best to start from code writing. Of course, you can also perform tests first to see how people write code and how they make the software,
You can also use your testing experience to compile code for a while.
Sometimes you can write a software by yourself, so coding and testing are a two-way interaction, rather than coding after testing.
    
It is best to write code by yourself first look at other people's software, or some experts with guidance, the current technology learning is not a problem, guan Jian is bound to a line of learning and thinking.
Therefore, you need to be familiar with the entire project process or business process without relying on personal code or learning in the training class. Most of your technical learning and training courses can only solve technical learning problems, however, software requires not only technology.
Three-point technology, seven-point business, business learning is also a must for developers. If you are not familiar with business details, we suggest you do not rush to write code, this will certainly have a great impact on future software. first, familiarize yourself with the business.
    
Therefore, it is essential for software developers to master a technical platform and language, but at the same time, they must have certain business knowledge. This is a qualified software developer. of course, software developers who are proficient in software coding, design, business, and software development processes are excellent, which is a prerequisite for senior R & D personnel.
    
If you are a beginner or a new graduate, it is recommended that you start from the basic code writing, follow the experts or find some mature projects to learn more,
    
B. Software Design
Of course, this profession requires the industry experience and technical experience to have a certain foundation, and the salary is generally much higher, so it is also the goal of some developers to pursue enthusiastically. however, a good designer is not able to practice in Year 12. He is proficient in coding, skilled in design models, and technical platforms adopted by the company. He is proficient in some design theories and practical application, and skilled in the company's business, in fact, this layer of pressure is also the biggest, a good software in the design of the proportion of almost seven.
    
It is recommended that new graduates and software beginners do not join in with each other. Even if you become a designer, you are not a qualified designer in my eyes... of course you have the ability to be a designer. Congratulations.
    
    
    
C. Software Testing
    
Be familiar with the coding technology and related technical platforms, and be familiar with the business.
Software testing usually involves:
Unit Testing requires you to be skilled in developing technologies for tracking and debugging, that is, white box testing.
Integration Testing, testing of the entire project process, requiring business knowledge, functional testing or stress testing of the designed software, etc., is a black box testing
Confirm the test, be familiar with the business, and test whether the software fully meets the customer's business needs.
    
General suggestions:
1. proficient in a technical platform and familiar with a business
A very easy problem for beginners is: proficiency in VB, Vc ,. net, Java, C ++, C, dephi, Pb, he will use all of them on the market. Alas, if I see such a sentence on his resume, this person will certainly not be in the scope of my consideration.
Currently, the world's most widely used technical platform systems are three major systems:
    
Sun's J2EE technology system (Java): It is a better choice for high security and high performance, and it is used more in the mid-to-high-end market.
    
Microsoft's Technical System (C ++,. net, C #, and VB): In the medium and low-end markets, Microsoft has the absolute advantage, and is also the most user of the personal computer operating platform in the world.
    
(A distributed technical system and standard ),
Common Object Request Broker Architecture: Common Object Request proxy structure, which can be written in different programming languages and run on different operating systems and exist on different machines.
Usually between the underlying and upper-layer management software,
    
    
Others will also include bottom-Layer Development: C, assembly, which is pure bottom-layer development. Of course, it requires a stronger technical start point and business background. It is best to study the major: Electronic and electrical, embedded industry, mechanical Manufacturing, data collection, etc...
    
    
Take a fancy to the technical system you want to engage in, select a language tool, and get on the road ...:)
Always remember: You want to learn everything, and you cannot learn anything.
    
    
2. Starting from the basics, do not be too ambitious and have a high eye and a low eye. It should be combined with the actual situation.
    
    
B. After-sales (support and implementation)
This is not so obvious in terms of development technology requirements. The main work will be done after software development, and there will be more dealings with customers, but more requirements are reflected in the business grasp and customer communication.
Some software products have mature business. If you are involved in this phase, you can quickly learn a lot of business knowledge and accumulate customer experience.
    
Suggestion: if you are a beginner or a new graduate, you can choose more at this job. When the time is ripe, you can immediately go to the software development or design stage. Of course, it is not easy to do this job well. If it is suitable for you,
You don't have to think about it if your work environment or salary is good...
    
    
    
C. Product Management (project management, etc)
    
This part of work is mainly reflected in management. Of course, it is suitable for people with certain experience or management capabilities to take responsibility,

Conclusion:
    
Technology: first select a technology platform, proficient in a development language and database... professional and focused for a few years.
    
Technology + Management: if you have some technical experience and good interpersonal communication and management capabilities, you can develop in this direction.
    
Technology + business: proficient in a technology platform, proficient in a business, and engaging in a good job. This kind of talent is the most popular...
    
Management: If you have a certain degree of social experience and experience, if you have good interpersonal skills and management skills, and the boss also like it, do this.
    
Business (Market): If you are very interested in your business and have a good relationship with your customers, you can choose the right one. If you have the right professional technology, you will be more icing on the cake.
    
Technology + market + management: the location of the boss ....:)

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.