Dear programmers, we'll be old if we don't go "crazy"!

In officialdom, there used to be a 59-year-old phenomenon, that is, when officials were 59 years old, they would try their best to make a fortune. Obviously, the power is expired and invalid, and if you don't earn it, you will retire, and there is no chance.

In the circle of programmers, there is also a 30-year-old phenomenon. Programmers worked until the age of 30, and they finally became white-collar workers from code slaves, but they couldn't work anymore, and they were always in danger of losing their jobs. 30 years old is an age that programmers can't afford to hurt. Tomorrow, where to go? Of course, if you have an iron job, such as in a state-owned enterprise or government agency, then you cannot understand the feelings of the working people at the bottom. Also congratulations on being a member of the system and working until retirement without worry.

Everyone understands the 30-year-old phenomenon, but it's not easy to come up with a definition. List a few performances, and maybe you will feel connected.

Faced with a career bottleneck, the program cannot be written, and it is difficult to rise.

Higher salary, less overtime, and the pressure of unemployment;

Recruiting programmers under the age of 30 has become an unspoken rule in the industry, and it is difficult to change jobs.

The 30-year-old phenomenon and the 59-year-old phenomenon seem to be incompatible, but they are both for the same reason: depreciation in value . Officials are like emperors when they are in office. Once they retire, they become ordinary people. Devaluation is natural. The same is true for programmers, the so-called 30-year-old, once they reach the age of 30, due to the face of marriage and childbirth, on the one hand, they need to raise their families with high salaries, but on the other hand, they cannot devote themselves to work as before, and the cost performance drops sharply ; at the same time , A large influx of cheap novice, they often use the latest technology, the older generation of programmers can only slowly stand aside.

Is it irreplaceable

The phenomenon of 30-year-olds can only be found in the programmers themselves.

Of course, we can also analyze the industry, the society, the government, and the system, and find deficiencies. These analyses may not be unreasonable, but they are definitely useless, because we cannot change. The so-called "the government cannot be blamed for the suffering of life, and the society cannot be blamed for the fate". Looking for the cause from the outside will only make us full of complaints, and feel that we were born at an untimely time and feel depressed all day long.

Find the reasons for yourself and try to ask yourself a few questions: " Why is my cost-effectiveness declining? Why does the boss invite me and give me a high salary? What determines a person's value ?"

You may be able to list a long, long answer, but I think it should all be condensed into one sentence: "The value of one is determined by its irreplaceability ". Irreplaceability can be understood as the price you have to pay to replace your boss.

Because your substitutability is high, the cost-effectiveness decreases. On the contrary, because you are irreplaceable, the boss will offer you a high salary. Isn't that so?

There is a little story:

When the technician retired, he told his apprentice: "Speak less, do more."

Ten years later, the apprentice also became a technician. He found the master and said with a bitter face: "Master, I have always followed your teachings, I only know how to work hard, but those who are less skilled than me have been promoted and raised in salary. Now, I'm still taking my past salary."

The master thought about it and said, "You take a leave of absence. If a light stays on, no one will notice it..."

The apprentice suddenly realized that he really took a week off. When he went back to work, the factory manager approached him and said he would give him a raise. It turned out that when he asked for leave, the factory manager found that the factory could not do without him.

The apprentice was very happy. From now on, he would take a few days off from time to time, and the factory manager would give him a raise every time he asked for leave. One day the apprentice was about to go to work after asking for leave, but the factory manager told him, "You don't have to go to work anymore."

The apprentice went to the master in distress, and the master said, "I haven't finished my words that day. A light can be turned off once in a while, but if it is always turned off, the nature will be different, because no one needs a light to turn on all the time. lights out."

In the story, because the apprentice was irreplaceable, the factory manager gave him a raise; later, because other lights were on, he was replaced, and the factory manager no longer needed him, so he was fired.

So in the final analysis, we still have to improve our irreplaceability. Otherwise, if your boss thinks you can replace you with a lower cost, you risk losing your job.

where is the way out

How can programmers improve their irreplaceability when they are 30 years old? Are we going to be programmers for life? where is the road?

As a past person and a senior programmer, I think there are several directions to choose from:

**(1)** Become a tech giant

