The speed with which technology is changing is constantly growing. Therefore, speaking about the skills of a programmer that will never become obsolete, it makes sense to focus on soft skills, the development of which will allow the programmer to become a good programmer, and a good programmer to become an excellent programmer:
Communication skills. There is a pronounced correlation between development skills and communication abilities. An excellent programmer is able to clearly understand the problem, break it into hypotheses and propose a solution. Excellent programmers quickly realize the concepts or ask the right questions to understand them and do not require that everything be described in detail within the specification. Excellent offshore development programmers often speak several foreign languages and work with documentation in English without any problems. English is de facto generally accepted for documentation and for interaction within international development teams.
Time and task management skills. You can rely on great programmers. They are punctual and take work seriously. An important skill is the ability to adequately assess the time required to solve a problem. Great programmers can manage the expectations of their clients and managers.
Ability to learn fast. Great programmers are self-learning. They are able to independently learn new technologies and do not perceive such technologies as a threat. Excellent programmers are able to extract the knowledge they need from disparate sources and assimilate them on the fly. Every programmer is faced with situations where he or she does not know the answer. Excellent programmers will find various resources, talk to knowledgeable people and find a solution, no matter what.
The combination of technical erudition and depth of knowledge. Excellent programmers have long enough practical experience with some technologies to become experts in them. But at the same time they are competent in many other areas. Due to the combination of cognitive abilities and technical erudition, excellent programmers are able to quickly find a solution to a problem. An excellent programmer is well acquainted with common best practices and methodologies (such as agile), task management tools (Jira, Trello, etc.), version control tools (Git, etc.), and also has experience working with various surroundings. Given the growing penetration of DevOps, an excellent programmer should understand the features of operating information systems, including in a multi-cloud environment, maintain a balance between system performance and operation, and extract the most from k8s and IaC.
Teamwork skills. Another quality of great programmers is their ability to help other programmers get better. They help colleagues when they are stuck, transfer new knowledge and skills to them, and also write documentation that is in demand not only within their organization, but also in a wider community of developers.
Product focus. Great programmers sincerely worry about the result. They are positively tuned and are ready, if necessary, to make additional efforts in order to complete the work. Also, excellent programmers do not allow their ego to get in the way of getting feedback.
User focus. A good programmer does what he or she is asked about, and an excellent programmer thinks about the end user of the product being developed, about how this product will solve the user’s problems. An excellent programmer wants to understand the value of the created function for the user. Sometimes creating such a function turns out to be a very laborious and lengthy task, but an excellent programmer understands the need for its creation and motivates himself and others to solve this problem.