This is the second day of my participation in Gwen Challenge

In Talking About Programming careers (2019 Edition), I gave a rough introduction to what I know about programming careers. After two years of precipitation and changes in the market environment, I now have a richer and deeper understanding of this industry. Let me share my insights.

Confused start

For programmers who have just graduated and worked for 1-3 years, because they are not rich in experience, they feel particularly fresh and energetic. They can also get rapid growth during this period. But after three years, he will find that everything in the company seems to be very comfortable, and every day is more of a repetitive labor, into the comfort zone. In addition, the energy is not as good as the company’s new, old will also face the 35-year-old crisis, so he began to fall into confusion.

This is normal. If you don’t have a long-term goal, or are used to going with the flow, it’s easy to feel overwhelmed.

Early in our careers, we have clear goals and focus on completing the tasks at hand. We work in a single mode. As we get older, neither we nor the industry will allow us to be stuck in a rut.

Schopenhauer said, life is a mass of desire, desire can not be satisfied then pain, satisfied then boring, life is in pain and boring swing between.

So life is an upward spiral, and it’s good that we can feel our confusion, at least when you’ve identified the problem. This is the time to take positive action to solve the problem. After all, the nature of a programmer is to solve problems.

Introversion and anxiety

Having talked about individuals, let’s take a look at the outside world. This year, the discussion of “internal volume” is particularly hot. Because there are too many people to satisfy the insufficient jobs, the competition in the programmer industry has become a stock competition. Everyone’s competition is increasingly fierce, and the threshold of the industry is getting higher and higher.

When industry dividends dissipate, it is time for rational thinking, both industry and individuals, to think more about the longer term.

The social network is exaggerating the anxiety, we are too easy to be attracted by the appearance of programmers high salary, entering the big factory to get high salary seems to become the only destination of every programmer, we started crazy action for this goal, everyone is very tired has become an inevitable result, the society is getting more and more coils.

In this age of anxiety, it’s time to think about how to break the game as a programmer.

The way of broken

I’ve spent the last year or two thinking about how I can become a better programmer, be more competitive, and be more valuable. From my personal experience, I have summarized the following five points, welcome to discuss and exchange:

1. Lay the foundation

I am not a programmer by training, in the career path stepped on a lot of pits, take a lot of detours, these are my lessons of blood and tears. In the past, I was just satisfied with the completion of work tasks, but now I understand that the more advanced programmers are, the task is not so simple, but also need a wide range of knowledge and profound skills to support the system architecture.

The depth of the basic knowledge of computer determines to a large extent how far a programmer can go. These contents, even the students who graduated from the section will forget a few years later, let alone the students who graduated from the non-section, they have no reason to waste time, need to spend others several times the effort to make up for them.

These basics include data structures and algorithms, operating systems, computer networks, compilation principles, computer architecture, and so on. It takes a lot of work and energy to master each subject completely. Programmer is a lifelong learning profession, you must learn to enjoy it.

2. Build an architecture

The knowledge a programmer has goes far beyond the aforementioned computer basics, it’s a vast ocean. Including Java/ Go/Python, design patterns, concurrent programming, development frameworks, databases, caches, message queues, distributed microservices, service governance, fusing downscaling…

Facing the vast sea of knowledge, in order to achieve efficient learning, the most important thing is to build their own knowledge system.

In learning, there is also the flywheel effect, where in order to make a stationary flywheel turn, you have to push it around and around with a lot of force at first. Each turn is hard, but each turn is not wasted. The flywheel turns faster and faster.

It is difficult to build a good knowledge system at the beginning, but when the structure of the building is completed and the overall cognition is in mind, the knowledge learned later will be added to the building, but it will become easier.

When the knowledge is mastered to a certain extent, we will find that in fact, a lot of knowledge in programming is the same. Building the knowledge system helps us form the ability of structural thinking, and we are more and more skilled in work.

Another thing that many programmers find after a few years is that the stuff they do in the company is pretty ordinary and doesn’t involve as much technology as I mentioned earlier. Indeed, this is also a common problem of the industry, interviews build rockets, work screw. But I think everyone is working for their resume, and even if they don’t use these skills in their job, they should take the initiative to learn them and think about whether they can be applied to their business. This is where advanced programmers differ from regular programmers.

3. Combine knowing and doing

The first two points have been lecturing on knowledge, but learning without thinking is useless. What really enables us to learn knowledge is to put it into practice and use it.

As the saying goes, “I have heard many truths, but I cannot lead a good life”, the experience of others is never my own. Only through practice and summary can I truly become my own.

This requires us to think more about the actual use of knowledge and apply it. Even if it is not useful in work, we can also write some demos, do some open source projects and so on to put our ideas into practice.

In addition, taking teaching as learning is also a good way to test whether you have mastered knowledge. You can try to summarize and output more, which is also a good way to build a knowledge system.

Finally, you can also look for some learning communities or technical organizations, and learn from more programmers to grow together, so as to avoid a person lost in learning.

4. Aim high

I know that in addition to a very small number of programmers with great passion for programming, the vast majority of programmers just hope to improve their skills to enter big factories and get better platforms for higher salaries. Learning programming is more of a tool for their promotion and salary increase.

Of course, I do not deny their practice, but I also found that many people are not that interested in programming, but they have the dream of entering a big factory, so they learn hard every day, but rely on their own persistence all the way to now.

I’m here to say that persistence alone won’t go far, and we may be able to give programming a higher meaning to lead us to action than just job interviews. For example, learning programming is to make us better ourselves, so that we can develop scientific learning methods, and constantly train ourselves to cultivate various abilities, so that we realize the boundaries of the world and the limitations of the self, and even let us see the great energy brought by breaking through their own limits.

Now that I am in this industry, whether I love it or not, I can keep my competitiveness through continuous learning and match my abilities with my qualifications, which is also a reflection of the spirit of craftsmanship.

You learn technology is not for interviews, it is at least your skills to make a living. Respect your skills to make a living. Maybe one day you will use these skills to benefit the society and change the world.

5. Ask good questions

Finally, ask good things, not future.

I can feel the insides and anxieties of this age that will never be contained and will only grow. Now the call for “lying flat” is also very high, and more and more people realize the importance of work-life balance and resist excessive introversion.

For myself, I accept what I can’t change, dare to do what I can, and learn to know the difference.

There is no road in life in vain. Every step counts. Have a goal in mind, action planning, arch a pawn, not tang donates.

I especially like a passage in “Chuanxilu” :

To study hard is like planting trees. Fang its roots and buds, still not dry; It has dry, but no branches; Branches lead to leaves; leaves lead to flowers. When the first roots are planted, cultivate them and irrigate them. Do not think about branches, do not think about leaves, do not think about flowers, do not think about things. What’s the use of contemplation? But do not forget the work of cultivation, afraid of no branches and leaves flowers?

Finally, I wish you all a smooth career!