In fact, there is nothing wrong with being a programmer for a lifetime. The important thing is that you must become an irreplaceable programmer. That is to say, you have to become a master of technology and be able to solve problems that ordinary programmers cannot solve. There are two versions of the technology giant:

One is the Programmer Enhanced Edition. You are still a programmer, but you are a very good programmer. With years of accumulation, you are no longer an ordinary person in terms of breadth and depth of knowledge . From assembly to java, you are proficient in everything. You care about data structures and algorithms, have unique insights into system optimization, and know a lot about design patterns. You also have a complete toolbox and your own dedicated class library. In fact, the enhanced version of the programmer has a very unique value, unfortunately, it is rare in reality, because for any company, talent is always scarce. The boss has sharp eyes, how can he turn a blind eye to you, a technical master, before you become a real master, you have already been appointed as a system architect, project manager or a higher position. Therefore, it is often impossible for you to keep your own one-third of an acre of land and be your own boss in a leisurely manner.

The second is the upgraded version of the programmer. While you're still a programmer at heart, your role has been upgraded and you've become a systems analyst or systems architect. This is a very natural and realistic choice. There is no gap between the programmer and the system analyst or architect. With just one step, you can drive from the rough mountain road to the wide road. But this step is not easy. It takes several years of continuous thinking, learning, and practice to pupate into a butterfly.

**(2)** Become an industry expert

Industry experts are also an indispensable role for a company, they know the company's industry knowledge, business processes and details well. Industry experts are generally not a superman who only understands business and does not understand technology recruited from the outside, but often grow up from programmers after years of struggle. As an industry expert who grew up as a programmer, you're often also a systems analyst. In a company, there are many people who have a general understanding of the business, but often very few at the expert level, and you have to be an expert for the next 30 years of your career.

**(3)** Development towards management

The first step in the direction of management is usually the appointment of a project manager. In most IT companies, the project manager is the smallest management position. You may not feel that there are too many surprises, and the salary has not been greatly improved, but this change can be said to be one of the most important changes in your life. .

Don't underestimate the project manager. Some people say that project management is an ancient profession. Some people say that the 21st century is the century of project management. In fact, project management has been in existence since human beings were organized. The previous project manager may have been a tribal leader. A collective hunting or a siege can be regarded as a project. The knowledge of project management can be applied to all aspects of our lives, from the implementation of the moon landing plan to the organization of family gatherings, all of which are inseparable from project management.

A good project manager needs not only a high IQ, but also a high emotional intelligence. It is no exaggeration to say that if you are competent in project management, you can be competent in all management positions at the tactical level, and even if you have a family, the quality of life will be improved to a new level.

However, being a good project manager is not an easy task. It can be said that it requires a certain talent, some people can learn without a teacher, and some people will never learn. Programmers belong to the high IQ crowd, but emotional intelligence is often insufficient. This is destined that only a few programmers can grow into project managers, and it is very rare to become excellent project managers.

How to make yourself a big cow

So know the crisis that is about to face, and know the way out, how to complete it? How to become a tech giant?

There are several misunderstandings here:

Daniel as a teacher

Some people on Zhihu think that the easiest, most direct, fast and effective way to become a tech giant is to “worship the team’s tech giant as a teacher” and let them open a small kitchen for you and assign you some difficult tasks. I am personally against this approach for several main reasons:

Daniel is very busy, and it is unlikely to open a small stove for you alone, let alone open a small stove for you for 1 hour every day; and in a team, if Daniel often opens a small stove for you, it will inevitably cause other team members. Doubt, I personally think that if the big cows in the team are really interested, it is best to give the team more training. However, those who have done training know that it is very time-consuming to prepare for a training. The courseware and materials are at least 2 hours (not fragmented time), and the explanation is 1 hour. It is very high for Daniel to do training once a month. frequency.

Because of the first reason, it is generally necessary to seek advice or discuss with Daniel with questions. Because answering or discussing questions does not require much time, it is more about experience and accumulation. In this case, Daniel is very happy. After all, influence is an important indicator of Daniel. However, pay special attention: if you often ask about knowledge that can be easily found in books or google, the big cows will also be very impatient, after all, time is precious. Netizens often ask me questions such as "how to configure the -Xmn parameter of jvm", and I always answer "please go to google directly", because there are too many such questions, if you don't go to the system to learn, each It's a huge waste of your own and others' time. Moreover, there are not many big cows. It is unlikely that every team has a technical master. It can only be said that there will be people in the team with a higher level than you. Even if he opens a small stove for you every day, you can only improve to his level in the end. .

