Programmer
Encyclopedia
A programmer, computer programmer or coder is someone who writes computer software
Computer software
Computer software, or just software, is a collection of computer programs and related data that provide the instructions for telling a computer what to do and how to do it....

. The term computer programmer can refer to a specialist in one area of computer programming
Computer programming
Computer programming is the process of designing, writing, testing, debugging, and maintaining the source code of computer programs. This source code is written in one or more programming languages. The purpose of programming is to create a program that performs specific operations or exhibits a...

 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. A programmer's primary computer language (C
C (programming language)
C is a general-purpose computer programming language developed between 1969 and 1973 by Dennis Ritchie at the Bell Telephone Laboratories for use with the Unix operating system....

, C++
C++
C++ is a statically typed, free-form, multi-paradigm, compiled, general-purpose programming language. It is regarded as an intermediate-level language, as it comprises a combination of both high-level and low-level language features. It was developed by Bjarne Stroustrup starting in 1979 at Bell...

, Java
Java (programming language)
Java is a programming language originally developed by James Gosling at Sun Microsystems and released in 1995 as a core component of Sun Microsystems' Java platform. The language derives much of its syntax from C and C++ but has a simpler object model and fewer low-level facilities...

, Lisp, Python etc.) is often prefixed to the above titles, and those who work in a web environment often prefix their titles with web. The term programmer can be used to refer to a software developer
Software developer
A software developer is a person concerned with facets of the software development process. Their work includes researching, designing, developing, and testing software. A software developer may take part in design, computer programming, or software project management...

, software engineer
Software engineer
A software engineer is an engineer who applies the principles of software engineering to the design, development, testing, and evaluation of the software and systems that make computers or anything containing software, such as computer chips, work.- Overview :...

, computer scientist
Computer scientist
A computer scientist is a scientist who has acquired knowledge of computer science, the study of the theoretical foundations of information and computation and their application in computer systems....

, or software analyst
Software analyst
In a software development team, a software analyst is the person who studies the software application domain and prepares the software requirements and specification document. Software analyst is the same between the software users and the software developers. It conveys the demands of the...

. However, members of these profession
Profession
A profession is a vocation founded upon specialized educational training, the purpose of which is to supply disinterested counsel and service to others, for a direct and definite compensation, wholly apart from expectation of other business gain....

s typically possess other software engineering
Software engineering
Software Engineering is the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software, and the study of these approaches; that is, the application of engineering to software...

 skills, beyond programming; for this reason, the term programmer is sometimes considered an insulting or derogatory oversimplification of these other professions. This has sparked much debate amongst developers, analysts, computer scientists, programmers, and outsiders who continue to be puzzled at the subtle differences in the definitions of these occupations.

Ada Lovelace
Ada Lovelace
Augusta Ada King, Countess of Lovelace , born Augusta Ada Byron, was an English writer chiefly known for her work on Charles Babbage's early mechanical general-purpose computer, the analytical engine...

 is popularly credited as history's first programmer. She was the first to express an algorithm
Algorithm
In mathematics and computer science, an algorithm is an effective method expressed as a finite list of well-defined instructions for calculating a function. Algorithms are used for calculation, data processing, and automated reasoning...

 intended for implementation on a computer
Computer
A computer is a programmable machine designed to sequentially and automatically carry out a sequence of arithmetic or logical operations. The particular sequence of operations can be changed readily, allowing the computer to solve more than one kind of problem...

, Charles Babbage
Charles Babbage
Charles Babbage, FRS was an English mathematician, philosopher, inventor and mechanical engineer who originated the concept of a programmable computer...

's analytical engine
Analytical engine
The Analytical Engine was a proposed mechanical general-purpose computer designed by English mathematician Charles Babbage. It was first described in 1837 as the successor to Babbage's difference engine, a design for a mechanical calculator...

, in October 1842. Her work never ran, though that of Konrad Zuse
Konrad Zuse
Konrad Zuse was a German civil engineer and computer pioneer. His greatest achievement was the world's first functional program-controlled Turing-complete computer, the Z3, which became operational in May 1941....

 did in 1941. The ENIAC
ENIAC
ENIAC was the first general-purpose electronic computer. It was a Turing-complete digital computer capable of being reprogrammed to solve a full range of computing problems....

 programming team, consisting of Kay McNulty
Kathleen Antonelli
Kathleen "Kay" McNulty Mauchly Antonelli was one of the six original programmers of the ENIAC, the first general-purpose electronic digital computer.-Early life and education:...

, Betty Jennings
Jean Bartik
Jean Bartik was one of the original programmers for the ENIAC computer.She was born Betty Jean Jennings in Gentry County, Missouri, in 1924 and attended Northwest Missouri State Teachers College, majoring in mathematics. In 1945, she was hired by the University of Pennsylvania to work for Army...

, Betty Snyder
Betty Holberton
Frances Elizabeth "Betty" Holberton was one of the six original programmers of ENIAC, the first general-purpose electronic digital computer.-Early life and education:...

, Marlyn Wescoff
Marlyn Meltzer
Marlyn Meltzer was one of the original programmers for the ENIAC computer.She was born Marlyn Wescoff and graduated from Temple University in 1942. She was hired by the Moore School of Engineering later that year to perform weather calculations, mainly because she knew how to operate an adding...

, Fran Bilas
Frances Spence
Frances Spence was one of the original programmers for the ENIAC computer.She was born Frances Bilas in Philadelphia in 1922. She attended Temple University but then was awarded a scholarship to Chestnut Hill College. She majored in mathematics with a minor in physics and graduated in 1942...

 and Ruth Lichterman
Ruth Teitelbaum
Ruth Teitelbaum was one of the original programmers for the ENIAC computer.Teitelbaum graduated from Hunter College with a B.Sc. in Mathematics...

 were the first working programmers.

In 2009, the government of Russia
Government of Russia
The Government of the Russian Federation exercises executive power in the Russian Federation. The members of the government are the prime minister , the deputy prime ministers, and the federal ministers...

 decreed a professional annual holiday known as Programmers' Day
Programmers' Day
Programmers' Day is an international professional holiday, recognized in many technology companies and programming firms, that is celebrated on the 256th day of each year...

 to be celebrated on September 13 (September 12 in leap year). It had also been an unofficial international holiday before that.

Nature of the work

Some of this section is from the Occupational Outlook Handbook, 2006–07 Edition, which is in the public domain
Public domain
Works are in the public domain if the intellectual property rights have expired, if the intellectual property rights are forfeited, or if they are not covered by intellectual property rights at all...

 as a work of the United States Government
Work of the United States Government
A work of the United States government, as defined by United States copyright law, is "a work prepared by an officer or employee of the U.S. government as part of that person's official duties." The term only applies to the work of the federal government, including the governments of "non-organized...

.


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
Information technology
Information technology is the acquisition, processing, storage and dissemination of vocal, pictorial, textual and numerical information by a microelectronics-based combination of computing and telecommunications...

 departments, big software companies, and small service firms. Many professional programmers also work for consulting companies at client' sites as contractors
Independent contractor
An independent contractor is a natural person, business, or corporation that provides goods or services to another entity under terms specified in a contract or within a verbal agreement. Unlike an employee, an independent contractor does not work regularly for an employer but works as and when...

. Licensing
License
The verb license or grant licence means to give permission. The noun license or licence refers to that permission as well as to the document recording that permission.A license may be granted by a party to another party as an element of an agreement...

 is not typically required to work as a programmer, although professional certification
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...

s are commonly held by programmers. Programming is widely considered a profession
Profession
A profession is a vocation founded upon specialized educational training, the purpose of which is to supply disinterested counsel and service to others, for a direct and definite compensation, wholly apart from expectation of other business gain....

 (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 they are writing programs for. For example, the instructions involved in updating financial records are very different from those required to duplicate conditions on 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 more senior programmers and by 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 language
Programming language
A programming language is an artificial language designed to communicate instructions to a machine, particularly a computer. Programming languages can be used to create programs that control the behavior of a machine and/or to express algorithms precisely....

s. Different programming languages are used depending on the purpose of the program. COBOL
COBOL
COBOL is one of the oldest programming languages. Its name is an acronym for COmmon Business-Oriented Language, defining its primary domain in business, finance, and administrative systems for companies and governments....

, for example, is commonly used for business applications which are run on mainframe
Mainframe computer
Mainframes are powerful computers used primarily by corporate and governmental organizations for critical applications, bulk data processing such as census, industry and consumer statistics, enterprise resource planning, and financial transaction processing.The term originally referred to the...

 and midrange
Minicomputer
A minicomputer is a class of multi-user computers that lies in the middle range of the computing spectrum, in between the largest multi-user systems and the smallest single-user systems...

 computers, whereas Fortran
Fortran
Fortran is a general-purpose, procedural, imperative programming language that is especially suited to numeric computation and scientific computing...

 is used in science and engineering. C++
C++
C++ is a statically typed, free-form, multi-paradigm, compiled, general-purpose programming language. It is regarded as an intermediate-level language, as it comprises a combination of both high-level and low-level language features. It was developed by Bjarne Stroustrup starting in 1979 at Bell...

 is widely used for both scientific and business applications. Java
Java (programming language)
Java is a programming language originally developed by James Gosling at Sun Microsystems and released in 1995 as a core component of Sun Microsystems' Java platform. The language derives much of its syntax from C and C++ but has a simpler object model and fewer low-level facilities...

, C# and PHP
PHP
PHP is a general-purpose server-side scripting language originally designed for web development to produce dynamic web pages. For this purpose, PHP code is embedded into the HTML source document and interpreted by a web server with a PHP processor module, which generates the web page document...

 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 environment in which they work: for example, database
Database
A database is an organized collection of data for one or more purposes, usually in digital form. The data are typically organized to model relevant aspects of reality , in a way that supports processes requiring this information...

 programmers
, mainframe programmers, or Web developer
Web developer
A web developer is a software developer or software engineer who specializes in, or is specifically engaged in, the development of World Wide Web applications, or distributed network applications that are run over HTTP from a web server to a web browser....

s.

When making changes to the source code
Source code
In computer science, source code is text written using the format and syntax of the programming language that it is being written in. Such a language is specially designed to facilitate the work of computer programmers, who specify the actions to be performed by a computer mostly by writing source...

 that programs are made up of, programmers need to make other programmers aware of the task that the routine is to perform. They do this by inserting comments in the source code so that others can understand the program more easily. To save work, programmers often 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.

Testing and debugging

Programmers test a program by running it and looking for bugs. 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 testing
Software testing
Software testing is an investigation conducted to provide stakeholders with information about the quality of the product or service under test. Software testing can also provide an objective, independent view of the software to allow the business to appreciate and understand the risks of software...

 and debugging
Debugging
Debugging is a methodical process of finding and reducing the number of bugs, or defects, in a computer program or a piece of electronic hardware, thus making it behave as expected. Debugging tends to be harder when various subsystems are tightly coupled, as changes in one may cause bugs to emerge...

. 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 guide
User guide
A user guide or user's guide, also commonly known as a manual, is a technical communication document intended to give assistance to people using a particular system...

s and online help
Online help
Online help is topic-oriented, procedural or reference information delivered through computer software. It is a form of user assistance. Most online help is designed to give assistance in the use of a software application or operating system, but can also be used to present information on a broad...

, or they may work with technical writer
Technical writer
A technical writer is a professional writer who designs, creates, and maintains technical documentation...

s to do such work.

Certain scenarios or execution paths may be difficult to test, in which case the programmer may elect to test by inspection which involves a human inspecting the code on the relevant execution path, perhaps hand executing the code. Test by inspection is also sometimes used as a euphemism for inadequate testing. It may be difficult to properly assess whether the term is being used euphemistically.

Application versus system programming

Computer programmers often are grouped into two broad types: application programmers and systems 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 vendor
Independent software vendor
Independent software vendor is a business term for companies specializing in making or selling software, designed for mass marketing or for niche markets...

s. Systems programmers, in contrast, write programs to maintain and control computer systems software, such as operating system
Operating system
An operating system is a set of programs that manage computer hardware resources and provide common services for application software. The operating system is the most important type of system software in a computer system...

s and database management system
Database management system
A database management system is a software package with computer programs that control the creation, maintenance, and use of a database. It allows organizations to conveniently develop databases for various applications by database administrators and other specialists. A database is an integrated...

s. These workers make changes in the instructions that determine how the network, workstations, and CPU
Central processing unit
The central processing unit is the portion of a computer system that carries out the instructions of a computer program, to perform the basic arithmetical, logical, and input/output operations of the system. The CPU plays a role somewhat analogous to the brain in the computer. The term has been in...

 of the system handle the various jobs they have been given and how they communicate with peripheral equipment such as printers
Computer printer
In computing, a printer is a peripheral which produces a text or graphics of documents stored in electronic form, usually on physical print media such as paper or transparencies. Many printers are primarily used as local peripherals, and are attached by a printer cable or, in most new printers, a...

 and disk drives
Data storage device
thumb|200px|right|A reel-to-reel tape recorder .The magnetic tape is a data storage medium. The recorder is data storage equipment using a portable medium to store the data....

.

Types of software

Programmers in software development companies may work directly with experts from various fields to create software — either programs designed for specific clients or packaged software for general use — ranging from computer and video games to educational software to programs for desktop publishing
Desktop publishing
Desktop publishing is the creation of documents using page layout software on a personal computer.The term has been used for publishing at all levels, from small-circulation documents such as local newsletters to books, magazines and newspapers...

 and financial planning. Programming of packaged software constitutes one of the most rapidly growing segments of the computer services industry.

In some organizations, particularly small ones, workers 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
Web development
Web development is a broad term for the work involved in developing a web site for the Internet or an intranet . This can include web design, web content development, client liaison, client-side/server-side scripting, web server and network security configuration, and e-commerce development...

 a huge part of the programming field. More and more software applications nowadays are Web application
Web application
A web application is an application that is accessed over a network such as the Internet or an intranet. The term may also mean a computer software application that is coded in a browser-supported language and reliant on a common web browser to render the application executable.Web applications are...

s that can be used by anyone with a Web browser
Web browser
A web browser is a software application for retrieving, presenting, and traversing information resources on the World Wide Web. An information resource is identified by a Uniform Resource Identifier and may be a web page, image, video, or other piece of content...

. Examples of such applications include the Google
Google
Google Inc. is an American multinational public corporation invested in Internet search, cloud computing, and advertising technologies. Google hosts and develops a number of Internet-based services and products, and generates profit primarily from advertising through its AdWords program...

 search service, the Hotmail
Hotmail
Windows Live Hotmail, formerly known as MSN Hotmail and commonly referred to simply as Hotmail, is a free web-based email service operated by Microsoft as part of its Windows Live group. It was founded by Sabeer Bhatia and Jack Smith and launched in July 1996 as "HoTMaiL". It was one of the first...

 e-mail service, and the Flickr
Flickr
Flickr is an image hosting and video hosting website, web services suite, and online community that was created by Ludicorp in 2004 and acquired by Yahoo! in 2005. In addition to being a popular website for users to share and embed personal photographs, the service is widely used by bloggers to...

 photo-sharing service.

Market changes in the UK

According to BBC, 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 majors surveyed while 0% of medical students were unemployed in the same survey. The UK category system does, however, class such degrees as Information technology
Information technology
Information technology is the acquisition, processing, storage and dissemination of vocal, pictorial, textual and numerical information by a microelectronics-based combination of computing and telecommunications...

 and Game design
Game design
Game design, a subset of game development, is the process of designing the content and rules of a game in the pre-production stage and design of gameplay, environment, storyline, and characters during production stage. The term is also used to describe both the game design embodied in a game as...

 as 'computer science', somewhat inflating the actual figure.

Market changes in the USA

Computer programming, offshore outsourcing
Offshore outsourcing
Offshore outsourcing is the practice of hiring an external organization to perform some business functions in a country other than the one where the products or services are actually developed or manufactured. It can be contrasted with offshoring, in which the functions are performed in a foreign...

, and Foreign Worker Visa
Foreign Worker Visa
A Foreign Worker visa is an immigration document that allows a foreign national to temporarily live and work in a country. Ideally, such foreign nationals remedy a skill shortage in the host country, which gains support of business groups.-See also:...

s became a controversial topic after the crash of the dot com bubble left many programmers without work or with lower wages. Programming was even mentioned in the 2004 U.S. Presidential debate on the topic of offshore outsourcing
Offshore outsourcing
Offshore outsourcing is the practice of hiring an external organization to perform some business functions in a country other than the one where the products or services are actually developed or manufactured. It can be contrasted with offshoring, in which the functions are performed in a foreign...

.

Large companies claim there is a skills shortage with regard to programming talent. However, U.S. programmers and unions counter that large companies are exaggerating their case in order to obtain cheaper programmers from developing countries and to avoid paying for training in very specific technologies.

Enrollment in computer-related degrees in U.S. has dropped recently due to lack of general interests 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. This situation has resulted in confusion about whether the U.S. economy is entering a "post-information age" and the nature of U.S. comparative advantage
Comparative advantage
In economics, the law of comparative advantage says that two countries will both gain from trade if, in the absence of trade, they have different relative costs for producing the same goods...

s. Technology and software jobs were supposed to be the replacement for factory and agriculture jobs lost to cheaper foreign labor, but if those are subject to free trade losses, then the nature of the next generation of replacement careers is not clear at this point.

See also

  • Ada Lovelace
    Ada Lovelace
    Augusta Ada King, Countess of Lovelace , born Augusta Ada Byron, was an English writer chiefly known for her work on Charles Babbage's early mechanical general-purpose computer, the analytical engine...

     Ada Byron's notes on the analytical engine
  • Code monkey
    Code monkey
    A Code monkey is a computer programmer or other person who writes computer code for a living. This term may be slightly derogatory, meaning that this developer can write some code but is unable to perform the more complex tasks of software architecture, analysis, and design...

  • Development speed
    Development speed
    Development speed describes how fast a programmer can program. Most of the time development speed refers to the speed that a programmer can program with a particular programming language. It's a crucial factor of productivity of a programming language. Application speed is often compared with...

  • Game programmer
    Game programmer
    A game programmer is a software engineer, programmer, or computer scientist who primarily develops codebase for video games or related software, such as game development tools. Game programming has many specialized disciplines all of which fall under the umbrella term of "game programmer"...

  • Labor shortage
    Labor shortage
    In its narrowest definition, a labor shortage is an economic condition in which there are insufficient qualified candidates to fill the market-place demands for employment at any price...

  • List of programmers
  • List of Russian programmers
  • Real Programmer
    Real programmer
    The term Real Programmer is computer programmers' folklore to describe the archetypical "hardcore" programmer who eschews the modern languages and tools of the day in favour of more direct and efficient solutions – closer to the hardware...

  • Script kiddie
    Script kiddie
    A script kiddie or skiddie, occasionally skid, script bunny, script kitty, script-running juvenile or similar, is a derogatory term used to describe those who use scripts or programs developed by others to attack computer systems and networks and deface websites.-Characteristics:In a Carnegie...

  • Software development process
    Software development process
    A software development process, also known as a software development life cycle , is a structure imposed on the development of a software product. Similar terms include software life cycle and software process. It is often considered a subset of systems development life cycle...

  • Software engineering
    Software engineering
    Software Engineering is the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software, and the study of these approaches; that is, the application of engineering to software...

  • Video game developer
    Video game developer
    A video game developer is a software developer that creates video games. A developer may specialize in a certain video game console, such as Nintendo's Wii, Microsoft's Xbox 360, Sony's PlayStation 3, or may develop for a variety of systems, including personal computers.Most developers also...

  • Women in computing
    Women in computing
    Global concerns about current and future roles of women in computing occupations gained more importance with the emerging information age. These concerns motivated public policy debates addressing gender equality as computer applications exerted increasing influence in society...


Further reading

  • Weinberg, Gerald M.
    Gerald Weinberg
    Gerald Marvin Weinberg is an American computer scientist, author and teacher of the psychology and anthropology of computer software development.- Biography :Gerald Weinberg was born and raised in Chicago...

    , 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 source of this article is wikipedia, the free encyclopedia.  The text of this article is licensed under the GFDL.
 
x
OK