Many things in the world follow patterns. Just like "The 7 Habits of Highly Effective People", excellent programmers also have seven main traits. Some of these traits are innate, that is, talents, but some are acquired through learning, progress, accumulation, and summarization in daily programming work. Every programmer wants to know whether they are an excellent programmer, so refer to the following 7 items and see if you have met the standards of being an excellent programmer.
1. Like helping others, taking care of programmers who are less skilled than yourself
Programmers usually have a hot temper and often argue with clients, colleagues, and even bosses over programming issues. Excellent programmers can put themselves in others' shoes, understand the client's ignorance, the junior programmer's incompetence, and the boss's helplessness. They always use the utmost patience to help others, help colleagues, and help new employees so that they can grow quickly.
2. Passionate about programming
Many programmers work in this field just to earn money. If there were a better career, they would not hesitate to quit their programmer job. Excellent programmers love programming and enjoy delving into problems in code. They feel that commanding computers to help people and themselves solve real-life problems is a magical ability. When they encounter unsolvable problems, they lose appetite and cannot sleep.
3. A gentleman makes good use of tools
Excellent programmers know how to complete tasks more efficiently and solve problems more effectively. When encountering a problem, they don't get bogged down in details and are good at using external tools to solve their problems, especially skilled at using search engines. Junior programmers only use Baidu and Baidu Knows to search for problems, while senior/excellent programmers use Google and websites like Stack Overflow or MSDN forums to find better answers.
4. Pragmatic and flexible
Many programmers share a common trait: they don't like constraints, don't like rules, don't like clocking in, don't like writing logs, don't like writing tests, don't like morning meetings, and so on. But excellent programmers are willing to follow rules. They know that individual heroism is inherent in programmers, but developing a formal project is a team effort, and where there is a collective, there must be discipline. However, excellent programmers are not rigid or dogmatic; they continuously adjust their strategies based on changes in the environment and developments in the situation, so that rules better serve the work.
5. Concerned not only with technical knowledge, but also with non-technical knowledge
Incompetent programmers like to cram at the last minute and only study when needed. Excellent programmers proactively learn various relevant knowledge and have an open attitude toward all sources of knowledge, unlike some people who are complacent and stagnant. Moreover, they are not limited to career-related technical knowledge; they also learn any knowledge they find interesting, such as communication skills.
6. Knowing when to let go
There is a common problem in software companies in China: they like to pile up features, always dreaming of building a large, all-in-one, universal software that works everywhere. But in reality, such software usually fails, and many are abandoned halfway. Excellent programmers know when and how to let go. When deadlines approach, manpower is insufficient, and requirements are unclear, they decisively determine which features should be postponed and which should be prioritized for release.
7. Having an entrepreneurial spirit
Many programmers like to think of themselves as employees, viewing themselves as employees and working with an employee mentality. Excellent programmers regard themselves as owners of the enterprise; they know the interests of the company are closely related to their own. Moreover, excellent programmers imagine that if they were to start a business, what knowledge they would need and what skills they lack. Only by putting yourself in the owner's position can you truly understand the skills needed to run an enterprise.
Source: http://www.vaikan.com/traits-of-good-programmer/