The business code is just as awesome

Some answers on Zhihu think that writing business code can be awesome. The reason is that business code can also have various skills. For example, encapsulation and abstraction can be used to make business code more extensible. A good understanding and implementation of the business, a good log record, the problem location efficiency can be improved by 10 times... and so on.

Business code is as technical as it is, that’s for sure. The technology in business code is the foundation of every programmer, but just mastering these skills will not make you a tech giant. Just like upgrading and fighting monsters in a game, start Fighting mobs, the experience value is very high, the later the experience value is less, and the experience value can no longer be increased by fighting mobs. At this time, you need to fight some more advanced monsters and brush some challenging dungeons, but I don’t see any of them. The game can rise to the top as long as you keep fighting mobs.

The road to becoming a tech giant is similar. You have to constantly improve your level, and then face greater challenges. By responding to these challenges, you can improve your level to a higher level. In the realm of Daniel, writing business code is just a challenge on the way to fight monsters and upgrade, and I think it is a relatively elementary challenge.

So I think that programmers who can't write good business code will definitely not be able to become technical giants, but programmers who only write good business codes can't become technical giants.

Too busy with work and no time to study by myself

Many people think that it is not because they are not smart or they do not work hard that they have not become a technology giant, but because in this environment in China, technicians work too much overtime, so they do not have extra time to study.

This reason has a certain objectivity. After all, compared with Europe and the United States, we do work more overtime, but this factor is just a problem that needs to be overcome, not an insurmountable gap. After all, there are still so many big cows around us. grew up in the environment of China.

I really don't know how to answer this kind of answer. Don't those who are better than you need to go to work? Are you busy every day?

Why is the project delayed again, you say "no time";

Why don't you study English, you say "no time";

Go to the playground for a run together, you say "no time", where did your time go? What is your gain?

All I can say is don't use your physical diligence to cover up your mental laziness. Just finished reading a book titled: " How Can There Be Time?"

You are always busy, but you get nothing out of your busyness, or you are inefficient, why don't you think about where your time is going? Know that there are many things that you don't do well, but you can't always catch one to correct it? This book gives a very important hint, and it is also an important point that we tend to ignore in the process of time management, that is - go to bed early and get up early.

share my experience

As a java programmer, how to become a big cow and an architect?

1. Source code analysis

Source code analysis is a kind of critical knowledge. Once you have mastered this critical knowledge, you can adapt to any changes. For many people, source code analysis is boring, jerky and difficult to understand.

Source code reading, I think there are three core points: technical foundation + strong curiosity + patience.

I think it is the core driving force of reading source code. I have seen the vast majority of programmers, and their attitude towards learning is basically these levels (very extreme):

  • 1. Just focus on the project itself, if you don't understand it, just baidu it.

  • 2. In addition to doing a good job in the project, you will also read technical books related to the project, see wikipedia.

  • 3. In addition to reading books related to projects, you will also read books in the IT industry. For example, when you learn Java, you will also learn about functional languages, such as LISP.

  • 4. Look for some open source projects, try a lot of third-party frameworks, and write demos.

  • 5. Read the basic framework, J2EE specification, Debug server kernel.

Most programs are type 1, and getting to type 5 requires not only intense interest, but also courage: Can I read it? In fact, you can read

Patience is really important. Because you rarely see instructive articles or books for reading source code, and no one asks or recommends that you read them. You will often get stuck while reading, and one card owner may be stuck in a maze. At this time, what you need to do may be to temporarily interrupt and look at it from the outside: such as the API structure and the design diagram of the framework.

The following figure is my summary of the source code knowledge points that should be learned most at present:

2. Distributed Architecture

Distributed system is an old and broad topic, but in recent years, due to the rise of the concept of "big data", it has radiated new youth and vitality. In addition, distributed system is also a subject content that attaches equal importance to theoretical models and engineering techniques. Compared with the research direction of machine learning, students who study distributed systems often feel: "It is easy to get started, but difficult to go deep." Indeed, learning distributed systems hardly requires much math.

Distributed systems is a complex and broad field of study, and taking an online course or two and reading a book or two may not cover it all.

