A good programmer thinks before he acts. Decisions that are insufficiently thought out are often irreversible. Therefore, we do a lot of planning before deciding which function is to be implemented in the most intelligent way before writing the first line of a new code. This means we not only consider all possible classes, objects and functions, but also identify beforehand problems that could occur. “How can I prevent exceptions?“, „What are my defined In and Outputs?”, and “What level does the structure have to be at in order to test it on an optimum level?”. These are questions that an experienced coder needs to answer before starting. In the end, a good coder has always the sentence “Don’t repeat yourself” in mind, and uses it as his guiding principle.
It is also indispensable to refer not only to the prevailing knowledge, but also to extend this data constantly. Basic knowledge must be deeply anchored in practical work and not mere theory. “What do interfaces and abstractions stand for in my performance?”, „Where are the patterns and which patterns repeat themselves in the project that I am going to develop?”, “Which classes, functions and modules could be used, or rather which of these are obligatory?”, “How can I define interfaces effectively so that they meet the requirements within the software?”, “How will I be able to connect software with its environment as well as the single layers/coats of software with single modules?” Good coders are aesthetes and thinkers. They think in order to program and they program in order to think!