Who is a "good programmer"?

    This is not the first time that I have noticed that I myself do not know how the article I started will end. For example, recently I was asked to write a short note in a corporate newspaper about the .NET direction. I chose the direction, began to develop it, as a result of which I got an article in which .NET did not appear at all. So this time we will continue the philosophical topic, but if last time we were talking about good architecture , then this time we will talk about who a good programmer is and what questions you should ask yourself from time to time in order to move in the right direction.

    What distinguishes a good programmer from a mediocre one? And how to become a good programmer yourself and earn “honor and respect” among your friends and colleagues?

    Honestly, I don’t know. It is often difficult to say what is meant by the phrase "good programmer." On the one hand, we are used to thinking that a “good” programmer is necessarily a geek with glasses and a stretched sweater, the winner of the programming olympiad who in his mind can multiply six-digit numbers and read machine code directly in binary format. On the other hand, at the interviews we also try to find “good” programmers and we have other selection criteria there: since there are not so many winners of the Olympiads, but there are a lot of vacancies for the “leading” and “main” ones, then this bar drops to a more mundane level. So at interviews we ask (or are asked) simpler questions: something about specific languages ​​or technologies, as a result of which the candidate’s memory is checked rather than his ability to think with his head.

    Think with your head ? Well, this is a very good feature of a good programmer. Like it or not, but it is the gray (or whatever it is) substance located in our head that brought us into this profession; and it is precisely “thinking” that a professional programmer earns his living by doing this most of his time. And if so, then why not think about how to become, if not a good programmer in the conventional sense, but at least a little better than what he was yesterday.

    Many of us, after the next iteration in the development of our favorite project, carry out retrospectives. Quite often, retrospectives are a dull meeting where a minimum of urgent issues is raised and even fewer of them are then resolved. But sometimes they force some team members to take a fresh look at the tasks being solved and change something in their daily work. In general, this works. Not always, but it works. And since this works, why not try to apply the same approach, not only to improve the development process, but to improve yourself as a programmer? Why not ask a few questions to ourselves, the answers to which would help to understand in which direction we are moving?

    For example, how often do you ask yourself such questions: “How is your code today different from your code six months ago? Is he getting better or maybe he has already achieved perfection? How have your views on software development changed during this time? What new have you learned from this limitless area? When was the last time you wrote something for the sake of interest, and not for the sake of "production necessity"? When was the last time you helped someone with a technical question? ”

    Of course, the answers to these questions will not say whether you are a good programmer or not. Their meaning is to understand whether you are becoming "better" or stomping on the spot. A good programmer is not a brilliant teenager, but a simple smart guy or girl who loves his job. A person who combines pragmatism and the pursuit of excellence, love of the new and deep knowledge of the present, the desire for learning and the desire to teach someone else. Most good programmers are well aware that they know very little and find in themselves the desire and desire to fix it. Each of us has his own way to gain new knowledge, and here, as in programming, you should not look for a “silver bullet” either.

    So, learn, read, learn something new, write and talk about it. And in general, do not think about whether you are a good programmer or not, all this is nonsense. After all, the most interesting thing in this matter is the path, not the result!

    Also popular now: