The term "computer programmer" refers to someone who creates computer software. Other terms for computer programmers include "software developer," "programmer," and "coder" (particularly in more casual settings). The phrase "computer programmer" may apply to an expert in a particular field of computers or to a generalist who develops code for a variety of different types of software.

The word programmer may be prefixed with the name of the most often used computer language by a programmer (e.g., Assembly, COBOL, C, C++, C#, JavaScript, Lisp, Python, Java, etc.). Some people who deal with web programming languages also use the prefix web in their titles.

Because there is no nomenclature that is standardised throughout the whole sector, the terms "programmer" and "software engineer" may refer to the same function at various businesses. A person whose work title is "programmer" or "software developer" will often be responsible for implementing a comprehensive specification into computer code, correcting errors, and doing code reviews. These are the most common duties associated with these job titles. They could have a bachelor's degree or an associate's degree in computer science; they might also be self-taught, or they might have attended a programming boot camp. A person with the job title of "software engineer" is expected to understand software engineering principles, more advanced mathematics, and the scientific method. In addition, they are expected to be able to write code. In certain countries, obtaining a degree in engineering is necessary to legally hold the title of engineer. In businesses that make a distinction between the two, software engineers may have broader and higher-level responsibilities, such as the following: designing or architecting new programmes, features, and platforms; managing the software development lifecycle, which includes design, implementation, testing, and deployment; leading a team of programmers; communicating with business customers, programmers, and other engineers; taking into consideration system stability and quality; and exploring software development methodology.