programmer
   HOME

TheInfoList



OR:

A computer programmer, sometimes referred to as a software developer, a software engineer, a programmer or a coder, is a person who creates
computer programs A computer program is a sequence or set of instructions in a programming language for a computer to Execution (computing), execute. Computer programs are one component of software, which also includes software documentation, documentation and oth ...

computer programs
— often for larger computer software. A programmer is someone who writes/creates computer software or applications by providing a specific programming language to the computer. Most programmers have extensive computing and coding experience in many varieties of programming languages and platforms, such as Structured Query Language (SQL), Perl, Extensible Markup Language (XML), PHP, HTML, C, C++ and Java. A programmer's most often-used
computer language A computer language is a formal language used to communicate with a computer. Types of computer languages include: * Software construction#Construction languages, Construction language – all forms of communication by which a human can Comput ...
(e.g., Assembly, C,
C++
C++
, C#,
JavaScript JavaScript (), often abbreviated as JS, is a programming language that is one of the core technologies of the World Wide Web The World Wide Web (WWW), commonly known as the Web, is an information system enabling documents and oth ...
,
Lisp A lisp is a speech impairment in which a person misarticulates sibilants (, , , , , , , ). These misarticulations often result in unclear speech. Types * A frontal lisp occurs when the tongue is placed anterior to the target. Interdental lisping ...
,
Python Python may refer to: Snakes * Pythonidae The Pythonidae, commonly known as pythons, are a Family (biology), family of Venomous snake, nonvenomous snakes found in Africa, Asia, and Australia. Among its members are some of the largest snakes i ...
,
Java Java (; id, Jawa, ; jv, ꦗꦮ; su, ) is one of the Greater Sunda Islands in Indonesia. It is bordered by the Indian Ocean to the south and the Java Sea to the north. With a population of 151.6 million people, Java is the world's List ...
, etc.) may be prefixed to the aforementioned terms. Some who work with web programming languages may also prefix their titles with ''web''.


Terminology

