Many coders think of themselves as good programmers. In some cases it's true. The only problem is that for different people being a good programmer means different things. Let's think about what makes a good programmer, what qualities should he have?
According to a study conducted by Evans Data Corporation, there are 21 billion professional developers in the world. That is a huge community. How many of its members can be described as good programmers? Unfortunately, we will never know for sure. There are none reliable data on that subject. Is it possible at all to conduct them? This is a question for scientists; we can only assume that a good programmer must have certain qualities. We took upon a challenge to find out what they are. It's obvious that a good developer should have knowledge of programming and latest technologies. But what else? After hours of contemplation we concluded that he should:
Extensive knowledge and programming skills are one thing, but a developer should focus on constant development. As shown in statistics by Stack Overflow over 76% of professional coders have a university education. For anyone who aspires to the name of a good programmer, this is just the first step. 91.1% of professional developers are improving their knowledge on a regular basis. 46.6% of them is attending courses organized by the employer or found elsewhere for example here, at Bulldogjob. 44.1% complete online courses and over 25% train their programming skills during hackathons and contests for coders, while over 16% acquires trade certificates.
Many people end their education once they leave the university or school, but a good programmer should not be one of them. This approach to education is best characterized by the term lifelong learning. The means which a developer chooses to educate himself are only up to him. A good programmer has the instinct to seek knowledge, and he is aware that IT is always changing. Robert C. Martin wrote in The Clean Coder that you should give 40 hours a week for your employer and spend 20 hours for reading, learning and practicing. Martin also warns programmers that they mustn't stop learning new languages if they want to remain on top. A good developer will check the level of his knowledge and skills on a regular basis, such as Realskill available on Bulldogjob.
A professional values his time. A good programmer can't afford to waste it, and that's why he can respect the time of other people as well. In practice, it comes down to wise and efficient time management – careful planning of your tasks and using a minimum amount of resources. For example, it's more efficient to call a client instead of sending endless emails. You also want to avoid leaving most important and time-consuming tasks for last minute. There are various techniques to help you organize your time, like pomodoro (setting a timer for 25 minutes and during this period focusing only on one, particular task), 5S (five rules for a properly organized desk space which will increase your productivity) or scrum methodology (dividing work into smaller stages: planned, in progress, verified, urgent, completed).
A good programmer doesn't waste time. He is capable of estimating it according to every project and is thorough while planning tasks. A professional like this avoids slogging. When he sees a poorly prepared code, he changes it immediately because he is aware he is going to have to do it eventually. It's important to note that a good coder doesn't allow to put too much pressure on him; he won't take on additional tasks when he knows it will lower the quality of his work. This programmer avoids rush because he is well aware it's the enemy of high-quality work. Instead, he prefers to focus on maintaining a clean code, which allows him to develop it further without many obstacles. He stays calm even when facing a quickly approaching deadline. He uses legit methods. In many cases, such an approach can save a project threatening to fall apart.
Many programmers admit that preparing documentation is one of the worst duties of a coder. The problem is that on the one hand, developers hate completing documentation but on the other, they hate reading a poorly prepared one. A good developer doesn't consider preparing documentation a necessary evil. He is aware that as long as the documents are thoroughly made working on any project will run smoothly. A good programmer has a habit of facilitating the work everywhere it's possible. This also applies to his documentation. A good one will be thorough, free of errors, consistent, transparent and it will be easy to find every needed information. Firstly, a proper documentation will simplify everyone's job while working on an individual project. Secondly, it will allow future workers to implement new functionalities easily. They will just have to generate a major portion of documentation from a code using certain tools. And one last thing: a good programmer regularly updates his documentation.
Do you remember Socrates? He was repeating over and over one sentence: Oida ouden eidos!, which means: I know that I know nothing. The same applies to a good programmer. He admits when he doesn't know something, in contrary to many coders who only appear to know everything. In fact, they search every answer online and act as they knew them from the beginning. That strategy won't suffice, and anyone using it will end up kidding themselves and everyone around them. Programming is a job based on knowledge, and no one knows everything. A good programmer is not afraid to ask questions to those wiser than himself. He will invite them to solve a given problem together and in the process gain new experience. A good coder seeks clues and solutions from different sources, e.g. companies' articles on Bulldogjob. Accepting our limitations is the first step towards greatness, also in programming.
A good programmer doesn't skip on testing his code. He does it every step of the work. It's a reasonable approach because it allows avoiding tedious and time-consuming searching for error when most of the code is ready. To solve this issue, new techniques of creating software are catching on, e.g. Test-driven development (TDD). A good programmer knows that it's better to use TDD than waste time to debug the whole code. Thanks to testing a professional can check if a code is working correctly. The more tests you run, the better results of the work you'll get. Some experts even state that by the year 2022 programmers not using TDD will be unemployed. Even if it's an overstatement, the fact is that tests are necessary. TDD is just one example of many other tests available for professional developers. Programmers not only use tests in their work but also care for their quality which is far more important than quantity.
We are sure there is a lot more to say on this subject. The purpose of our article is to start a discussion and to signalize the issue. Let's all look around; maybe a good programmer is sitting next to you in the office? Let this article be an inspiration for you to become the best coders. Perhaps you already are one?