To do this, you can also become a good programmer.

Source: Internet
Author: User
Tags traits

To do this, you can also become a good programmer.

As a programmer, I often ask myself a question:

What are the characteristics of excellent programmers?

I have summarized many characteristics, such:

  1. Ability to solve problems

  2. Ability to think independently

  3. Have curiosity and exploration spirit

  4. The logic is clear, and technical problems can be clearly explained in popular languages

  5. Good English Reading Skills

  6. Good mathematics and good Algorithms

 

After a period of observation, I found that all the above traits can be derived from a behavior habit, that is, if you have the following habits, then you may have and are not limited to all of the above traits

Observe the behavior of most programmers and go in the opposite direction

This sentence can also be described by the title of a book ("the path for few people"): the path for few programmers. Yes, the logic of this sentence is also obvious. It is the same as "excellent people are always a minority"

There are always a few excellent programmers

If your behavior is the same as that of most programmers, you may not become a good programmer.

Therefore, if you want to become a good programmer, you first need to come up with a notebook, record the characteristics of most programmers, and then analyze whether reverse actions will make you more competitive, here are some of the phenomena I have observed:

Most programmers like to talk about programming languages.

Programming languages are the most talked about by programmers. They like to discuss which programming language is more advantageous and focus on the ranking of programming languages, some people will enjoy learning new programming languages and use them as creden。 different from common programmers. On the contrary, due to lack of experience, the other part cannot tell which language is the most suitable for them, so they are reluctant to take action and fall into infinite tangle. Sometimes the camps of different programming languages will have a quarrel. This phenomenon is regarded as a defense of their own beliefs, which in turn will lead to the onlookers of most people.

Most people focus their attention on the programming language layer. The biggest reason may be that programming language is the door to the program world. It is also the most practical tool and has learned a programming language, you can interact with the computer in a new way.

But this is different from the real world. In the real world, learning a foreign language is equivalent to opening up a new world, for example, learning English well, you can freely navigate to a country in English-speaking countries to learn about their culture and history and learn first-hand foreign language knowledge, so as to help you make better decisions, it can be said that mastering a foreign language can increase your cognition linearly.

On the contrary, in the computer world, if you learn one more language, it will not bring you the effect of 1 + 1 = 2, because in essence, our goal is not to learn more programming languages,Instead, we use computers to help us complete specific tasks.To know the same task, you can even use several different languages to implement it.

I have read a question that may be a newcomer. He asked: I want to learn programming, but I don't know whether to learn Python or Javascript first. The person who answered the question told him: You may have been able to learn one of them for a long time.

Yes, good programmers don't spend a lot of time on programming languages, because they focus on more important things.

Most programmers do not pay attention to the basics.

One of the most popular words in the industry is

Grow up and do IT

This sentence means that the IT industry has a very low threshold. Anyone can join the industry after learning a programming language. In a deeper sense, IT work is repetitive, there is no need for creative talents.

When chatting, we often talk about algorithms. For example, "algorithms are important or unimportant at work." Many people give answers that are not important because they are rarely used in daily work. This is also a typical practical answer, and it is also very confusing, because "not used in daily work" is indeed a fact, but this fact cannot be used to deduce the conclusion that the algorithm is unimportant.

Algorithms are very important, just as mathematics is the foundation of all disciplines, so mathematics is very important. algorithms are the soul of a system and the chips that open gaps between different software, the most typical example is Google's search engine, which used to rely on the famous PageRank algorithm to open a gap with other search products on the market. This algorithm directly affects the search experience, with a high probability, people will want the results to come first.

Improving Algorithm capabilities can not only improve the competitiveness of software, but also improve our logic thinking ability. The difference between people lies in the difference in thinking ability.if ... elseThis kind of code will not change your thinking ability much, but in the AI age, you may think about algorithms in supervised learning and unsupervised learning from time to time, I think your future will not be worse.

Algorithms are only one of the basic components. The operating system principle, TCP/IP protocol, Innodb Engine in MySQL, implementation principle of Redis, and Reactor network model are all basic components, you may think this is difficult, but according to statistics, the basic knowledge only accounts for 3-5% of all the knowledge learned by a person,Mastering these basic knowledge is a constant magic weapon in the ever-changing knowledge ocean..

