Which direction is better for programmers?

Front end, back end, algorithm, test, client...

Programmer's development direction

Computer related knowledge is very extensive, it is impossible to learn all in a short time, even the company's CTO can not be proficient in everything, beginners should choose a direction, do not think about the development of client software, website, APP , This is unrealistic in a short period of time. Believe me, you are not a god!

  1. Windows development: mainly to develop client (software on PC), such as QQ, Thunder, 360, Chrome, etc. There are many programming languages ​​that can be used for Windows client development, including C/C++, C#, VB, Java, Delphi, Easy Language, etc. This means that there are many learning paths for Windows development, and you can choose one of them. However, companies generally use C/C++, C#, and Java, and they can also use VB, Delphi, and easy languages ​​to write their own gadgets.

  2. Game development ( game client development): You need to have C/C++ foundation, and then learn Unreal (Unreal), Frostbite (frost), CryEngine (CE) and other game engines. If you want to understand the principles of game engines and make yourself better, you also need to learn graphics libraries (such as DirectX, OpenGL) and computer graphics.

  3. Linux development/game background development needs to learn the Linux operating system on the basis of C/C++, including basic Linux operations, Shell, file system, process thread, memory, Socket communication, kernel, etc., and even need to communicate with algorithms, Qt, etc. Combine. In addition, you can also use the Go language for Linux development. Go language has already had a lot of application cases around the world. Most of the game platform servers are also based on Linux, and the above skills will also be used. In addition, I also give you an algorithm note that helped me get offers from top-tier manufacturers such as BAT. It was written by an Ali god. It is very useful for students who have weak algorithms or need to improve. Algorithms must be the most important part of computer learning. The most important:

Leetcode brushing notes written by the BAT interviewer, after reading the questions that kill 80% of them

  1. SCM/embedded: SCM/embedded is a combination of software and hardware. You must not only be able to write code, but also understand the hardware, so the entry barrier is relatively high, the knowledge is relatively complicated, and the learning time is long. It is best to choose this direction with a foundation of digital circuits, analog circuits and assembly, which is very suitable for students majoring in electronic information engineering. Most of the students in this direction go to companies that mainly produce electronic products such as ZTE and Huawei. Although the salary is not as high as that of ordinary programmers, it is not bad.

  2. Algorithm: NB's programmers are doing this, generally do not pay attention to the programming language, but focus on the method and efficiency of problem-solving. The salary is slightly higher than that of ordinary programmers.

  3. Website development: also known as web development, divided into front-end and back-end. The backend is mainly responsible for server-side programming. In addition to learning Java, PHP, Python and other programming languages, you also need to learn MySQL, MongoDB, Oracle and other databases. The front end is mainly responsible for the design of the web interface and the realization of special effects, and requires learning HTML, CSS, JavaScript, etc. JavaScript can only be used in the web front end. It can achieve some special effects or communicate with the server. Later, someone transplanted JavaScript to the server and named it Node.js so that JavaScript can also be developed in the web background. In other words, as long as you need to learn JavaScript as a language, you can fix the front-end and back-end of the website and become a full-stack engineer.

  4. Mobile development: including IOS and Android, you can develop APP, you can also develop games, you need to learn Java (for Android), Objective-C (for IOS), Swift (for IOS), etc.

  5. Testing (QA): A product needs a lot of testing before it can be put on the market. QA (Quality Assurance, translated as "quality assurance") personnel are the programmers to check if the programmer's work does not meet the product requirements or there are too many bugs , QA has the right to dismiss, then it will affect the performance of programmers. QA not only needs to be able to understand the code (approximately understand what it means), but also to master certain testing skills. More importantly, it is meticulous, patient and perseverance, and the proportion of girls is high.

  6. Big data needs to master the Java, Python, R or Scala programming languages, and learn the Linux operating system, Linux cluster construction, databases, etc. The learning of big data frameworks such as Hadoop, Spark, and Hive is the key content.

  7. Artificial intelligence/machine learning/deep learning not only need to master Python, R or Java programming language, but also need to learn mathematics (mostly concentrated in the areas of calculus, linear algebra, probability and statistics) and algorithms (such as logistic regression, deep neural networks) , Linear regression, K-means, collaborative filtering, etc.), this is the key content.

Programmer's treatment

The treatment in the IT industry is higher than in many industries, and programmers are particularly prominent. College students who have just graduated and entered big companies such as Baidu, Tencent, and Alibaba generally have an annual salary of more than 300,000.

With strong programming skills and a good resume, you can get more than 400,000, and there are more than 500,000, but very few.

Start-up companies that have received financing, small-scale companies, and some state-owned enterprises are also treated well, and the annual salary can exceed 300,000.

In many small companies, the boss alone has the final say, and there is no financing, and the salary is generally not high, several thousand yuan a month. Such a company is difficult to recruit, has a low entry barrier, and has negligible requirements for academic qualifications. It is enough to be able to do some work. But it is often this kind of company that is the most tormenting. You need to do everything. There is no explicit stipulation for salary increase. The boss often draws cakes and threatens you to leave if you can't complete the task.

Each city has different treatments. First-tier cities such as Beijing, Shanghai, Guangzhou, and Hangzhou have large companies with the highest treatments; second- and third-tier cities such as Chengdu, Dalian, and Xi'an receive average treatments.

Here is also a copy of the algorithm notes that helped me get offers from major manufacturers such as BAT. It was written by an Ali god. It is very useful for students who have weak algorithms or need to improve. Algorithms must be the top priority of computer learning weight

Guess you like

Origin blog.csdn.net/weixin_52308504/article/details/114032048