In general, the task of a distributed system is to organically combine and connect multiple machines, so that they can cooperate to complete a task, which can be a computing task or a storage task. If we must make a classification of distributed system research in recent years, I personally think that it can include three major parts:

  • Distributed Storage System

  • distributed computing system

  • Distributed Management System

The following figure is my summary of the most mainstream distributed technologies in recent years:

3. Microservices

At present, microservices are very hot, and everyone claims to be using microservice architecture, but what exactly is microservice architecture? Is the microservice architecture a development trend? We all lack a clear understanding of these issues.

In order to solve various problems under the monolithic architecture, the microservice architecture came into being. Rather than building a bloated, untamable monster, it's better to break up the service sooner rather than later. The core idea of ​​microservices is to split and decouple services to reduce complexity. Microservices emphasize the rational disassembly of functions, ensure that each service has a single function as much as possible, and define roles according to the Single Responsibility Principle. Each service is made lighter, so as to be flexible and reusable, and it can also be deployed and scaled independently according to the resource requirements of each service.

The following figure is my summary of the knowledge points that microservices need to learn:

Fourth, performance optimization

Whether it’s dealing with front-end interviews or improving product experience, performance optimization is an inescapable topic.

The purpose of optimization is to make users feel "fast", so how to make users feel fast?

The loading speed is really fast, the user opens the input URL and presses enter to see the page immediately

It doesn't load faster, but users feel your site is fast

Performance optimization depends on several factors, including garbage collection, virtual machine, and underlying operating system (OS) settings. There are several tools available to developers for analysis and optimization, you can learn and use them by reading Java Tools for Source Code Optimization and Analysis.

It must be understood that no two applications can use the same optimization, and there is no perfectly optimized reference path for a java application. Use best practices and stick to the proper way to handle performance optimizations. To achieve the truly highest performance optimizations, you as a Java developer need to have a proper understanding of the Java Virtual Machine (JVM) and the underlying operating system.

These knowledge systems are the experience I have gathered from my many years of practice, and they are the most mainstream technologies at present. Friends who want to learn these technologies can join the group: 650385180. The group will share these technical knowledge points for everyone to learn and download for free

The following figure is a summary of several knowledge systems that I should learn and understand about performance optimization:

5. Java engineering

If you want to do a good job, you must first sharpen your tools. Whether you are a novice or a senior developer, you need to choose a good tool first. Improve development efficiency and team collaboration efficiency. Allow yourself more time to think.

"Dahua Architecture" The technical points that Java programmers need to break through shared by Alibaba architects

Note: Join requirement

1. Those with 1-5 work experience, who do not know where to start in the face of the current popular technology and need to break through the technical bottleneck can be added.

2. After staying in the company for a long time, I lived very comfortably, but the interview hit a wall when I changed jobs. Those who need to study in a short period of time and change jobs to get high salaries can be added.

3. If you have no work experience, but have a solid foundation, you can add them if you are proficient in the working mechanism of java, common design ideas, and common java development frameworks.

4. I feel that I am very good, and I can handle general needs. However, the knowledge points learned are not systematic, and it is difficult to continue to make breakthroughs in the technical field.

5. Ali Java senior Daniel live broadcast to explain knowledge points, share knowledge, sort out and summarize years of work experience, and lead everyone to comprehensively and scientifically establish their own technical system and technical awareness!

6. The trumpet or Xiaobai will never be added to the group, thank you.

The goal is already there, let's see the action below! Remember: study is always your own business, you won't have much time if you don't study, and sometimes you can use what you have learned to exchange for more free and good time! Time is a fundamental part of life and the fundamental measure of existence, where our time is and where our life is! Our value will also increase or decrease there! Come on, Java programmers

If you feel that these aspects are suitable, then you have a few ways out:

The first is a messy day.

To be honest, being an honest person, doing honest things, and earning honest wages, this kind of employee company is also very needed, and generally will not suffer the fate of being fired; the second is to change careers or start a business.

Because this industry is no longer suitable for you, and there is no greater future for development, you can only change careers. If you can change careers, it is not necessarily a bad thing. Maybe in the new environment, you can stimulate stronger energy and create a career. As for starting a business, it is more challenging, and it is recommended that you have become a good project manager before starting a business. Just think, if you can't turn a project, how can you turn a company?

 

Guess you like

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