In continuation
About computer science in general , and
about knowledge and skills of a programmer .
In addition to knowledge, the programmer must possess a whole set of personal qualities. What are these qualities? Patience? Perseverance? Or something different? I have formed the following list:
Love for harmony and beautyThis is an important component of any profession. Inaccuracy and reasoning "and so it will come down" a little, which can lead to a good result. It is important that everything that is done becomes a piece of beautiful mosaic. Harmony and beauty should be present in every small detail, and in the choice of colors, and in the global idea.
')
Love of creativityThe programmer must be a fanatic creator. Simple observation - each key press means the appearance of a new piece of information from non-being. Creating a new one is the main occupation of the programmer. The love of creativity is often the main source of energy that allows a programmer to overcome many difficulties.
Fearless challengesIt should be such a psychological type, which difficulties invigorate. In an extreme situation, the programmer’s concentration and performance should increase.
Ability to reflect and analyzeIt includes a lot. For example, the ability to get out of the “stupor” and “not to beat how much in vain with your head against the wall”, but instead to analyze the situation in time and find workarounds. This can also include the ability to draw conclusions from experience, to find and admit their mistakes and take measures so as not to repeat them.
SacrificeIn programming practice, one often has to sacrifice one’s personal preferences (one technology or another, a programming language), and sometimes the above-mentioned love of harmony and beauty. The optimal implementation, harmony in architecture and details, the beauty of the code, the completeness of the functionality - all of these can be sacrificed in the name of pragmatic goals, for example, obtaining a useful result in a given time frame. One must also always be ready to abandon the results of one’s work, which, due to historical circumstances or mistakes made, may turn out to be useless or conceptually unsuccessful in any sense.
The ability to make sacrifices works only if there is the above ability to reflect and analyze.
Independence and disciplineSome programmers stop working when they encounter a difficulty beyond their competence and begin to wait for the manager to resolve the problem and make corrections to the task. Many programmers like to work on a clearly set task and try not to deviate from it, but simply to do exactly what is written in it. And all this is right. Independence in question should not go beyond the scope of the tasks set, but it should be! Activity is needed in terms of finding simpler and more optimal solutions, workarounds, analyzing emerging problems and overcoming them independently or timely reporting them to your supervisor. Requires constant work on self-education and self-control. The work culture is also important. It is dangerous to recycle and harmful to be lazy. You need to be able to make a choice in favor of the most priority task, and not the most interesting one. Discipline and daily routine play an important role in the work of the programmer.
Properly developed, each of the listed qualities can strengthen your capacity as a programmer approximately 2-3 times.
The fact that one programmer can be ten times more productive than another is not a hyperbole, but a harsh reality that employers have to put up with.