Computer programmers write, test, and maintain the detailed instructions, called programs, that computers must follow to perform their functions. They also conceive, design, and test logical structures for solving problems by computer. Many technical innovations in programming - advanced computing technologies and sophisticated new languages and programming tools - have redefined the role of a programmer and elevated much of the programming work done today.
Job titles and descriptions may vary, depending on the organization. In this occupational statement, computer programmer refers to individuals whose main job function is programming; this group has a wide range of responsibilities and educational backgrounds. Computer programs tell the computer what to do, such as which information to identify and access, how to process it, and what equipment to use.
Programs vary widely depending upon the type of information to be accessed or generated. For example, the instructions involved in updating financial records are very different from those required to duplicate conditions on board an aircraft for pilots training in a flight simulator. Although simple programs can be written in a few hours, programs that use complex mathematical formulas, whose solutions can only be approximated, or that draw data from many existing systems, may require more than a year of work. In most cases, several programmers work together as a team under a senior programmer's supervision.
Programmers write programs according to the specifications determined primarily by computer software engineers and system analysts. After the design process is complete, it is the job of the programmer to convert that design into a logical series of instructions that the computer can follow. They then code these instructions in a conventional programming language, such as COBOL; an artificial intelligence language, such as Prolog; or one of the most advanced object-oriented languages such as Java, C++, or Smalltalk.