What is the difference between a good programmer and a general programmer?

Source: Internet
Author: User

Entrepreneurs Guo Yu: Based on the encoding capability, it can be divided into five types.

1. Beibei type

The Beibei contestants are the legendary "Code copywriters" who have little idea about implementing functions. What they do is to copy fragments from the code written by the Internet or other team members, put it in the project. If the expected result is displayed in the running project, the task is completed. Such people only change the code, but do not write the code. Most of them are not interested in programming, but they just want to make a living.

2. Newbie

When the product has functional requirements, due to limited experience, programmers do not fully know how to implement this function. They need to solve the problem by learning and searching for materials. In this case, the programmer's main goal in the coding process is to "complete the function", so it is difficult to think about boundary conditions, performance, readability, scalability, coding specifications, and other issues, therefore, there may be many bugs in the Code and the stability is not high. It may take one month for the code to be developed, but it may take several months to change the bug.

3. Learning Type

This type of programmer has a better understanding of the language in the field, and can have clear implementation ideas for general functions. When providing requirements, you can use your own ideas, in addition, boundary conditions and performance issues are considered to some extent. But that's all. They have little consideration for readability and scalability, and have no project-level concerns. They mainly want to practice or learn by implementing code.

The biggest performance of such programmers is that they like "creating code"Even if there are ready-made implementations, they also want to achieve their own set to achieve the goal of "learning. They do not like to reuse others' code. When they see that others in the project implement similar functions, they will use the excuse of "different requirements" to implement a new set of functions on their own. Such people are generally interested in technology and hope to learn through projects. From the perspective of projects, the biggest trouble with this approach is that the development cycle may be long (compared to the direct use of ready-made implementations), and it will expand the project code and affect future maintenance. However, this type of programmers may become the norm of tomorrow if they are interested.

4. Implementation type

This type of programmers generally have rich experience. Because they write too much, they no longer pursue "creating code" for learning, at the same time, I am familiar with many third-party frameworks or tools that may be involved in the field. When I receive the product requirements, I am very familiar with the function implementation solution, so they can quickly implement the requirements, in addition, the boundary and performance are considered to a certain extent. Because of its ability to quickly implement the demand function, it is often evaluated by the Team as "awesome ". However, they generally only stay at the "complete function" level, with less consideration for code readability, scalability, and coding specifications, there is little overall understanding of the project (such as controlling project expansion, convenient deployment, and other architecture-level things ).

The biggest performance of such programmers is that they like "Development Projects" but do not like "maintenance projects ".The biggest problem with the code they produce is that it is difficult to maintain the code, and may be confused when I look back at my code in the last few months. Therefore, even the code you write is still unwilling to maintain, and it will suffer later. Because of the lack of interface design, when the demand changes, it is found that there are too many things to be changed in the code, and then complained about the changes in the demand, but rarely think of it as a code problem. After a long period of change and maintenance, such a project will eventually become difficult to maintain (usually because the response time of the demand change is getting longer and longer) or even unable to maintain, and eventually it will be half-dead, or be pushed back.

5. Architecture

Such programmers are more experienced than implementation programmers, and are familiar with related frameworks and tools, "Complete functions", "stability", and "performance" are no longer their pursuit. A better code and a more reasonable architecture are the goals.

This type of programmer code design is mostly based on a detailed understanding of the needs and a prediction of demand changes-good scalability; Code details are also considered as much boundary, performance-stable and efficient; code naming and comments are all right-the readability is high. At the same time, they will constantly refactor and subtract code to ensure the sustainable development of the project. However, due to many considerations, from the perspective of the "Implementation function" stage, the completion speed may not be faster than the "Implementation type. Only in the middle and late stages of the project will the advantages be gradually reflected.

Zhihu code deletion EngineerAnjiangze: Creation type, Butler type, academic school, clock type, tossing type

1. creation/innovation

Programmers who enjoy creativity and innovation. Solve existing problems in a new way, and find a solution to the unsolved problems. The problem is not limited to the technical field. Many technical founders in Silicon Valley possess such qualities. Although they no longer write code full-time after their startup, their quality contributes to their first step in their career.

2. Butler

Programmers who are happy with the evolution of management systems. There are Jie Li, obsessive-compulsive disorder, and the system may not have any flaws. If you hire a Programmer/architect, your Internet products will no longer encounter bottlenecks in visibility/scalability after two or three years, and most of them are such programmers.

3. Academic

People who usually have a doctorate degree in a certain area of CS, or who are deeply influenced by them. I am very interested in this field and usually participate in R & D work related to the enterprise's core competitiveness. Of course, some of them also have the first characteristics, and they will change the world halfway.

4. Experience

With many years of experience in the industry, you can take responsibility for it and consider it comprehensively. If the team has such a person, it usually takes a lot of detours. But in the face of new challenges, we still need to stand on the same starting line as others.

5. watches and clocks

People who like and are good at penetrating a system from the inside out. The sharing is all mouth-watering from the inside out. Many backend engineers use this type.

6. Tossing

He is good at "tossing". There is no best solution, but the most difficult one. Strong hands-on ability with a wide range of interests, leaving a lot of technical accumulation through tossing. What new technology do you want to use? Ask him first. He has been playing 8 years ago.

7. Meat Shield

Brother Jia has a high blood length, working overtime is like cutting vegetables, and it's OK if you are in a hurry and don't go to bed. It takes only two things to reach out: Prototype and coffee. Suitable for lightning attacks. Of course, you may need to rebuild the code after the event.

Founder and iOS developer of iapp4meHao peiqiang: The seven standard logical thinking is very important

Standard for excellent programmers:

  1. To understand the logic, this is actually very difficult to achieve. many very good programmers actually do not have the logic ability, so I think it limits their development at a deeper level, or limit their ability to solve especially complex problems.
  2. Analysis capability is required. This is also an indispensable capability to solve complex problems.
  3. If you want to learn by yourself, the technology will develop quickly and will be eliminated if you do not have the ability to learn by yourself. Therefore, it is better to use English in China. Otherwise, you will not be able to understand the latest technology trend.
  4. Have good time management habits and awareness.
  5. Be patient and willing to pay.
  6. Have good working habits.
  7. Reading and reading documents.

Product management and IT Project ManagementHe Minglu: Excellent programmers have obvious characteristics of narcissism and paranoia

  1. I have a strong interest in programming. interest can drive my own exploration and research spirit. Excellent programmers generally like to explore and think about something in their spare time, and study open-source frameworks and source code, focus on new technologies, and like to study and explore algorithms and logic.
  2. Excellent programmers are generally relatively lazy at repetitive tasks. They have a special liking for repetitive tasks. That is, they solve repetitive problems through programs or other automated methods, leaving more time to think.
  3. More outstanding programmers will focus on underlying architectures such as security, performance, and scalability from simple function implementation and fancy interfaces.
  4. Excellent programmers generally have obvious characteristics of narcissism and paranoia, and want to work independently. They are difficult to be controlled by non-technical background managers and are highly recognized for the value of self-ability, in addition, many excellent programmers are not good coaches.
  5. Excellent programmers generally have a solid foundation of theoretical knowledge such as algorithms and data structures. These enable them to quickly break into new areas.

Summary:

Whether it's a good programmer or a general programmer, xiaobian thinks that as long as you like to think, love to learn, and are interested in encoding, you are the best. Of course, mastering the technology is the final principle. Apply a sentence from someone else, "a programmer who doesn't want to be a CEO is not a good product manager ". Programmers, come on!

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.