Special invitation: One idea, ten years of persistence, the advanced road from an ordinary code farmer to a technical director

  

Many people in China think that IT behavior is a meal of youth, and it is difficult to have the opportunity to develop after the age of 30! In fact, the reality is not like this. I would like to discuss it with you based on my own personal experience.

Clarify the purpose of entry

  Many people in the IT field aim at "high income", because as long as you learn a little HTML, DIV+CSS, it is not difficult to be a web developer, and it is easier to find a job as a web developer, The income is higher than ordinary jobs, so it has become the choice of many college graduates. If you only enter the industry with such an attitude, then you really have to be careful. Because the competition in the IT industry is already fierce, especially in terms of page design, there are many people who can develop, so in order to save costs, most companies will only recruit such personnel when needed; when there is no order, Some small companies may also find various excuses or take pay cuts to fire such employees. In the recruitment information, you often see the article "Recruitment page designer, conditions: under 30 years old... Fresh graduates are welcome to apply", because this type of staff does not have high technical requirements, and they are looking for fresh graduates. Health can save costs. Therefore, I think the sentence "IT industry is for youth" is only for the above-mentioned people. If you lack the "enterprising spirit", but only hold the attitude of "high income, easy to find a job" And entering the industry, the "IT industry is eating youth food" will be fulfilled.

Choose the right tool

  JAVA, C#, PHP, C++, VB... More than 10 popular development languages, which one has the most development potential? In fact, the development language is just a tool. "It is better to strike with all your strength than to spread the attack." No matter which development language it is, as long as you study it with all your strength, when you have a certain level of familiarity, you need to learn another kind of development language. language is also a breeze. There are three main categories of development languages:

  1. Web Development

  Now the network has become a bridge of communication in the world, as if Javascript, PHP, Ruby and other development languages ​​are mostly used for network development.

  2. Enterprise software development

  JAVA, C#, VB, these types of development languages ​​have achieved the goal of object-oriented development, and are more often used in the development of enterprise systems.

  3. System software

  C language, C++, Objective-C software are more used in system software development and embedded development.

  Of course, this classification is not absolute, like JAVA, C#, and VB are often used in the development of dynamic websites. In many development projects, the integrated development method is used. Multiple development languages ​​are used in the same project, each showing their strengths and developing synchronously. However, when you are just getting started, it is recommended that you first choose a suitable development tool for yourself, "focus on learning and strike with all your strength".

clear development direction

       The entry "464: Flower Pot Effect" in the dictionary of lifelong growth mentions:
       There is such a term in psychology, called "flower pot effect", which refers to the fact that if people stay in a comfortable "flower pot" for a long time, they will Don't think ahead, be content with the status quo. When you are satisfied with the status quo, do the same things day after day, and stop spending time improving yourself, then your growth insights will always stay in the original area.
I have seen such a sentence: the sign of a person getting old is definitely not being mature and prudent, but refusing to try again, unwilling to allow himself to be in an unfamiliar situation. When you stop moving forward, stand still, and imprison yourself in the cage of just getting by, then you have taken a big step towards mediocrity.

       When you already have a certain understanding of a development language and start to feel like a "walking dead" and become a development tool, then you should clarify your development direction. When it comes to the development direction, I recommend an architecture technology exchange group here: 650385180, which will share some videos recorded by senior architects: Spring, MyBatis, Netty source code analysis, high concurrency, high performance, distributed, The principles of microservice architecture and JVM performance optimization have become a must-have knowledge system for architects. You can also get free resources. If you feel that you are still lacking, you can choose to join in if you want to further improve yourself.

  Usually in the company, you can see that most of the developers working on the UI layer are in their 20s. They are full of energy and have no family burden. When ASP.NET MVC and Silverlight first appeared two years ago, they could When I go home in the evening, I buy a few books or just read it online. After three or five weeks of research, I already have a certain understanding of the technology that needs to be used. Most of the people over 30 are already married, and their only hope for going to work at 9:00 every day is to be able to go home for dinner by 6:00 as soon as possible. After dinner, I just want to play with the child and see the child's homework, and lack the desire to learn the new technology. So many programmers approaching 30 years old have a sense of compulsion (including myself when I was 30 years old), what should I do in a few years? At this time, you should be more clear about your goals and strive to move forward in your own development direction. To sum up, you can choose a path that suits you from the following:

