I have worked with many programmers over the years. Some of them are amazing, while others seem mediocre. Not long ago, I felt very happy to work with some very skilled programmers. I spent some time thinking about what I admire them? What makes a good programmer so good and a bad programmer so bad? In short, why has it made a good programmer?
Based on my experience, being a good programmer of the same age, education, and how much money you earn does not matter. The key lies in your practice. In more detail, it is your idea. I have noticed that the programmers I admire have similar habits. Not the knowledge of the language they selected, nor the in-depth understanding of data structures and algorithms, or even years of work experience. It is their way of communication, their way of managing themselves, and their way of programming and speaking at their skill level.
Of course, being a good programmer requires more features, and I cannot judge a programmer simply by the existence or absence of such features. But I know that when I see it and when I see a programmer with these qualities, I think, "This person really knows what they are doing ".
Excellent programmers conduct research
Or "Think Twice", or "Google click"
No matter what you call it, most of the programming problems you may encounter have been solved in some form, and the preaching book has long recorded that there is nothing new in the world. A good programmer knows how to conduct research through the GitHub library, online blog, or through communication with experienced programmers.
I have met and even excellent programmers who can quickly find a solution, but the bad programmers who have worked with me never turn to others. As a result, they have done a lot of repetitive work or mistakenly solved the problem, unfortunately, they will eventually pay for their mistakes.
Excellent programmers read error messages (and follow them)
This includes Parsing Stack path information. Yes, this is an ugly and unfortunate thing. But if you don't want to do this, how can you know what went wrong? I know that efficient programmers will not be afraid to delve into the problem. Inefficient programmers see errors, but they are unwilling or even unwilling to read them. (This sounds ridiculous, but you will be surprised how often I encounter it)
Furthermore, a good programmer can immediately solve the problem. Reading error messages is just the beginning for them. They are eager to explore the problem and find out the root cause of the problem. They do not like to shirk their responsibilities, but are willing to find solutions to the problem. The problem stops here.
Excellent programmers view source code
Documents, tests, and teams all lie. Although it is not intentional, if you want to know exactly what is going on, you must read the source code yourself.
If it is not your best language, do not be afraid. If you are a ruby programmer, you suspect that there is an error in the ruby C language library. Open it with a crack. Yes, you may not be able to get the source code, but who knows? You are only possible. You have a better chance. It's better than you don't try it at all.
Unfortunately, if you are in a closed source code environment, it will become very difficult, but the truth remains the same. Poor programmers have no interest in viewing source code, and the results are time-consuming, much longer than looking at source code.
Good programmers do what they say
Excellent programmers tend to take the initiative to do it. They have an inner impulse to Control. When they determine a problem or discover new needs, they will immediately implement a solution, sometimes too early and sometimes too radical. However, their instinctive response to the problem is to solve the problem positively.
Sometimes this can be annoying, but their enthusiasm is an important part of their ability to do things well. Some people may delay time to avoid the problem or wait for the problem to disappear. However, good programmers solve it from the beginning. In short (or obvious), if you see someone looking for problems and solving them with great interest, it is very likely that you have a good programmer.
Excellent programmers do not escape difficulties
This is often a feature of bad programmers: they easily jump from one problem to another, and go to the next problem before they really understand it. They will blame program errors and spend a lot of time debugging code that is already running well. They enable their emotions to take the initiative and trust their instincts, rather than carefully analyzing them.
If you solve a problem in a hurry, you may even consider every problem as a disaster that shocked the world. You may make mistakes or fail to solve potential problems. Good Programmers take the time to understand what went wrong, even when a disaster came. But more importantly, they treat common problems as important issues to be solved, therefore, they can solve more problems more accurately without increasing team tension.
Excellent programmers are good at communication
After all, programming is a form of communication. Writing code is as important as writing prose. I found that programmers who can write concise emails, elegant status reports, or even a valid memo will also be excellent programmers.
This can be applied to code writing and English. It is certainly possible to write a line of code using parentheses, Parentheses, and a single letter function, but what does it mean if no one understands it. Good programmers will spend time communicating their ideas through various channels.
Excellent programmers are passionate
I think this may be the most important aspect of a good programmer (maybe it also applies to other fields except the computer science field)
If you really care about what you do, if you don't treat it as a job, as a hobby, interest, or attractive thing, then you are more advantageous than others in this field. Excellent programmers keep programming. Ordinary programmers work eight hours a day without any amateur projects and are not interested in giving back to the community. Instead of constantly trying new methods, they are stuck in programming languages to see how they run.
When I saw a programmer taking advantage of the weekend to do his favorite projects and participate in the creation of tools they can use every day, I was obsessed with new meaningful things: at that time I was sure that I was looking at someone amazing. Finally, good programmers regard their profession as not only a way to make money, but also a different way of life. I think that is the real reason for achieving the best programmers. For them, writing code is a way to change the world, and it is also why I respect them very much.
Why are excellent programmers excellent?