Most programmers do not pay attention to efficiency improvement.

If you are in an Internet company, you may ridicule your programmers as follows:

Your work is not saturated. Is the bug solved?

The following conversations are also common:

A: What are you doing?
B: I am forced to work overtime to solve the bug.

As you may see, most programmers are often limited by the vicious circle of bug solutions-bugs in previous versions have not been completely solved, and new features have a bunch of bugs going online. Solving a bug is a special obstacle to productivity. It is a by-product. Theoretically, employees should focus most of their energy on development, however, most companies have made huge costs in maintaining software stability.

Many employees complain that their work is so hard and their salary is not high, but they have never thought about how the result is, they may not have considered how much time they have invested can bring to the company. If they spend most of their time solving bugs, the output will not only be zero, but also negative, do you say the company will raise your salary.

As I have observed, this is really the case. during the development process, we especially care about the development time of a product and hope to complete the development and release of the product as much as possible, for example, one month, however, after the product is released, it may take 10 months or more to maintain it. This is really a strange phenomenon.

On the contrary, if everyone consciously improves their work efficiency, improves the quality of their products, and spends more time on valuable things, I think the company's performance will not be poor, if the company makes money, your salary will not be low. You may ask how to improve work efficiency. In fact, it is very simple. After doing everything, you should reflect on it:

Is there a simpler way?
How can I reduce the number of bugs?
Is there a general solution for doing this?

Most programmers do not use their spare time to explore

An important characteristic of human discovery is the initiative, not only me. I believe most leaders like to work with autonomous subordinates, not only because they are scarce, at the same time, such subordinates will take the initiative to solve the problem, which can greatly reduce the communication and management costs in the Organization.

When I first started my work, I found that some people in the company would study in their spare time. At that time, I thought that a company with better technology would change and the technology learning atmosphere would be better, who knows that these are their own fantasies. The reason may be that people like to have a comfortable life, or they will not learn any longer outside of work on the pretext that they are busy at ordinary times. What are the consequences of not learning at ordinary times? The most direct thing is that the ability to solve problems is low. These people can only complete the tasks within the prescribed scope of the leadership. Beyond this scope, once a problem occurs, they can either mask it, you can either avoid it. It will not be solved in a timely manner, not because you don't want to, but because you don't.

For programmers, learning includes reading books and reading code. If you take an hour to read a book every day, it is estimated that you can have more than 90% people. At the same time, you spend time studying the excellent code on github, 90% of the remaining groups will be left behind by you.

In this regard, I have my own personal experience. Before I joined the work, I was a person with no code. Due to lack of experience, I spent almost all my spare time studying the code written by my colleagues. After reading the code, the business logic is clear, but I still cannot judge whether the code is well written, because I don't know what a good code is like, and there is no learning environment like github at the time, I can only find the answer from the book. Then I spent a lot of time reading the four books C ++ Primer, Unix environment advanced programming, design pattern, and MFC. Finally, in the second year, with my own strength, I reconstructed the core code of my department within two months. Because I covered a large number of unit tests, I hardly encountered any bugs, before that, the Code was completed by four people in two quarters. In addition, these results helped me to "double my salary" in the new company ".

Reading excellent code allows you to achieve rapid growth, just like upgrading in the game. Excellent code is a big boss, which can increase your level by 10 at a time. This process is irreversible, because every time you finish it, You know very clearly that you will never write the previous bad code. This is simplyCrush yourself. When you "Upgrade" and look back at the code of most people in the company, you can come to the same conclusion as me-he has never read good code.

Summary

"Observing the behavior of most programmers and then going in the opposite direction" is actually a more abstract methodology that can help you link different characteristics, in this way, you can easily remind yourself not to be biased. Similar behaviors are far more than four. For example, most programmers are not good at English and most programmers are not good at communication, most programmers do not learn what they think is "useless learning" (such as philosophy, economics, and management). Most programmers do not write blogs, and most programmers do not have their own products.

Generally, the lives of programmers with their own products will be wonderful, and there are countless examples here. For example, Zhang Xiaolong, the father of Foxmail, became famous in one fell swoop. At this point, I didn't seem to have done it either :) so, the next time you asked me what I was doing, I wouldn't say I was fixing the bug: I was pondering my own products.

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.