application developer
   HOME

TheInfoList



A computer programmer, sometimes called a software developer, a programmer or more recently a coder (especially in more informal contexts), is a person who creates
computer software Software is a collection of Instruction (computer science), instructions that tell a computer how to work. This is in contrast to Computer hardware, hardware, from which the system is built and actually performs the work. At the low level langu ...

computer software
. The term ''computer programmer'' can refer to a specialist in one area of
computers A computer is a machine that can be programmed to Execution (computing), carry out sequences of arithmetic or logical operations automatically. Modern computers can perform generic sets of operations known as Computer program, programs. These p ...

computers
or to a generalist who writes code for many kinds of
software Software is a collection of instructions that tell a computer A computer is a machine that can be programmed to carry out sequences of arithmetic or logical operations automatically. Modern computers can perform generic sets of operatio ...

software
. A programmer's most often-used
computer languageComputer language is a formal language In logic, mathematics, computer science, and linguistics, a formal language consists of string (computer science), words whose symbol (formal), letters are taken from an alphabet (computer science), alphabet ...
(e.g.,
Assembly Assembly may refer to: Organisations and meetings * Deliberative assembly A deliberative assembly is a gathering of members (of any kind of collective) who use parliamentary procedure Parliamentary procedure is the body of ethics, Procedural l ...
, C,
C++ C++ () is a general-purpose programming language In computer software, a general-purpose programming language is a programming language dedicated to a general-purpose, designed to be used for writing software in a wide variety of application ...

C++
, C#,
JavaScript JavaScript (), often abbreviated JS, is a programming language A programming language is a formal language comprising a Instruction set architecture, set of instructions that produce various kinds of Input/output, output. Programming lang ...
,
Lisp Lisp (historically LISP) is a family of programming language A programming language is a formal language comprising a Instruction set architecture, set of instructions that produce various kinds of Input/output, output. Programming languages ...
,
Python PYTHON was a Cold War contingency plan of the Government of the United Kingdom, British Government for the continuity of government in the event of Nuclear warfare, nuclear war. Background Following the report of the Strath Committee in 1955, the ...
,
Java Java ( id, Jawa, ; jv, ꦗꦮ; su, ) is one of the Greater Sunda Islands The Greater Sunda Islands are four tropical islands situated within Southeast Asia, in the Pacific Ocean. The islands, Borneo, Java, Sulawesi and Sumatra, are internat ...
) may be prefixed to the term ''programmer''. Some who work with
web programming Web development is the work involved in developing a Web site for the Internet (World Wide Web) or an intranet (a private network). Web development can range from developing a simple single Static Web page, static page of plain text to complex Web ...
languages also prefix their titles with ''web''.


Terminology

There is no industry-wide standard terminology, so "programmer" and "
software engineer A software engineer is a person who applies the principles of software engineering to the design, development, maintenance, testing, and evaluation of computer software Software is a collection of Instruction (computer science), instructions ...
" 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 deals with the theoretical foundations of information, algorithms and the architectures of its computation as well as practical techniques for their application. Computer science is the study of , , and . Computer science ...
, an
associate degree An associate degree is an undergraduate degree awarded after a course of post-secondary study lasting two to three years. It is a level of qualification between a high school diploma, GED, and a Bachelor's degree. The first associate degrees we ...
, or might be self-taught or attended a programming boot camp. Someone with a job title of "
software engineer A software engineer is a person who applies the principles of software engineering to the design, development, maintenance, testing, and evaluation of computer software Software is a collection of Instruction (computer science), instructions ...
" is expected to understand software engineering principles, more advanced mathematics, and the scientific method, and may be required to have a degree in software engineering, computer engineering, or
computer science Computer science deals with the theoretical foundations of information, algorithms and the architectures of its computation as well as practical techniques for their application. Computer science is the study of , , and . Computer science ...
. Some countries legally require an actual 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 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. A systems architect is a related job title, which might involve producing technical designs while leaving the actual programming to others.


History

British countess and mathematician 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) intended for implementation on Charles Babbage's analytical engine in October 1842. The algorithm was used to calculate Bernoulli numbers. 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 Konrad Zuse in 1941. The ENIAC programming team, consisting of Kathleen Antonelli, Kay McNulty, Jean Bartik, Betty Jennings, Betty Holberton, Betty Snyder, Marlyn Meltzer, Marlyn Wescoff, Frances Spence, Fran Bilas and Ruth Teitelbaum, 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 and IBM. The software industry 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 (founded in 1959), also started to grow. Computer manufacturers soon started bundling operating systems, system software and programming environments with their machines; the IBM 1620 came with the 1620 Symbolic Programming System and Fortran, FORTRAN. The industry expanded greatly with the rise of the personal computer (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. In the early years of the 21st century, another successful business model has arisen for hosted software, called software-as-a-service, or SaaS. From the point of view of producers of some proprietary software, SaaS reduces the concerns about Software copyunauthorized copying, since it can be accessed only through the Web, and by definition, no client software is loaded onto the end user's PC. Software as a service, SaaS is typically run out of the Cloud computing, cloud.


