Why every IT programmer must learn algorithms?

foreword

Shen Zhuoran, Google AI Research Institute believes:

Most of the content in actual work does not use algorithms at all, and more is added, deleted, checked, modified, connected to APIs, and data formats adjusted. Further work is usually more related to system design than to algorithms. Only in low-level, cutting-edge, or very performance-sensitive scenarios can it involve implementing algorithms by itself, but these scenarios require far more than algorithms. In fact, you need to be careful not to overuse algorithms in your work. The purpose of software engineering is to write code that is easy to understand, collaborate, and maintain, not code that looks "smart" or more efficient but much more complicated.
But that's not to say algorithms aren't important. I think the most important role of algorithmic knowledge in practical work is to know that certain algorithms exist, so that we can understand the underlying principles of the system, or find and reference appropriate algorithm implementations when needed.

Algorithms are important, but different positions need to master different degrees. For the development of front-end and client-side, it is enough to master some basic algorithms. If it is a backend that is separated from the interface layer and often has to deal with CPU, cache, memory, I/O, etc., it is necessary to thoroughly study the algorithm.

But what I have to say is that more and more Internet companies pay attention to algorithm ability in interviews.

Especially big factories, as long as they are writing code positions, they attach great importance to tearing code by hand.

In fact, the algorithmic ability can help the interviewer judge whether a programmer has a solid foundation, and it can also see the programmer's ability to solve problems from the side.

[----Help programmers improve, all the following learning materials are free at the end of the article! ----】

It can be seen that algorithm is roughly equivalent to algorithmic thinking, not learning for the sake of being useful or useless. It is to enhance everyone's cognition and improve their ability to solve problems.

How to learn better algorithms

You can learn about various commonly used algorithms and data structure principles by reading books and courses on the Internet.

The entry-level books recommend "Big Talk Data Structure" and "Comic Algorithm". For a little advanced, you can read "Algorithm 4" and "Introduction to Algorithms".

Regarding brushing the questions, I suggest that you don’t look for the answer first, and it’s okay to realize it by yourself even if it’s bad. Next, look at the answer, see a better solution, learn to understand, analyze why it is better than you, and if you really understand it, you can find other people's optimization points. In fact, it will be very interesting in the process, after all, it is result-oriented.

For the learning of classic algorithms, it is roughly divided into several sections:

The first stage: For a specific algorithm, we must first figure out what problem the algorithm solves. It may be to achieve a specific function, or it may be excellent in some aspects, such as time complexity or space complexity. , In short, figure out what is the purpose of this algorithm being researched.

The second stage: Then you have to figure out the living environment of this algorithm, that is, to see if the things you are studying at this time depend on other knowledge. You should first understand and master the underlying knowledge. After all these problems are solved, you will start to learn the algorithm itself. Understanding an algorithm is a hard work. At the beginning, you will inevitably have a lot of confusion. For example, you often doubt the importance of what the author tells? What is the connection between these contents and this algorithm? There is often this feeling of being confused. In fact, the author’s foreshadowing is to establish the foundation for describing the main content of the algorithm. Only by accepting and understanding these foundations can we gradually touch the essence of the algorithm, so patience is very important. .

The third stage: After reading the main process of the algorithm, I often still feel confused, mainly because I don’t know what is good about this process, so I entered the next stage, understanding the author’s understanding of the excellent functionality or efficiency of this process Explanations and proofs above. This is the most essential part of the algorithm, that is, the benefits brought by a deep understanding of the main process of the algorithm. This is the place where people's understanding ability is most exercised.

The fourth stage: The above points are the process of the algorithm learning stage. The next step is to study the code implementation of the algorithm, design test cases and run the code in person, and analyze the advantages of the algorithm from the perspective of code running time. This is also to deepen the understanding of the algorithm. The process of algorithmic understanding.

The fifth stage: the last is to cooperate with the corresponding topic exercises, so that you can use and make good use of the learned algorithm through the method of topic practice, and have a certain degree of sensitivity to this algorithm. Specifically, it means that when you see certain topics, Being able to generate a correspondence with the algorithm according to the characteristics of the topic, that is, having the ability to draw inferences about other cases from one instance.

1. Learning routes in all directions of Python

As an IT staff, if you don't advance, you will retreat, so don't forget to improve yourself. Be sure to pay more attention to the latest programming trends. Now is the information age, and tens of thousands of data need to be processed. Data analysis skills have become standard equipment for professionals in the workplace.

Hard skills are simply the skills needed to engage in data analysis, such as how to use python, SQL and other tools. Soft skills are mainly some thinking methods and common data analysis methods.

insert image description here

Just started learning python, if you don't even plan the complete learning steps, it is basically impossible to learn python. I sorted out all the directions of Python to form a summary of knowledge points in various fields.(High-definition pictures and all the following materials are available at the end of the article for free)

Some hard skills needed to engage in data analysis, such as how to use python, SQL and other tools!

insert image description here

2. Getting started with a full set of learning videos

When we watch videos and learn, we can’t just move our eyes and brain without using our hands. A more scientific learning method is to use them after understanding. At this time, the hands-on project is very suitable.

insert image description here

Three, Python operation example

Learning python is the same as learning mathematics. You can’t just read the book without doing the questions. Looking directly at the steps and answers will make people mistakenly think that you have mastered everything, but you will still be at a loss when you encounter a problem.

Therefore, in the process of learning python, you must remember to write more codes by hand. You only need to read the tutorial once or twice.

insert image description here

4. Python employment project actual combat

We must learn Python to find a high-paying job or a high-paying part-time job. The following are some practical projects that companies can use. After learning these, I believe everyone will be able to find a satisfactory job.

insert image description here

11 Django framework

insert image description here

16 WeChat public account
insert image description here

18 Common crawler module usage

insert image description here

21 Data Analysis

insert image description here

22 Machine Learning
insert image description here

There are other things, such as my own Python introductory graphic tutorials, you can use your mobile phone to learn knowledge when you don’t have a computer, and after learning the theory, you can type the code to practice verification, and there is also the library information of the Chinese version of Python. , MySQL and HTML tags, etc., these are things that can be given to fans.

Data collection

These are not very valuable things, but they are really good for learners who have no resources or the resources are not very good. If you can use it, you can scan the QR code of CSDN official certification below on WeChat [free access]↓↓↓ .

insert image description here

Good article recommendation

Understand the prospect of python: https://blog.csdn.net/SpringJavaMyBatis/article/details/127194835

Learn about python's part-time sideline: https://blog.csdn.net/SpringJavaMyBatis/article/details/127196603

Guess you like

Origin blog.csdn.net/weixin_49895216/article/details/131509919