The 30-year-old phenomenon of programmers

In officialdom, there used to be a phenomenon of 59 years old, that is, officials will be 59 years old, will try to catch a handful. Well, obviously, the power expires, or you’re going to retire, and there’s no chance.

There is also a 30-something phenomenon among programmers. Programmers work to 30 years old, very not easy from the code slave mixed white-collar, but no longer stem, but also always face the risk of unemployment. 30 years old, is a programmer can not hurt the age. Tomorrow, where to go? Of course, if you have an iron rice bowl, such as in a state-owned enterprise or government office, you cannot understand the feelings of the working people at the bottom. And congratulations on being part of the system and working until retirement.

Everyone knows the thirtysomething phenomenon, but it’s not easy to define it. Just to name a few, you might feel a sense of empathy.

Faced with career bottlenecks, the program is not moving, and it is difficult to rise.

Higher pay, less overtime, after the wave to catch up with the previous wave, facing unemployment pressure; Life pressure increased, dare not job-hopping;

The age limit for programmers under 30 has become an unwritten rule, making job hopping difficult.

The 30-year-old phenomenon and the 59-year-old phenomenon seem to be at odds for the same reason: depreciating values. The overlords are in office like emperors, and once they retire, they become common people, so devaluation is natural. Programmers are the same. Once they reach their 30s, they will have to get married and have children. On the one hand, they need a high salary to raise their family. At the same time, an influx of cheap newbies, often using the latest technology, has pushed older programmers aside.

Whether there is irreplaceability

The 30-year-old phenomenon can only be explained by programmers themselves.

Of course, we can also analyze the industry, the society, the government, the system and other aspects and find deficiencies. These analyses may not be unreasonable, but they are certainly useless, because we cannot change. As the saying goes, “The government is not to blame for our misfortunes, and society is not to blame for our misfortunes”. Looking for external causes will only make us grumble and feel miserable all day long.

Look inside yourself and ask yourself a few questions: “Why is my value going down? Why should the boss ask me to give me a high salary? What makes a person valuable?”

You could have a long list of answers, but I think they can all be boiled down to one sentence: “A person’s value is determined by his irreplaceability.” Irreplaceability is what it takes to replace your boss.

Because your fungibility is high, so the cost performance goes down. On the other hand, the boss will pay you more because you are irreplaceable. Isn’t that true?

Here’s a quick story:

When the technician retired, he warned his apprentice, “Talk less, work more.”

Ten years later the apprentice also became a technician, he found the master, bitter face said: “Master, I have been according to your instructions to do, only know to work hard, but those who are worse than me have been promoted, pay, I still take the past wages.”

The master thought for a moment and said, “Please ask for a leave. If a light stays on, no one notices it…”

The apprentice saw the light and asked for a week’s leave. When he returned to work, the factory director found him and said he would give him a raise. It turned out that when he asked for leave, the director found that the factory had been inseparable from him.

The apprentice was so happy that he asked for a few days’ leave from time to time, and the factory director would give him a raise every time he asked for a leave. One day when his disciple asked for leave and was ready to go to work, the factory director told him, “You don’t need to come to work.”

Distressed, the disciple went to his master, who said, “I didn’t finish what I said that day. A lamp may go out once in a while, but if it goes out all the time, it’s not the same thing, because no one needs a lamp that goes on and off.”

In the story, because the apprentice is irreplaceable, the factory manager gives him a raise; He was replaced because other lights came on, and the director didn’t need him anymore, so he got fired.

So we have to improve their irreplaceability after all. Otherwise, you run the risk of losing your job if your employer thinks you can be replaced at a lower cost.

Where is the way out

So how can a 30-year-old programmer improve his irreplaceability? Are we going to be programmers forever? Dare to ask where the road lies?

As an experienced programmer, I have several options:

(1) Become a technology master

There’s nothing wrong with being a programmer all your life. What matters is that you become an irreplaceable programmer. That is, you become a technical expert who can solve problems that ordinary programmers can’t solve. Tech Tana comes in two versions:

One is the programmer enhanced version. You’re still a programmer, but you’re a great one, and over the years, you’ve grown in breadth and depth of knowledge. You know everything from assembly to Java. You care about data structures and algorithms, have unique insights into system optimization, and have a complete toolbox of design patterns and your own dedicated class libraries. In fact, enhanced programmers have a very unique value, but unfortunately, it’s rare in reality, because talent is scarce in any company. Your boss has a good eye for how he or she can ignore the fact that you have been appointed as a systems architect, project manager, or higher long before you have become a real master. Therefore, you want to keep their own acres of land, leisurely do their own big, often is impossible.

Second, the programmer upgrade version. While you’re still a programmer at heart, you’ve moved up the ladder to become a systems analyst or systems architect. It was a very natural and realistic choice. There is no gap between being a programmer and being a systems analyst or architect, and in just one step you can go from a mountain to a big road. But this step is not easy. It takes years of thought, learning, and practice to transform the chrysalis into a butterfly.

(2) Become an industry expert