Nature of the work

Computer programmers write, test, debug, and maintain the detailed instructions, called computer programs, 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 (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 Independent contractor, contractors. License, Licensing is not typically required to work as a programmer, although professional certifications are commonly held by programmers. Programming is widely considered a 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 Flight training, pilots training in a flight simulator. 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. Programmers write programs according to the specifications determined primarily by more senior programmers or systems 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. The programmer codes these instructions in one of many programming languages. Different programming languages are used depending on the purpose of the program. COBOL, for example, is commonly used for business applications that typically run on Mainframe computer, mainframe and minicomputer, midrange computers, whereas Fortran is used in science and engineering.
C++ C++ () is a general-purpose programming language In computer software, a general-purpose programming language is a programming language dedicated to a general-purpose, designed to be used for writing software in a wide variety of application ...

C++
and Python (Programming Language), Python are widely used for both scientific and business applications.
Java Java ( id, Jawa, ; jv, ꦗꦮ; su, ) is one of the Greater Sunda Islands The Greater Sunda Islands are four tropical islands situated within Southeast Asia, in the Pacific Ocean. The islands, Borneo, Java, Sulawesi and Sumatra, are internat ...
, C#, JavaScript and PHP are popular programming languages for Web and business applications. Programmers generally know more than one programming language and, because many languages are similar, they often can learn new languages relatively easily. In practice, programmers often are referred to by the language they know, e.g. as ''Java programmers'', or by the type of function they perform or the environment in which they work: for example, ''database programmers'', ''mainframe programmers'', or web developers. When making changes to the source code that defines the program, programmers need to make other programmers aware of the task that the routine is to perform. They do this by writing software documentation and by inserting comments in the source code so that others can understand the program more easily. To save time, programmers often use Library (computing), 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.


Testing and debugging

Programmers test a program by running it and looking for Software bug, bugs (errors). As they are identified, the programmer usually makes the appropriate corrections, then rechecks the program until an acceptably low level and severity of bugs remain. This process is called Software testing, testing and debugging. These are important parts of every programmer's job. Programmers may continue to fix these problems throughout the life of a program. Updating, repairing, modifying, and expanding existing programs is sometimes called ''maintenance programming''. Programmers may contribute to user guides and online help, or they may work with technical writers to do such work.


Application versus system programming

Computer programmers often are grouped into two broad types: application programmers and system programmers. Application programmers write programs to handle a specific job, such as a program to track inventory within an organization. They also may revise existing packaged software or customize generic applications which are frequently purchased from independent software vendors. System programmers, in contrast, write programs to maintain and control computer system software, such as operating systems and database management systems. These workers make changes in the instructions that determine how the network, workstations, and Central processing unit, CPU of the system handle the various jobs they have been given and how they communicate with peripheral equipment such as Computer printer, printers and Data storage device, disk drives.


Qualifications and skills

A programmer needs to have technical expertise with certain aspects of computing. Some positions will require a degree in a relevant field such as computer science, information technology, engineering, programming, or other related studies.


Types of software

Programmers may work directly with experts from different fields to create software – either programs designed for specific clients or packaged software for general use – ranging from video games to educational software to programs for desktop publishing or financial applications. The programming of packaged software constitutes one of the most rapidly growing segments of the computer services industry. Some companies or organizations – even small ones – have set up their own IT team to ensure the design and development of in-house software to answer to very specific needs from their internal end-users, especially when existing software are not suitable or too expensive. This is, for example, the case in research laboratories. In some organizations, particularly small ones, people commonly known as ''programmer analysts'' are responsible for both the systems analysis and the actual programming work. The transition from a mainframe environment to one that is based primarily on personal computers (PCs) has blurred the once rigid distinction between the programmer and the user. Increasingly, adept end-users are taking over many of the tasks previously performed by programmers. For example, the growing use of packaged software, such as spreadsheet and database management software packages, allows users to write simple programs to access data and perform calculations. In addition, the rise of the Internet has made web development a huge part of the programming field. Currently, many software applications are web applications that can be used by anyone with a web browser. Examples of such applications include the Google search service, the Outlook.com e-mail service, and the Flickr photo-sharing service. Programming editors, also known as source code editors, 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, auto indentation, auto-complete, bracket matching, Syntax checker, syntax check, and allows plug-in (computing), plug-ins. These features aid the users during coding, debugging and testing.


Globalization


Market changes in the UK

According to 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 (1999–2001) and the Great Recession (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 2020 to 2030. 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 * List of programmers * List of programming languages * Software development process * Systems architect * Software engineering * System administrator


References


Further reading

* Gerald Weinberg, 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 Computer science Software industry Information technology