Knowledge and understanding of the terminology
There are no specific criteria that are essential to any programmer. However, to be successful in your business, you need to have certain skills and characteristics.
A good programmer needs to imagine that such an array, hash table, linked list. Specialist will be familiar with concepts such as Fibonacci heap, growing trees, skip-lists, AVL-trees, etc. depending on the specialization he must master the algorithms of implementation of the tasks to know the procedure of search, selection, passing the data structures, building graphs, matrices, and be familiar at least with basic principles of dynamic programming.
The most important is to have the appropriate knowledge in the field of Informatics and how to use a particular terminology.
System programmer needs to understand the purpose of the compiler to understand the Assembly language, have some knowledge about virtual memory and the structure of the operating system code in General; he is obliged to possess information about sockets to understand networking and network protocols.
Proficiency in programming language (PL)
The programmer must be fluent in the language of the subject area in which he spetsializiruetsya. Knowledge of PL implies that you are able to use available tools to solve certain problems. A successful person knows several programming languages and is able to adapt the methods used for their tasks or under their specialization.
The programmer must study the user's behavior and expect different actions and reactions that must be implemented in the interface of the future program.
The knowledge of the programmer is also conditioned by its specialization and profile of YAP, as well as the objectives, which it implements through it.
For example, when writing code in Java or C# it needs to know used libraries, typical situations of programming. A good specialist is able to avoid recurring structures in code and the ability to create their own programs in accordance with the problems that are solved in the application being developed.
The programmer should be able to communicate both with customers and with colleagues. Large software projects require the programmer the ability to interact and competently Express their thoughts and conception of the project.
Knowledge of a foreign language for the programmer and allows him to explore various non-translated technical documentation, which in the field of computer science a great many. Foreign language will let you communicate with foreign customers and make more money.