Yes, the prospects for Chinese programmers are dark

It's like this, it's dark, super dark, you can't see your fingers when you reach out, and you can't see the sky when you raise your head.

However, the programmers here refer to those who have learned technology for a month or two, and want to get a high salary without doing a project. In the end, they have the same salary as before. They write old codes and move wheels on the Internet every day. Sitting and waiting for a salary increase, waiting for a promotion, waiting for a car to buy a house, in the end I didn’t get what I wanted, so I got to know and complain.

In order to distinguish them, other people who have studied technology seriously and polished for four or five years are not called programmers. They call them whatever they like. Engineers, technicians, technical experts, and technical managers can do it. Anyway, with those above. separate. Their prospects are bright, and the brilliance of the Statue of Liberty illuminates them, and their income from a part-time job for a month is higher than that of a programmer, Amen.

Otherwise, I know that this kind of problem will come up in two days, and I was shocked, making me feel that no matter how much I learn technology, no matter how close I am to the front line of technology, I will have no hope of getting a promotion and salary; the later college students have not yet entered the industry. A large number of people have been dismissed, what should I do if the company still has so many positions missing?

What kind of outlook can be called a gloom?

When you are holding a master's degree certificate in computer science and technology, but your salary is not as good as that of other undergraduates, and you are more tired than others, and it is difficult to get promoted and raise your salary, the prospects are really gloomy. .

In fact, however, in 2019, the IT industry's salary level steadily topped the list, with an average annual salary of 161,352 yuan; science and technology ranked second at 133459 yuan; and finance ranked third at 131405 yuan.

Take a look at the following picture, it is more intuitive, 70% of programmers are paid more than 100,000.

The prospects for this are bleak, so other industries...

I can't think of words to describe the tragedy.

How to be a promising programmer?

Learn technology, learn technology, learn technology, or learn technology.

I'm not sure if programmers in this industry eat their youth, but they must rely on technology. Many people do technology-intensive things with labor-intensive thinking.

How high can the added value of manual labor be?

Moreover, the emergence of the programmer industry has really saved many people who are not good at mixing in the workplace and are unwilling to deal with people. As long as you can solve the problem, even if you don't speak, your boss will still give you a raise.

Because he was afraid that you "accidentally" wrote a bunch of bugs, and he was afraid that you would change jobs.

But all of this is based on your "irreplaceability". If you can only knock on the basic code, move the wheels, and click on Baidu, then you will be easily replaced. You have no confidence and no bargaining chips to discuss treatment. Because these jobs are physical work rather than mental work, and programmers should be architects rather than porters.

How to improve yourself?
There are two general directions:

1. Enhance the breadth
2. Drill the depth

If you choose the first direction, you can try to be a full-stack engineer, and the so-called full-stack engineer refers to a person who has multiple skills, is competent at the front and back ends, and can use multiple skills to complete products independently.

To develop in this direction, you don't need to learn how much technology in each direction, you can master about 80% of each language. You may not be able to solve many advanced technical problems, but you can solve most of the front-end and back-end problems alone. And because he is familiar with the overall situation of development work, he is the developer closest to the project manager.

And if you choose the second direction, you are required to thoroughly learn a certain or two programming languages ​​in a certain technical field, so that all the problems in this technical field can be solved by you. Common technical fields include traditional fields such as front-end, back-end, mobile, and iOS development, as well as artificial intelligence, big data analysis, and the Internet of Things that have emerged in recent years.

After talking about the direction, let's talk about the method, including the following two aspects:

1. What to learn
2. How to learn

What to learn?

Learn the programming language that suits your chosen direction. Due to space limitations, I will analyze the pros and cons of the top ten most popular programming languages ​​in 2020 and their application areas, and put them in the following article. Friends in need can click to open it.

Which programming language is more suitable for learning as a beginner? How to learn?

Here to share with you my own learning ideas:

1. Learn the basics
2. Consolidate the basics

There are two points to pay attention to when learning basic knowledge: find the right direction and use the right method. To be more straightforward is what to learn and how to learn.

Learning content
First of all, we must lay a solid foundation. The most basic algorithms and data structures must be thoroughly familiar. I asked to use it by myself.

For example, the following algorithms and data structure types are forced to me. Many of them are useless when I work part-time, but I use them when I return to work.

**10 algorithms: **recursion, sorting, binary search, search, hash algorithm, greedy algorithm, divide and conquer algorithm, backtracking algorithm, dynamic programming, string matching algorithm.

**10 data structures: **array, linked list, stack, queue, hash table, binary tree, heap, jump table, graph, Trie tree;

Don’t underestimate these small twenty groups of words. If you start to learn it, it will take you a year or a half. For example, the sorting algorithm alone can be divided into the following ten types:
Insert picture description here
Then, when you have thoroughly understood these basic knowledge , Attention is to thoroughly understand, I set myself a requirement that when I use it, I can use it directly instead of going back and turning the book. After doing this, I went on to learn some more in-depth content:

such as:

-How does the programming framework work and output "Hello World"?
-How to make yourself more formal and use Mysql more systematically?
-What are the different usage scenarios of Key, List, Hash, Set, and ScoreSet?
-The mainstream programming frameworks are all related to design patterns, do they have commonality?

When I thought through these questions clearly, I found that many of the previous questions could not trouble me.

Learning method
Everyone’s learning method is different. Some people like to learn while working on a project, some like to learn a project for a period of time, some like to read books, and some like to watch videos. It's not a problem, it's important to find the one that suits you.

But the following points, it is best not to do it, because I have experienced all these pains, and my hair has fallen out. The result is half the result and it is horrible.

1. Blindly knock on other people's code.

In the beginning, I can’t do it only by following others, which doesn’t matter. But after someone knocks it, you must understand your own memory and turn it into your own thing. If I typed it twice or even three times according to other people's code, it didn't help me except to let me see it carefully and practice typing. Oh, yes, a few more hairs have fallen out.

So remember that imitation is not the key, thinking is the key. To be able to think and learn from other people's ideas, break away from books and blogs, and implement functions completely by yourself. When I did this, I found that my learning was effective.

2. Thinking of eating into a fat man

I just said that I came back to study because I couldn't do the project, so I was eager to find success at the beginning, and I only learned how to use it, and I didn't know what it is.

**But the technology is not just a matter of seeing it, and you can probably do it. You really can't be fat in one breath, you must do things well. **So don't try to solve all the problems at once, here is an effective suggestion for pro-test: you can divide the daily learning process into small pieces and learn in stages, which will be more efficient.

After talking about the first point, how to learn basic knowledge, let’s talk about the second point on how to consolidate basic knowledge. There are thousands of methods, and I have tried many, but I think the most effective is to brush the questions, and there are methods to brush the questions.

The following method of brushing questions is very common but also very practical, and I recommend it to you:

The first time : You can think first, then read the reference answer to brush, combine with other people's problem solutions. Think, summarize and master the type of the question, the way of thinking, and the best solution.

Second time : Think first, recall the optimal solution, compare it with the solution I wrote before, and summarize the problem and method.

The third time : improve the speed of brushing the questions, come up with a question, you can know the focus of the investigation, the method of solving the problem, and write the answer in a short time.

Then I recommend the two books I read at the time and some learning websites, which can make learning easier for everyone.

book:

"Code Encyclopedia" stimulates your thinking and helps you build high-quality code.
"Programmer's Practice" comprehensively explains the best practices and major pitfalls in many different aspects of software development.

website:

  1. GitHub — the most important website for developers: https://github.com, to learn but not just to learn.
  2. W3school-The most suitable website for novices: https://www.w3school.com.cn/: Free and comprehensive.
  3. Experimental Building-an online programming learning website:
    https://www.shiyanlou.com/courses/, very convenient and practical.
  4. Code School-an English learning website: https://www.pluralsight.com/codeschool, supports staged challenges.

The last step is definitely to fall into practice. My method is to take part-time projects one after another, because I have to travel for myself. But there are actually two ways to improve yourself:

1. Do some practical personal projects and practice your own hands

Austin Henry, an assistant professor at the University of Tennessee, based on his own experience, gave a list of "challenging projects that programmers should try", including the following six projects. I did it after that and thought it was pretty good. I recommend it to everyone:

text editor

  • 2D Game-Space Invaders
  • Compiler-Tiny
  • BASIC
  • Mini operating system
  • Spreadsheets
  • Electronic game console simulator

Each project has different challenges. For example, a text editor requires that without using the built-in text box component in the GUI framework, build a text box that supports cursor movement, selection, insertion and deletion and store the text document in In memory.

If you can solve these problems in these projects, and then make the projects independent and complete and run successfully, your ability will definitely be able to take another step.

2. Write technical articles

Everyone must know the Feynman technique. This is also one of the applications. Teach others what you understand so that others can understand. In this process, you must still do a complete project. After you come out, you will have a more thorough and in-depth grasp of what you understand.

It can be considered a good way of practical operation, which can make your foundation stronger.

Just remember that in this process of continuous output, it is important to do the following three points:

1. Make programming a habit.
2. Combine learning and practice, and find knowledge loopholes in projects.
3. Think deeper, lower-end things.

Finally, if you also want to improve your programming ability through part-time job, the following article is recommended to you, because doing part-time job is too easy to be fooled. There are three part-time jobs that I summarized, which means that part-time jobs will not be pitted, and which part-time jobs should be paid special attention to. There are also some part-time platforms at home and abroad and some of their characteristics, I hope they can help you:

Ten platforms where you can earn extra money from private work, you have the technology and the money

Guess you like

Origin blog.csdn.net/BinSTD/article/details/107331014