A programmer, computer programmer or coder is someone who writes computer software. The term computer programmer can refer to a specialist in one area of computer programming or to a generalist who writes code for many kinds of software. One who practices or professes a formal approach to programming may also be known as a programmer analyst.
Computer programmers write programs. After computer software engineers and systems analysts design software programs, the programmer converts that design into a logical series of instructions that the computer can follow. The programmer codes these instructions in any of a number of programming languages, depending on the need. The most common languages are C++ and Python.
Computer programmers also update, repair, modify, and expand existing programs. Some, especially those working on large projects that involve many programmers, use computer-assisted software engineering (CASE) tools to automate much of the coding process. These tools enable a programmer to concentrate on writing the unique parts of a program. Programmers working on smaller projects often use “programmer environments,” applications that increase productivity by combining compiling, code walk-through, code generation, test data generation, and debugging functions. Programmers also use libraries of basic code that can be modified or customized for a specific application. This approach yields more reliable and consistent programs and increases programmers' productivity by eliminating some routine steps. Computer programmers normally work in clean, comfortable offices or in laboratories in which computer equipment is located.
Computer software engineers design and develop software. They apply the theories and principles of computer science and mathematical analysis to create, test, and evaluate the software applications and systems that make computers work. The tasks performed by these workers evolve quickly, reflecting changes in technology and new areas of specialization, as well as the changing practices of employers.
Software engineers design and develop many types of software, including computer games, business applications, operating systems, network control systems, and middleware. They must be experts in the theory of computing systems, the structure of software, and the nature and limitations of hardware to ensure that the underlying systems will work properly. Computer software engineers coordinate the construction, maintenance, and expansion of an organization's computer systems. Working with the organization, they coordinate each department's computer needs—ordering, inventory, billing, and payroll recordkeeping, for example—and make suggestions about its technical direction. They also might set up the organization's intranets—networks that link computers within the organization and ease communication among various departments. Often, they are also responsible for the design and implementation of system security and data assurance.
A systems analyst researches problem, plans solutions, recommends software and systems, and coordinates development to meet business or other requirements. They will be familiar with multiple varieties of programming languages, operating systems, and computer hardware platforms. Because they often write user requests into technical specifications, the systems analysts are the liaisons between vendors and information technology professionals. Systems analysts figure out how to use computers to get things done. They tell businesses and other organizations which computers and software to buy, and they decide how to get those tools to work together. Computer systems analysts start their work by asking people what they need their computers to do. Then, they plan a computer system that can do those tasks well. A system can include many computers working together and different types of software and other tools....