1. Transition from technology to business

  In foreign countries, many developed countries attach great importance to talents, and the income difference between a senior programmer and a Project Manager is generally not more than 15%. However, China is the most populous country in the world and has a large number of domestic talents, so the abuse of talents can often be seen. A small company's development department often sees new faces, but PMs don't often change. Because the bosses are completely ignorant of technology, in their opinion, they only have to win the PM's heart, and then they can handle the technical aspects. So transitioning from a technician to a PM is an option moving forward, but developers also need to know that becoming a PM is not just about using technology, but more importantly, understanding the management aspects. A PM's main job is to organize the team, control costs, manage business, control project progress, communicate with customers, coordinate work, and report regularly. Therefore, in order to become a successful PM, we must pay more attention to the organizational ability. The PM must be able to improve the enthusiasm of the team, give full play to the strength of the team, and obtain the maximum profit for the company under the premise of limited development resources. After becoming a PM, you usually do not need to directly contact technology development, but focus on management of business development, but PM also needs to have a certain understanding of technology (I once wrote an article on the necessity of PM's understanding of technology, and got a lot of Supported but also caused a lot of controversy). Here I still want to emphasize my point of view: To become a successful PM, the most important thing is management ability, but you should also have enough understanding of technology, because this is the bridge to communicate with team members, and only in this way can you communicate with the entire team. There is a tight bond between members, allowing team members to feel the meaning of their own existence, thereby mobilizing the enthusiasm of the team, rather than ignoring the existence of technical personnel. Technology is not a sufficient condition for being a successful PM but it is a necessary condition!

2. From programmer to technical management

  In fact, the responsibilities of a Team Leader are similar to the Project Manager, but the Team Leader focuses more on technical development. Usually, a large project will have one or two development teams led by the Team Leader, responsible for developing core parts, while other parts are assigned to different development teams or Assigned to outsourcing companies. There are a few sentences I often see on the Internet that aptly describe the difference between PM and TL: "Technical people like to be led; but they don't like to be managed, driven or directed like cattle. Managers force people to obey their Commands, and leaders lead them to work together. Management is objective, there is no personal emotional factor, it assumes that the managed has no thoughts and feelings, and is told what to do and how to do it. Leadership is to lead, to guide, it motivates People achieve goals. Leadership is deeply personal, it’s not something you can command, it’s not something you can measure and test.”

  Both PM and TL must have an in-depth understanding of business and technology, but PM is more focused on business management, how much profit, the size of risks, etc., while TL focuses on project cost, development difficulty, software technical issues such as architecture. In the eyes of some people, technology and management are like fish and bear's paw, which cannot have both, but in the eyes of others, the two are inseparable and inseparable. As long as you improve 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 before you can upgrade from a programmer to a technical manager. For example, an ordinary .NET programmer may be limited to ASP.NET page development at first, but once he has the heart to develop, he will naturally develop UIs such as ASP.NET MVC, Silverlight, WinForm, and WPF. If he is interested in the method, it does not take much time to learn, he may realize that these UI development are just some tools, in fact, there is no difference in the development principle. Then he will learn about the deeper communication modes and know 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 development technology. And then proceed to the high level of workflow, design pattern, object-oriented design, domain-driven design, service-oriented development, etc., and finally become the leader of technology. The above is just a metaphor, but it should be noted that during the learning period, you must pay attention to communication with colleagues. Many developers like to work alone, and the development projects always want to be done by one person without external interference. But understand that even if you have great skills, a large project cannot be carried by you alone. Therefore, team cooperation and communication between colleagues are necessary, which is also a necessary condition for a successful TL.

3. Unilateral technological development

  Cutting-edge talents who can successfully carry out technology development are the most desirable jobs in the future, but they are not capable of getting into this position. Many people who are engaged in development will think that business always has a "smell of money". The boss never cares whether the development conforms to the development principles and whether it has passed the necessary tests. Goods, as long as there are no major problems, the project is a success. In fact, we must also understand that the ultimate goal of developing a project is to make money, and it is also necessary to limit the cost of the project and control the efficiency during the development process, so it is necessary for managers to manage the project. But developers also want to avoid the "money hustle" and devote themselves to the world of technology. Therefore, people who have a strong interest in technology tend to study a certain technology in depth and become a technical elite. But here is a heart-wrenching remark: China is already an ally of the world's second largest economy, but its gross national product mainly comes from the third-party processing industry. China can be said to be full of talented people, but it lags behind developed countries in high-tech industries. In recent years, we have indeed seen a qualitative leap in our country's high and new technology, but there is still a long way to go with developed countries in Europe and the United States. Therefore, it is undeniably more difficult to become a cutting-edge technology talent in China than abroad. From the following point of view, in order to become a cutting-edge developer, you must have a deep understanding of the underlying technologies such as C, C++, assembly language, embedded development, Windows API, and Linux API. You must know that JAVA, .NET, etc. are called advanced development languages, not because they are more advanced than C, C++, and assembly language, but because they encapsulate the functions of C, C++, etc., and are more suitable for use For enterprise software development, making development easy. However, if you want to develop some low-level software and large-scale systems, you must use C, C++, assembly and other development languages, which is a condition for successful cutting-edge talents.

Determine future goals

  People grow from experience. The ancients said: standing at 30 does not describe a person's social status or source of income, but describes a person's goals for the future and intentions for life. To become a successful person, you should set long-term development goals for yourself as soon as possible, and you should do the same as a developer. As people's personalities and orientations are different, everyone chooses different paths for themselves:

1. Start your own business and start your own business

  Nearly 30 years old, many people think that if you want to really make money, you should start your own business and build a foundation for your own business. In first-tier cities like Beijing, Shanghai, and Guangzhou, if you want to buy a house, the first-hand building is basically about 20,000 to 40,000 yuan per square meter, and when you become a project manager in an ordinary IT company, the basic income is generally 15,000. Between ~30,000 (unless you work in a large multinational company, that is another matter), if you want to buy a house of about 100 square meters, even if you don’t eat or drink, it will cost almost 10 years of annual salary, so choosing to start your own business is a good idea. A future goal of many IT developers, to achieve this goal, should be more business-focused. One thing that is undeniable, in Chinese society is often referred to as "relationship". Even though the 30 years of reform and opening up have enabled China's economy to develop vigorously, the unfortunate winds left over for thousands of years cannot be completely erased. . Therefore, personnel who want to start a business suggest that you should build more relationships with customers and maintain a mutually beneficial interaction model with partners, which will be beneficial to the development of your career in the future.

2. Retreat bravely, take a back seat

  This is also the choice of many people. After having a family, many people feel too much pressure. People's life is not only about career, they want to spend more time on caring for their relatives and children. Therefore, many people will choose a job such as system analysis, system maintenance, college teachers, and professional college lecturers. Income is stable and often less stressful than frontline developers.

3. Make unremitting efforts to go further

  Whether you're a Project Manager or a Team Leader, it's still polarizing if you want to move up the ranks. From a PM to the management of a company, there will be many changes in the events faced. The general manager of a company is no longer managing the cost of one or two projects, but the operation of the entire department and the business process of the entire company, so the task to be shouldered will be heavier. There used to be a boss, Dr. Peng, who was the top leader of the company, with an annual salary of more than 3 million, and he also appeared in newspapers and magazines. He usually only makes a light appearance at certain meetings and speaks a few words, and he does not need him to directly execute the usual company operations and business management. This is not to say that one as a management is very leisurely, because they have to face more social relations, the connection with the company's cooperative enterprises. This is very different from the job of a PM, so it takes more effort and sweat to be promoted from a PM to management.

  If you want to rise from Team Leader to a technical director, the direction of the work has also changed. As I said before: a TL may pay more attention to the technical level, emphasizes the interaction and cooperation with the team, and pays more attention to the improvement of development. A technical director does not need to directly participate in the development of a certain project, but pays attention to the efficiency and results of development, how to rationally use limited development resources, and control the risks and possible effects of development.

develop feelings

  After such a long time, I have gone through a lot of twists and turns from a programmer to a project manager, but because everyone has different experiences, the paths they take are also different. As the saying goes, all roads lead to Rome. , There is more than one road to success, and I don't want to misunderstand you, but just want to tell you about my development direction. If you are a developer, "Programmer->Architect->Team Leader (Project Manager)->Technical Director" is a good path, which is also the path chosen below. In my country, if you want 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 people are responsible for different tasks, you will see that the income of an architect is often not as good as that of a PM, and the PM is often the core of the team. Leaders are key people. Because the company can make money, PM has an important role. There is no absolute difference between PM and TL, and in some small and medium-sized enterprises, a development team has only 3 to 5 people, and a TL often has multiple tasks such as business processing, cost control, architecture design, and development management. Therefore, the team leader and the project manager will be set at the same level. The boss of a company often does not know who the architect and programmer of the team are, but only asks the PM about the progress of the project, so only when promoted to this level can There is an opportunity to further improve management capabilities and allow yourself to have room for improvement. As for becoming a technical director, the requirement is no longer just the management of a single project, but more emphasis should be placed on the reference of emerging technologies, the rational use of development resources, and the agility of development projects. In the midst of testing, he did not dare to say much.

Hand in hand with programming and sleep with code From programmer to technical director

I have been working in IT for ten years, from a programmer to a technical director. Looking back now, this road has also been through trials and hardships with domestic IT for 10 years. For IT technology, it is pure software development of IT. Friends of software technology research and development talk about my views:

1. Recognize the current IT situation and choose the appropriate technical direction and technical starting point

It is estimated that everyone knows more or less that the knowledge of this IT industry is updated very quickly, and the competition is fierce.

If you have a clear plan or understanding of your future development direction before starting your career, I believe you will go better than others, go farther, and make more money... Hehe

The direction of IT software industry generally has these opportunities: product pre-sales (marketing, business), product development (coding, design, testing), product after-sales (support, implementation), product management (project management, etc.)

A. Product pre-sale (market, business)

To be engaged in this piece of work, mainly in the early stage of software development (without product), or in the early stage of contract signing (with product).

General requirements are very high on related business and technology, which is not only required for interpersonal relationships and communication skills.

If you want others to buy your products, you can win with professional product quality as the background, professional conversation, professional technology and professional business understanding ability.

Practitioner Requirements:

Practitioners are required to have certain social experience, technical experience or business experience, or certain social circle and communication skills.

suggestion:

Friends who have just graduated from school or those who do not meet the above conditions had better consider it clearly. Of course, there is nothing absolute in this world, it is up to you.

real situation:

As far as I know, those who do this will be some senior executives of the company (with relationships and experience) and business experts or people with special backgrounds, etc.

B. Product development (coding, design, testing)

This piece of work is of course the main force of the IT practitioners, but it must also be considered clearly.

If you're going to be a designer, or a tester, it's best to do some coding first,

It is impossible for a good designer not to be proficient in related technology platforms!

The good testers abroad are almost selected from the developers, and they are the masters of software development.

a. Code writing

In this career choice, it is best to start with coding. Of course, you can also test first to see how people write code and how to make this software.

It’s okay to borrow other people’s testing experience, and it’s okay to write code for a while when you have the opportunity in the future.

Sometimes you can write a software yourself, so coding and testing are a two-way interaction. Instead of coding before and testing after.

When writing code, it is best to look at other people's software first, or be guided by some masters. Now technology learning is not a problem, and Guan Jian has to learn and think in a single line, which will have certain limitations. .

Therefore, to be familiar with the entire project process or business process can not be solved by personal coding or learning in training courses. Most of personal technical learning and training courses can only solve technical learning problems, but making software is not only about technology.

It is not an exaggeration to say that three points are technical and seven points are business. Business learning is also a must for a developer. If you are not familiar with business details, it is recommended that you do not rush to write code, which will definitely affect future software. It's very big. First, you need to familiarize yourself with the business.

Therefore, it is a prerequisite for software developers to master a technical platform and language, but at the same time, they must also have certain business knowledge, so that they are qualified software developers. Of course, they are proficient in software coding, design, business, and software projects. The software developers who develop the process are excellent, and that is a must for senior developers.

If you are just getting started, changing careers or just graduated, it is recommended to start with basic coding, follow the masters or find some mature projects to learn more.

b. Software design

Of course, this profession requires industry experience and technical experience to have a certain foundation, and the salary is generally much higher, so it is also the goal that some developers are eagerly pursuing. But a good designer cannot be trained in one or two years. Proficient in coding, proficient in design patterns and the technology platform used by the company, proficient in some design theories and practical application, proficient in company business, in fact, the pressure at this level is also the greatest, a good software design The proportion of almost 70% .

It is recommended that friends who have just graduated or software beginners should not join in the fun. Even if you become a designer, in my eyes, you are not a qualified designer... Of course, you have the ability to be a designer. Congrats to you.

c. Software testing

Familiar with various theoretical or practical applications of software testing, but also familiar with coding technology and related technical platforms, and be proficient in business.

Software testing generally includes:

Unit testing requires you to be proficient in development techniques to track and debug, which is white box testing.

Integration testing, testing the entire project process, requires mastering business knowledge, and can perform functional testing or stress testing on the designed software, which is a black box test

To confirm the test, you must be very familiar with the business, and test whether the software fully meets the customer's business needs.

Overall recommendation:

1. Familiar with a technology platform and familiar with a business

One of the mistakes that a friend who is just starting out is easy to make is that he is proficient in: VB, VC, .NET, JAVA, C++, C, Dephi, PB, and he knows almost everything that is used in the market, alas, if I see his resume There is such a sentence on it, this person will definitely not be in the scope of my consideration.

By the way, I would like to recommend an exchange and learning group for you: 650385180, which will share some videos recorded by senior architects: Spring, MyBatis, Netty source code analysis, high concurrency, high performance, distributed, microservice architecture principles, JVM Performance optimization has become an essential knowledge system for architects. Free learning resources are also available.

Now the most widely used technology platform systems in the world are three systems:

Sun's J2EE technology system (JAVA): it is one step ahead in terms of high security and high performance, and is widely used in the mid-to-high-end market

Micro-software technology system (C++, .NET, c#, VB): In the middle and low-end markets, it has an absolute advantage, and it is also the most user-friendly PC operating platform in the world.

CORBA technology body system (a distributed technology system and standard),

Full name: Common Object Request Broker Architecture: Common Object Request Broker Architecture, which can be written in different programming languages, run on different operating systems, and exist on different machines.

Generally between the bottom and upper management software,

Others will include bottom-level development: C, assembly, which is a pure bottom-level development. Of course, it requires a stronger technical starting point and business background. It is best to study majors: electronics and electrical, embedded industry, machinery manufacturing, data acquisition, etc. ..

Take a fancy to the technical system you want to engage in, choose a language tool, and hit the road... :)

Always remember: you want to learn everything, you can't learn everything well

2. Start from the basics, don't be too high and far, look high and low, and combine with reality

B. Product after-sales (support, implementation)

This part is not so obvious for the requirements of development technology. The main work will be in the work after software development, dealing with customers a lot, but more requirements are reflected in the grasp of the business and the communication with customers.

Some software products are relatively mature in business. If you participate in this stage of work, you can quickly learn a lot of business knowledge and accumulate experience in customer interaction.

Suggestion: Friends who have just started or just graduated can choose more in this job, wait for the time to come, and immediately enter the software development or design stage. Of course, it is not easy to do this part of the work well, if it suits you,

If the work environment or salary is good, you don't have to think too much...

C. Product management (project management, etc.)

This part of the work is mainly reflected in management, of course, it is suitable for personnel with certain experience or management ability to undertake it.

The final technical practice direction summary:

Technology type: first choose a technology platform, be proficient in a development language and database... Let's focus on it for a few years.

Technology + management type: If you have some technical experience, and have good interpersonal and management skills, you can develop in this direction

Technology + business type: proficient in a technology platform, proficient in a business, do well, this kind of talent is the most popular...

Management type: If you have a certain social experience, work experience, if you have good interpersonal communication, management skills, and the boss likes it, you can do this

Business type (market): If you are very interested in business and have good contacts with customers, you can choose, and it will be even more icing on the cake if you have suitable professional technology

Technology + Marketing + Management: The position of the boss....:)

 

If you think the article is helpful, you can follow and forward it

 

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=325689291&siteId=291194637