Industry experts are also an indispensable part of a company. They are familiar with the industry knowledge, business processes and details of the company. Industry experts are generally not recruited from outside a business, not technical superhuman, but from programmers after years of experience and growth. As an industry expert who grew up as a programmer, you tend to be a systems analyst as well. In a company where there are a lot of people with general knowledge of the business but very few at the professional level, you need to be an expert for the next 30 years of your career.

(3) Develop towards management direction

The first step towards management is usually to be appointed project manager. Project manager is one of the smallest management positions in most IT companies. You probably won’t be surprised or get a big pay raise, but this transition will be one of the most important in your life.

Don’t underestimate the project manager. Some say project manager is an old profession. Some people say that the 21st century is the century of project management. In fact, there has been project management for as long as humans have been organized. The former project manager may have been a tribal leader. Knowledge of project management can be applied to all aspects of our lives, from the implementation of the moon landing to the organization of family gatherings.

A good project manager needs not only high IQ, but also high EQ. It’s not an exaggeration to say that if you can handle project management, you can handle all the management positions at the tactical level, and even if you have a quality of family life, you can move up to the next level.

However, to become an excellent project manager, is not an easy thing. It takes a certain amount of talent, so to speak. Some people learn without a teacher, and some people never learn. Programmers belong to people with high IQ, but emotional intelligence is often insufficient, which is destined to only a few programmers can grow into project managers, become excellent project managers, very few.

How to make yourself a big bull

So know the impending crisis, also know the way out, how to complete it? How to become a tech guru?

Here are a few cognitive misconceptions:

We worship Daniel as our teacher

Some people on Zhihu think that the easiest, direct, fast and effective way to become a technical master is to “learn from the technical master of your team” and let them give you some difficult tasks. I personally oppose this approach for several main reasons:

Daniel is very busy, it is unlikely to give you a small cooking alone, let alone every day to give you an hour of cooking; Moreover, in a team, if Daniel often gives you a break, it will inevitably cause other team members’ doubts. Personally, I think it would be best for Daniel to give more training to the team if he really cares. However, those who have done training know that preparing for a training is very time consuming. The courseware and materials should be at least 2 hours (not fragments), and the explanation should be 1 hour. It is quite frequent for them to do training once a month.

Because of the first reason, we usually seek Daniel with questions to consult or discuss. It doesn’t take much time to answer or discuss questions, but more depends on experience and accumulation. In this case, They are very willing to answer questions. After all, influence is an important indicator of Niu. However, be careful: If you constantly ask for information that can be easily found in a book or On Google, they will get impatient. Time is precious. I often get asked questions such as “how to configure -XMN parameters for JVM”, and I always answer them directly, “Please go to Google”, because there are too many such questions. If you don’t systematically learn them by yourself, it is a waste of time for yourself and others to ask them all. It is unlikely that every team will have a technical champion. There will be someone on the team who is better than you, and even if he gives you a little tutoring every day, eventually you will only be able to rise to his level.

Business code is also awesome

Zhihu on some answer think writing business code can very cow force, the reason is that business code can have a variety of skills, for example, you can use the encapsulation and more extensible abstraction allows business code, can be more exchanges and products in order to better understand and implement the business, the logging well problem targeting efficiency can increase 10 times… And so on.

Business code has technical content, that is for sure, the business in the code technology is the foundation of every programmer, but only to master these skills, and can’t be technology, like the game upgrades have started playing small monster, experience value is very high, the more behind the experience value is less, a little strange already cannot ascend experience value, This time you need to play some more advanced strange, brush some of the challenges of the copy, did not see which game as long as always play small strange can be promoted to the top.

As technology and the way is also similar, you want to constantly improve their level, then face greater challenges, through these challenges to levels more at the next higher level, and so on, finally reach the state of technology and the industry even Daniel, write business code just a challenge in the play blame upgrade road, And I think it’s a fairly elementary challenge.

So I think: a programmer who can’t even write good business code can’t be a technical genius, but a programmer who only writes good business code can’t be a technical genius either.

I’m too busy at work to study by myself

Many people think that they do not become technical masters because they are not smart or hard working, but because in this environment in China, technical personnel work too much overtime, so that they do not have extra time to study.

This reason has some objectivity, after all, compared with Europe and America, we do have to work more overtime, but this factor is only a problem to be overcome, not an insurmountable gap, after all, there are still so many talents around us who grew up in China.

For this kind of answer is also really don’t know how to answer, those who are worse than you don’t have to go to work? Have no time every day?

Why is the project delayed again? You said “there is no time”;

Why don’t you study English? You said “I don’t have the time”.

Go running on the playground and you say “no time”. Where do you spend your time? What have you learned?

I can only say don’t use your physical diligence, cover up your mental laziness, just read a book, the name is: “There is no such thing as lack of time”.

You’re busy all the time, but you’re running around unproductive or unproductive. Why not think about where your time is going? Know there are a lot of things you’re doing wrong, but can’t catch one to correct? The book gives an important tip that is often overlooked in the time management process: go to bed early and wake up early.

Share my experience

How does a Java programmer become a master architect?

One, source code analysis

