The standard of good programmers

Source: Internet
Author: User

Countless people have asked a similar question, how to be a good programmer? Before answering this question, we must first understand what is good programmer, so that there is direction and goals, but this thing is too subjective, it may be the standards of each individual, do not talk about those who are legendary to do great things alone, do not talk about what heaven, God Daniel's paradox, the following is my more recognition, In the usual project development, a good programmer's standard.

directory :

    • Ability to solve problems
    • Knowledge accumulation
      • Self-study Ability
      • Taste
      • Understand the right way to do things
    • Ability to communicate
    • Be responsible for the work, the code has the pursuit
    • How to improve your ability to solve problems?
Ability to solve problems

In project development, the ability of a programmer equals its ability to solve problems. If you want to have a yardstick to measure this ability, a programmer's ability can be measured by the size and difficulty of accomplishing the task.


more detailed partitioning, functions, classes, functions, modules, the project itself also has a simple and scale size.

    • A programmer can be a basic error in the completion of a function of the project is qualified, before, on the project's productivity is negative, that is, he assigned tasks, communication, and fixing bugs for him is more time than it takes to complete the function directly. In other words, the programmer who exists at this level in the project is purely to nurture talent.

    • For starters, the difficulty in writing a function and class is the syntax of the language itself.
    • for the completion of a function, the difficulty is to understand this feature, and good in the existing code to add this functionality, the completion of the function is not independent of the project, But to integrate into the project itself, in addition to the function itself and other functions of the normal and correct, it is particularly important to pay attention to the implementation of the function can not have unintended impact on other functions, as game development, the typical example is that you complete the UI can not let the other UI display problems, should not display the UI has not disappeared .
    • for a project, using the right solution in the right place is the most important thing, The first technology selection directly determines the success or failure of the project, the division of the module can determine the speed of development of the project, the design of the structure can determine the difficulty of maintenance of the project and increase the pain level of demand. For a multi-person project, it is important that the right person does the right thing.

What determines the ability of a programmer to solve problems? I think there are several factors:

Knowledge accumulation

Among programmers of the same level, an understanding of a certain area of the problem, a complete understanding of the field, the completion of the same task in this field is less efficient than an order of magnitude. This is what we often call "experience", which can be seen as knowledge accumulation,

The accumulation of knowledge of a programmer largely determines its ability to solve problems.

Interestingly, because the experience is not very good to have accurate measurement, we often take the work for a few years to say things for the sake of simplicity, but this rough standard has a lot of problems, the same long working life level difference can be huge.

According to the old adage, working 20 years with a year's experience is not the same as 20 years of work experience.

Self-study Ability

This is a knowledge of the Big bang, the frequency of knowledge refresh can not catch up with the times. On the one hand, in the face of a slightly difficult task, there will inevitably be beyond their existing knowledge range, at this time self-learning ability determines how quickly you can complete this task (or can complete this task). On the other hand, your self-study ability determines how much you accumulate knowledge in the course of your usual work.

A person with a strong self-study ability can always learn something in the code of a project, even if no one is pointing it out. Conversely, the code written by someone who learns to be weak will not be able to think about whether or not this code is better and why. At the same time, a self-learning ability of people are more likely to take the initiative in the amateur to learn more knowledge, and not until the work encountered in the passive learning.

Judging from a longer scale, such as a person's working life, how much a programmer's knowledge accumulates depends solely on his ability to teach himself and his interest in programming itself.

Taste

Originally I wanted to put a programmer's taste alone, and then think about it, a programmer's taste is not a natural ability, but based on the accumulation of existing knowledge, the formation of the perception of things. So put your taste under the self-study ability. The same, in fact, the correct mode of thinking and methods, in fact, is also derived from the accumulation of knowledge. I'm not going to mention it here at all.

Taste is often used to describe a person's view of fashion, food, etc., in fact, for programmers, taste is also very important.

Different tastes not only determine how different language designers design programming languages, but also what languages and frameworks a programmer will use when doing projects.
Different tastes determine what kind of operating system you will choose, what tools to use, and what code specifications you should have.

The different tastes even decide what kind of career development you will choose, what kind of platform, what to develop.

The taste of the code determines that you can "smell bad" when you see a bad code, and the taste of the solution determines your choice between open source/closed sources, aggressive/conservative, simple/powerful but complex solutions.

For the taste of code, I feel nothing more thanThe Zen of PythonIt's more interesting:

about taste, want to mention is the taste of design, such as a website design, a blog design. I started blogging is in CSDN (Http://blog.csdn.net/vagrxie), the biggest advantage is free, and do not have my maintenance, but then slowly feel the template style is not in line with my taste, and modify the template and trouble, pop-up box is also quite annoying, The method of writing the article also tried a lot, always did not find a suitable. After the establishment of the Independent blog (http://www.jtianling.com), the beginning is a copy of the cool shell template, and then write online, and then feel the template look uncomfortable, self from the default template of WordPress changed a set of their own, The main improvement is the article content page to the appropriate width of a separate column, the code snippet with pygments default style to do highlight, because I think this is suitable for reading and beautiful, and the method of blogging after trying a lot of methods, now use vim + markdown to write, with git management, feel very handy. In the latest server, I even changed Apache to Lighttpd, together to spend a lot of time, it took so much effort, in fact, is only the pursuit of their own taste.

Here, we recommend two articles about taste, although it is not much related to this article:

    • Programmer's Taste says: If you don't care about the first impression of the blog, I don't believe how much you care about the quality of the article.
    • The taste of the creator is that taste is not subjective, but objectivity is good or bad.
Understand the right way to do things

The right way to do things here is not to write code at this level, but to refer to a solution to the problem in the process of a project, such as knowing that you need to understand the needs first when the requirements are unclear, knowing that you need to get to the problem before you start to really work on the code level. Know what problems can be solved independently, know what problems you need to communicate with other people before deciding. Know that you need to test before you can guarantee the quality of your code and so on.

These questions are simple to say, but if you do not do so, they often have unintended consequences. A good programmer, at least to understand these first.

Ability to communicate

The accumulation of knowledge to a large extent determines the ability of a programmer to solve problems, but that is the only thing that can be learned as long as the effort, and the following, I do not even understand the formation of the difference is when we were very young, or in the work can continue to study.

In a well-defined project, programmers need to communicate with the product (planning) to understand the product, communicate with their superiors to understand their tasks, and communicate with colleagues to properly understand the modules to be accessed. No matter which aspect communicates the problem is not the small thing, at the same time, the procedure also needs the right product (plan) conveys the design the difficulty, as well as in oneself completes the module to let others correctly understand the module interface. Proper verbal communication is important when you are not writing a document, and the ability to write a document is part of the ability to communicate.

As mentioned above, the ability to communicate is very important, but good programmers seem to be born less likely to communicate, you will find a lot of technical top people, in fact, there is a social disorder or autism, because autistic, can not concentrate on technology, to achieve higher technical level, it is difficult to imagine a "social activist", He has so much work to learn, no time to learn, and how to become a technical top person. This is a dilemma. Ideally, a programmer is best able to communicate well enough (to do the work correctly), but can still be quiet enough to learn and delve. Of course, this is the ideal situation, in practice, the larger range of fluctuations between the two are acceptable good programmer standards.

Be responsible for the work, the code has the pursuit

Negative attitude to work, the code is always waiting for others to test, write code to complete the function as the only standard, regardless of whether the bug is stacked, the code is ugly, this programmer even 10,000 years of work is not good programmer.

A good programmer should be responsible for their own work, the pursuit of their own code, not only to complete the function, but also the code is beautiful, do not say the code to write art, at least as his face to maintain. A programmer cannot tolerate a mess of his or her own face, nor should he tolerate his own code clutter.

In fact, before other programmers get to know you, the first thing you see is your code, and you know what kind of person you are by code. Project tight, readily written, and later can not be a reason to write bad code.

A good programmer, at least, wants to finish the task well, at least to write the code well, or how to call it "good".

How to improve your ability to solve problems?

actually turn such a big bend, how to do a good programmer's problem can be turned to ask how to improve their ability to solve problems.

communication skills, a responsible attitude to work, the pursuit of code, largely determined by personality, I do not know the actual how to improve the simple, here only a little talk about my knowledge of the accumulation of some ideas it.

    1. Cultivate interest (I do not know whether interest can be cultivated), technical work is always hard, especially in programming, if you do not have strong interest in this, not from the programming itself to find a lot of fun, it is best not to expect to become a good programmer. Interest in programming is also the biggest requirement for me to recruit junior programmers in general.
    2. What kind of environment determines your knowledge accumulation process, determines your taste, determines how you will do things. This is exception unless there is a strong willpower (very rare). So, choose your work environment carefully, especially when you just graduated.
    3. Do not stay in the comfort zone of your own learning, if your work is just a simple repetition of the previous work, you will work very easy, at the same time, it is difficult to improve.

The standard of good programmers

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.