There is no industry-wide standard terminology, so "programmer" and "
software engineer Software engineering is a systematic engineering Engineering is the use of scientific principles to design and build machines, structures, and other items, including bridges, tunnels, roads, vehicles, and buildings. The discipline of engi ...
" might refer to the same role at different companies. Most typically, someone with a job title of "programmer" or "software developer" might focus on implementing a detailed specification into computer code, fixing bugs, and performing code reviews. They might have a degree in
computer science Computer science is the study of computation, automation, and information. Computer science spans theoretical disciplines (such as algorithms, theory of computation, information theory, and automation) to Applied science, practical discipli ...
, an
associate degree An associate degree is an undergraduate degree awarded after a course of Tertiary education, post-secondary study lasting two to three years. It is a level of qualification above a high school diploma, GED, or matriculation, and below a bachelo ...
, or might be self-taught or attended a programming boot camp. Someone with a job title of "
software engineer Software engineering is a systematic engineering Engineering is the use of scientific principles to design and build machines, structures, and other items, including bridges, tunnels, roads, vehicles, and buildings. The discipline of engi ...
" is expected to understand
software engineering Software engineering is a systematic engineering approach to software development. A software engineer is a person who applies the principles of software engineering to design, develop, maintain, test, and evaluate software, computer software. Th ...
principles, more advanced mathematics, and the
scientific method The scientific method is an Empirical evidence, empirical method for acquiring knowledge that has characterized the development of science since at least the 17th century (with notable practitioners in previous centuries; see the article hist ...

scientific method
, and may be required to have a degree in software engineering,
computer engineering Computer engineering (CoE or CpE) is a branch of electrical engineering and computer science that integrates several fields of computer science and electronic engineering required to develop computer hardware and computer software, software. C ...
, or
computer science Computer science is the study of computation, automation, and information. Computer science spans theoretical disciplines (such as algorithms, theory of computation, information theory, and automation) to Applied science, practical discipli ...
. Some countries legally require an engineering degree to be called an engineer. In companies that make a distinction, software engineers might have broader and higher-level responsibilities, like designing or architecting new programs, features, and platforms; managing the
software development lifecycle In software engineering, a software development process is a process of dividing software development work into smaller, parallel, or sequential steps or sub-processes to improve Software design, design, Software product management, product man ...
including design, implementation, testing, and deployment; leading a team of programmers; communicating with business customers, programmers, and other engineers; considering system stability and quality; and exploring
software development methodologies In software engineering, a software development process is a process of dividing software development work into smaller, parallel, or sequential steps or sub-processes to improve Software design, design, Software product management, product man ...
.


History

British
count Count (feminine: countess) is a historical title of nobility in certain European countries, varying in relative status, generally of middling rank in the hierarchy of nobility.L. G. Pine, Pine, L. G. ''Titles: How the King Became His Majesty'' ...

count
ess and mathematician
Ada Lovelace Augusta Ada King, Countess of Lovelace (''née'' Byron; 10 December 1815 – 27 November 1852) was an English mathematician and writer, chiefly known for her work on Charles Babbage's proposed mechanical general-purpose computer, the Ana ...

Ada Lovelace
is often considered to be the first computer programmer, as she was the first to publish part of a program (specifically an
algorithm In mathematics and computer science, an algorithm () is a finite sequence of rigorous instructions, typically used to solve a class of specific Computational problem, problems or to perform a computation. Algorithms are used as specificat ...

algorithm
) intended for implementation on
Charles Babbage Charles Babbage (; 26 December 1791 – 18 October 1871) was an English polymath. A mathematician, philosopher, inventor and mechanical engineer, Babbage originated the concept of a digital programmable computer. Babbage is considered ...

Charles Babbage
's
analytical engine The Analytical Engine was a proposed mechanical general-purpose computer designed by English mathematician and computer pioneer Charles Babbage. It was first described in 1837 as the successor to Babbage's difference engine, which was a des ...
in October 1842. The algorithm was used to calculate
Bernoulli number In mathematics Mathematics is an area of knowledge that includes the topics of numbers, formulas and related structures, shapes and the spaces in which they are contained, and quantities and their changes. These topics are represented in ...
s. Because Babbage's machine was never completed as a functioning standard in Lovelace's time, she never had the opportunity to see the algorithm in action. The first person to execute a program on a functioning, modern, electronic computer was the
computer scientist A computer scientist is a person who is trained in the academic study of computer science. Computer scientists typically work on the theoretical side of computation, as opposed to the computer hardware, hardware side on which computer engineer ...

computer scientist
Konrad Zuse Konrad Ernst Otto Zuse (; 22 June 1910 – 18 December 1995) was a German civil engineer, List of pioneers in computer science, pioneering computer scientist, inventor and businessman. His greatest achievement was the world's first programmab ...

Konrad Zuse
in 1941. The
ENIAC ENIAC (; Electronic Numerical Integrator and Computer) was the first Computer programming, programmable, Electronics, electronic, general-purpose digital computer, completed in 1945. There were other computers that had these features, but the ...

ENIAC
programming team, consisting of Kay McNulty, Betty Jennings,
Betty Snyder
Betty Snyder
,
Marlyn Wescoff
Marlyn Wescoff
, Fran Bilas and
Ruth Lichterman
Ruth Lichterman
, have been credited as the first regular computer programmers.


The software industry

The first company founded specifically to provide software products and services was the Computer Usage Company in 1955. Before that time, computers were programmed either by customers or the few commercial computer manufacturers of the time, such as
Sperry Rand Sperry Corporation was a major American equipment and electronics The field of electronics is a branch of physics and electrical engineering that deals with the emission, behaviour and effects of electrons using Electronic component, e ...
and
IBM
IBM
. The
software industry The software industry includes businesses for software development, development, software maintenance, maintenance and software publisher, publication of software that are using different business models, mainly either "license/maintenance based" ...
expanded in the early 1960s, almost immediately after computers were first sold in mass-produced quantities. Universities, governments, and businesses created a demand for software. Many of these programs were written in-house by full-time staff programmers; some were distributed between users of a particular machine for no charge, while others were sold on a commercial basis. Other firms, such as
Computer Sciences Corporation Computer Sciences Corporation (CSC) was an American multinational corporation that provided information technology (IT) services and professional services. On April 3, 2017, it merged with the Enterprise Services line of business of Hewlett ...
(founded in 1959), also started to grow. Computer manufacturers soon started bundling
operating systems An operating system (OS) is system software that manages computer hardware, software resources, and provides common daemon (computing), services for computer programs. Time-sharing operating systems scheduler (computing), schedule tasks for ef ...
,
system software System software is software designed to provide a platform for other software. Examples of system software include operating systems (OS) like macOS, Linux, Android and Microsoft Windows, computational science software, game engines, search engin ...
and programming environments with their machines; the
IBM 1620 The IBM 1620 was announced by IBM on October 21, 1959, and marketed as an inexpensive scientific computer. After a total production of about two thousand machines, it was withdrawn on November 19, 1970. Modified versions of the 1620 were used as ...

IBM 1620
came with the 1620 Symbolic Programming System and
FORTRAN
FORTRAN
. The industry expanded greatly with the rise of the
personal computer A personal computer (PC) is a multi-purpose microcomputer whose size, capabilities, and price make it feasible for individual use. Personal computers are intended to be operated directly by an end user, rather than by a computer expert or techn ...
(PC) in the mid-1970s, which brought computing to the average office worker. In the following years, the PC also helped create a constantly growing market for games, applications and utility software. This resulted in increased demand for software developers for that period of time.


Nature of the work

Computer programmers write, test,
debug In computer programming and software development, debugging is the process of finding and resolving ''Software bug, bugs'' (defects or problems that prevent correct operation) within computer programs, software, or Software system, systems. Deb ...

debug
, and maintain the detailed instructions, called
computer programs A computer program is a sequence or set of instructions in a programming language for a computer to Execution (computing), execute. Computer programs are one component of software, which also includes software documentation, documentation and oth ...
, that computers must follow to perform their functions. Programmers 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. Programmers work in many settings, including corporate
information technology Information technology (IT) is the use of computers to create, process, store, retrieve, and exchange all kinds of Data (computing), data . and information. IT forms part of information and communications technology (ICT). An information te ...
(IT) departments, big software companies, small service firms and government entities of all sizes. Many professional programmers also work for consulting companies at client sites as contractors.
Licensing A license (or licence) is an official permission or permit to do, use, or own something (as well as the document of that permission or permit). A license is granted by a party (licensor) to another party (licensee) as an element of an agreeme ...

Licensing
is not typically required to work as a programmer, although
professional certification Professional certification, trade certification, or professional designation, often called simply ''certification'' or ''qualification'', is a designation earned by a person to assure qualification to perform a job or task. Not all certifications ...
s are commonly held by programmers. Programming is widely considered a
profession A profession is a field of work that has been successfully '' professionalized''. It can be defined as a disciplined group of individuals, '' professionals'', who adhere to ethical standards and who hold themselves out as, and are accepted b ...

profession
(although some authorities disagree on the grounds that only careers with legal licensing requirements count as a profession). Programmers' work varies widely depending on the type of business for which they are writing programs. For example, the instructions involved in updating financial records are very different from those required to duplicate conditions on an aircraft for in a
flight simulator A flight simulator is a device that artificially re-creates aircraft flight and the environment in which it flies, for pilot training, design, or other purposes. It includes replicating the equations that govern how aircraft fly, how they rea ...
. Simple programs can be written in a few hours. More complex ones may require more than a year of work, while others are never considered 'complete' but rather are continuously improved as long as they stay in use. In most cases, several programmers work together as a team under a senior programmer's supervision.


Types of software

Programming editors, also known as
source code editor A source-code editor is a text editor program designed specifically for editing source code of computer programs. It may be a standalone application or it may be built into an integrated development environment (IDE) or web browser. Source-code ed ...
s, are text editors that are specifically designed for programmers or developers to write the source code of an application or a program. Most of these editors include features useful for programmers, which may include color
syntax highlighting Syntax highlighting is a feature of text editors that are used for programming language, programming, scripting language, scripting, or markup language, markup languages, such as HTML. The feature displays text, especially source code, in differ ...
, auto indentation, auto-complete, bracket matching, syntax check, and allows plug-ins. These features aid the users during coding,
debugging In computer programming and software development, debugging is the process of finding and resolving ''Software bug, bugs'' (defects or problems that prevent correct operation) within computer programs, software, or Software system, systems. Deb ...

debugging
and testing.


Globalization


Market changes in the UK

According to
BBC News BBC News is an operational Division (business), business division of the BBC, British Broadcasting Corporation (BBC) responsible for the gathering and broadcasting of news and current affairs in the UK and around the world. The department is t ...

BBC News
, 17% of computer science students could not find work in their field 6 months after graduation in 2009 which was the highest rate of the university subjects surveyed while 0% of medical students were unemployed in the same survey.


Market changes in the US

After the crash of the
dot-com bubble The dot-com bubble (dot-com boom, tech bubble, or the Internet bubble) was a stock market bubble in the late 1990s, a period of massive growth in the use and adoption of the Internet. Between 1995 and its peak in March 2000, the Nasdaq Compos ...
(1999–2001) and the
Great Recession The Great Recession was a period of marked general decline, i.e. a recession, observed in national economies globally that occurred from late 2007 into 2009. The scale and timing of the recession varied from country to country (see map). At t ...
(2008), many U.S. programmers were left without work or with lower wages. In addition, enrollment in computer-related degrees and other STEM degrees (STEM attrition) in the US has been dropping for years, especially for women, which, according to Beaubouef and Mason, could be attributed to a lack of general interest in science and mathematics and also out of an apparent fear that programming will be subject to the same pressures as manufacturing and agriculture careers. For programmers, the U.S. Bureau of Labor Statistics (BLS) Occupational Outlook predicts a decline of 7 percent from 2016 to 2026, a further decline of 9 percent from 2019 to 2029, and a decline of 10 percent from 2021 to 2031. Since computer programming can be done from anywhere in the world, companies sometimes hire programmers in countries where wages are lower. However, for software developers BLS projects for 2019 to 2029 a 22% increase in employment, from 1,469,200 to 1,785,200 jobs with a median base salary of $110,000 per year. This prediction is lower than the earlier 2010 to 2020 predicted increase of 30% for software developers. Though the distinction is somewhat ambiguous, software developers engage in a wider array of aspects of application development and are generally higher skilled than programmers, making outsourcing less of a risk. Another reason for the decline for programmers is their skills are being merged with other professions, such as developers, as employers increase the requirements for a position over time.


See also

*
Video game programmer A game programmer is a software engineer, programmer, or computer scientist who primarily develops codebases for video games or related software Software is a set of computer programs and associated software documentation, documentatio ...
* List of programmers * List of programming languages *
Software development process In software engineering, a software development process is a process of dividing software development work into smaller, parallel, or sequential steps or sub-processes to improve Software design, design, Software product management, product man ...

Software development process
*
Systems architect The systems architect is an information and communications technology Information and communications technology (ICT) is an extensional term for information technology Information technology (IT) is the use of computers to create, pr ...
*
Software engineering Software engineering is a systematic engineering approach to software development. A software engineer is a person who applies the principles of software engineering to design, develop, maintain, test, and evaluate software, computer software. Th ...


References


Further reading

* Weinberg, Gerald M., ''The Psychology of Computer Programming'', New York: Van Nostrand Reinhold, 1971 * An experiential study of the nature of programming work: Lucas, Rob
"Dreaming in Code"
''New Left Review'' 62, March–April 2010, pp. 125–132. *


External links

* The US Department of Labor description of: *
Computer programmers
*

{{Authority control Computer occupations Software industry Information technology