Source code analysis is a kind of critical knowledge, master this critical knowledge, can be invariable should change, source code analysis for many people is very boring, difficult to understand.

Read the source code, I think there are three core points: technical basis + strong thirst for knowledge + patience.

I think is the core driver of reading source code. The majority of programmers I’ve seen have this kind of attitude toward learning:

1, only focus on the project itself, baidu if you don’t understand. 2. In addition to working on projects, I also read technical books about projects and read Wikipedia. 3. Besides reading books related to the project, I will also read books about the IT industry. For example, when LEARNING Java, I will also learn functional languages, such as LISP. 4. Look for open source projects, try out a lot of third-party frameworks, and write demos. 5. Read the basic framework, J2EE specification and Debug server kernel. Most programs are type 1. Getting to type 5 requires not only intense interest, but courage: Can I read it? In fact, you can read it

Patience is really important. Because you rarely see instructional articles or books reading the source code, you are not required or advised to read it. You’ll often get stuck, and a reader can get stuck in a maze. What you need to do, perhaps, is to pause for a moment and look at it from the outside: the API structure, the framework design.

The following is my summary of the current most should learn source knowledge:

No sense of crisis programmer, you are expecting a high salary to fall from the sky?

Distributed architecture

Distributed system is an old and broad topic, but in recent years because of the rise of the concept of “big data”, it is full of new youth and vitality. In addition, distributed systems is a discipline that places equal emphasis on theoretical models and engineering techniques. Compared with the research direction of machine learning, students studying distributed systems often feel that “it is easy to get started, but difficult to get deep”. Indeed, learning distributed systems requires almost no mathematical knowledge.

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

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

Distributed storage system Distributed computing system Distributed management system The following is a summary of the most mainstream distributed technologies in recent years:

No sense of crisis programmer, you are expecting a high salary to fall from the sky?

Third, micro services

Microservices are hot right now, and everyone claims to be using microservices architecture, but what exactly is microservices architecture? Is microservices architecture a trend? We all lack a clear understanding of these issues.

In order to solve the problems under the single architecture, the microservice architecture came into being. Better to break up services sooner rather than build a bloated monster that is hard to tame. The core idea of microservices is to split and decouple services to reduce complexity. Microservices emphasize the reasonable disassembling of functions, as far as possible to ensure the Single function of each service, and clear roles according to the Single Responsibility Principle. Make each service light, so as to be flexible and reusable, and also according to the needs of each service’s own resources, separate deployment, separate horizontal expansion.

The following is a summary of the knowledge points I need to learn about microservices:

No sense of crisis programmer, you are expecting a high salary to fall from the sky?

Fourth, performance optimization

Whether it’s dealing with a front-end interview or improving the product experience, performance optimization is a topic that can’t be avoided.

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

Loading speed is really fast, the user opened the input URL press enter immediately see the page

It doesn’t load faster, but your site feels fast to your users

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, and you can learn and use them by reading Java Tools for Source Code Optimization and Analysis.

It is important to understand that no two applications can be optimized the same way, and there is no perfect reference path for optimizing Java applications. Use best practices and insist on handling performance optimizations in an appropriate manner. To achieve the true highest performance optimization, you as a Java developer need to have a correct understanding of the Java Virtual Machine (JVM) and the underlying operating system.

The above five knowledge systems are the most mainstream technologies that I have summed up for many years. Friends who want to learn these techniques can add group: 454377428. The group will share these technical knowledge points for everyone to learn free download

The following is a summary of what I should learn and understand about performance optimization:

No sense of crisis programmer, you are expecting a high salary to fall from the sky?

Five, Java engineering

To do a good job, you must first sharpen its tools, whether it is small white, or senior development, need to choose a good tool first. Improve development efficiency and teamwork efficiency. Give yourself more time to think.

“Big Talk Architecture” Ali architects share technical essentials Java programmers need to break through

No sense of crisis programmer, you are expecting a high salary to fall from the sky?

Note: Add group 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 the technical bottleneck can be recruited.

2. I have been in the company for a long time and have been comfortable, but I hit a wall in the interview when I changed my job. Need to study in a short period of time, job-hopping can be added.

3. If you have no working experience, but have a solid foundation, and have a good command of Java working mechanism, common design ideas and common Java development framework, you can add.

4, feel very good B, general needs can be done. But the knowledge points learned are not systematic, it is difficult to continue to break through in the field of technology can be added.

5. Ali Java senior bull live explain knowledge points, share knowledge, sorting out and summarizing years of work experience, with everyone to establish their own technical system and technical knowledge in a comprehensive and scientific way!

6. No small or small white or other groups, thank you.

We have the target, now it’s action! Remember: learning is always your business, and you won’t have much time if you don’t learn, but you can sometimes use what you learn to have more fun! Time is the basic component of life, but also the fundamental scale of all things exist, our time is there, our life is there! Our values will rise or fall there too! Java programmers, come on

If all of these things work for you, you still have a few options:

One is slumping and muddling through.

To be honest, be honest, do laoshishi, take honest wages, this kind of employee company is also very needed, generally will not encounter the fate of firing; The other is to change careers or start a business.

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