Are programmers promising for outsourcing?

No, not only has no future, but also no money.

Let's just talk about an example around you. A senior intern I met when I was co-leasing in Hangzhou worked in an outsourcing company. Every day from nine to twelve nights, six days a week to make up for sleep.

Don't ask why. Asking is about rushing to the construction period. Asking is about completing one project and then another project.

Every day when I was lying in bed, I was about to fall asleep, and I heard him come back by pushing the door, and the noise of the water made me continue to play on the phone. At a glance, one o'clock in the morning.

Once, a few of us lived together and asked him, saying that if you work so hard, the salary should not be low, right?

He said it was okay, only 3,600 when asked.

I had an internship salary of 4,000. An Internet company with a good deal of work, working from 9 to 6 hours, plus two days a week, weekends and weekends.

He said that it will be higher if he becomes regular.

Another friend asked how much he had been converted. After he reported a number, we began to persuade him to change careers or quit.

He refused to listen. Because I started to change jobs on the second day after I joined the bank, my salary was deducted for one month, and the internship period passed a one-off settlement.

So, is there a future?

I don't think so.

Is there any money?

I don't see it either.

So, if you haven't gotten into it yet, let's quickly quit.

As for what direction to choose, for now:

Artificial Intelligence Big Data Internet of Things>Operating System Game Development>Software Webpage Mini Program Development

As for which company to choose:

BAT, Meituan, Netease, ByteDance>Foreign field startups, the kind that has taken a lot of financing>Internet SMEs>Outsourcing companies>Traditional industry pseudo-Internet companies

If your current technology can't meet that requirement, it doesn't matter. Next, I will talk about how programmers can improve themselves through free time.

A person’s ability is like a pond, constant input and constant output. The capacity of the pool and the quality of water determine whether the output is efficient or not. If input is greater than output, your pond will continue to expand, in other words you will. There are more and more skills, only input but not output, your pond is a muddy stagnant water, and the screen is full of bugs as soon as you practice it.

So if you want to improve yourself, you have to do both input and output at the same time. And before the input is output, if you want to improve yourself, you must first do input and learn more in-depth knowledge.

According to the conclusions I came to after communicating with many colleagues, programmers only need to do the following two most basic things if they want to learn more efficiently and effectively:

  • Learn the basics
  • Consolidate basic knowledge

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.

What to learn?

First of all, we must lay a solid foundation. The most basic algorithms and data structures must be thoroughly familiar and ready to use.

For example, the following algorithms and data structure types must be mastered.

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 20 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:

Then, when you have thoroughly understood the basic knowledge, pay attention to it. At least you can use it directly when you want to use it without going back and turning the book. You can 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 you think about these questions clearly, your programmer's path to advancement is halfway through.

How to learn?

Everyone’s learning methods are different. Some people like to learn while working on projects, while others like to work on a project for a period of time, some like to read books, and some like to watch videos. These are not problems. , The important thing is to find the one that suits you.

But for the following points, it is better not to do it, because I have brought so many people, and those who dare to do so will get twice the result with half the effort, and the results are terrible.

1. Blindly knock on other people's code.

At the beginning, you can’t just follow others to knock. This is not a problem. The problem is that after following others, you have to understand your memory and turn it into your own thing. Just type someone else's code twice or even three times, except to make you look carefully and practice typing.

Because imitation and reproduction are not the key, thinking is the key. You need to be able to think and learn from other people's ideas, break away from books and blogs, and implement functions completely by yourself. Only in this way can your learning be effective.

2. Thinking of eating into a fat man

The situation in this area is a little rare, but it's not uncommon. Some people are eager for success. They only learn how to use it, and if they don’t know it, they still know why.

A typical example is the fresh graduate I brought two years ago from a university in Beijing. At that time, there was something wrong with the part he did, so I recommended a book to him and asked him to solve the problem after reading it. Because it was not very urgent, I said it would be done in a week. As a result, two days later, he ran over to tell me that he finished reading the book and the problem was solved. I asked him how he did it, and he said he did it directly after reading it.

Technology is not something you can do after seeing it. You can't be fat in one breath, and you must do things well. So don't try to solve all the problems at once. Here is a suggestion: 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 the basic knowledge, let's talk about the second point how to consolidate the basic knowledge. There are thousands of methods, and I think the most effective method is 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.

Here, I recommend two books and some learning websites to make your learning easier.

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:

  • GitHub — the most important website for developers: https://github.com, to learn but not just to learn.
  • W3school-The most suitable website for novices: https://www.w3school.com.cn/: Free and comprehensive.
  • Experimental Building-an online programming learning website: https://www.shiyanlou.com/courses/, very convenient and practical
  • Code School-an English learning website: https://www.pluralsight.com/codeschool, supports staged challenges.
  • MDNWeb-a website that provides information about open web technologies: https://developer.mozilla.org/zh-CN/

In the learning process, I hope you can do the following three points:

  • Make programming a habit.
  • Combine learning and practice, and find knowledge loopholes in projects.
  • Think deeper, more bottom things.

Because only in this way can your pond be endless and endless.

You should also be thankful that you did not go to a traditional industry as an Internet company. At any rate, outsourcing companies still have real projects that you can do, and you can practice your hands, which will help you improve your technology.

If you think the company’s projects are too repetitive and the improvement is not big, you can try the following three methods

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

Austin Henry, an assistant professor at the University of Tennessee, combined his own experience and gave a list of "challenging projects that programmers should try", including the following six projects. I did it before 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.

3. Take some part-time development jobs

This is the most practical of the three methods, none of them.

And needless to say, this is also the fastest and most effective method. After all, theory is not enough for programming. Hands-on practice is the key and the ultimate goal.

But part-time jobs also have a lot of pitfalls and many small ways. You must first pay attention to whether the project is reliable or not. Don't accept it if there is no requirement document.

Here I share a very practical article, which not only teaches you how to judge whether the project is reliable, but also sorts out the characteristics and differences of a total of 24 IT-type part-time platforms at home and abroad. I hope it can be helpful to you.

Ten websites that make extra money from private work, you have the technology and the money

Here, I only recommend the programmer inn:
Insert picture description here
the benefits of receiving projects on this platform are mainly the following three points:

·The platform will confirm the authenticity of the project, and the money will hit the platform first.

The advantage of this is that you are very practical when you develop, because you know that he can afford to pay and know that the money is there, so you won't lose it or run away. Unlike offline outsourcing, I am afraid that if I am not an acquaintance project, I am afraid that he has no money and is afraid that he will run away.

·It will automatically connect with the product manager and have a complete requirement document.

Needless to say how important the requirements documents are to programmers’ development, I don’t need to say any more. Programmers who don’t have requirements documents are blind men with guns. The dai bombs (ma) crackle out, but they miss the target. And because there is a dedicated person to check the requirements document, you only need to pay attention to some details, not having to stare at the product manager can really make the programmer lose some hair.

·Development in stages and payment in stages.

Because the first project was small, it was only cleared twice. The first time I remember it was 40% cleared, and the second time it was cleared. Later, I took on some larger projects, and there were also four and five transfers, and the money was automatically transferred to the account. This is really good. It's no better than offline outsourcing. After the development is completed, you have to brazenly ask for money, and don't take the initiative at all, just like borrowing other people's money to collect debts.

Guess you like

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