All Topics  
Programmer

 

   Email Print
   Bookmark   Link






 

Programmer



 
 
A programmer is someone who writes computer software
Computer software

Computer software, or just software is a general term used to describe a collection of computer programs, Algorithm and Software documentation that perform some tasks on a computer system....
. 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. A programmer's primary computer language (Lisp, 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 ....
, Delphi, C++
C++

C++ is a general-purpose programming language. It is regarded as a middle-level language, as it comprises a combination of both high-level programming language and low-level programming language language features....
, etc.) is often prefixed to the above titles, and those who work in a web environment often prefix their titles with web.






Discussion
Ask a question about 'Programmer'
Start a new discussion about 'Programmer'
Answer questions from other users
Full Discussion Forum



Encyclopedia


A programmer is someone who writes computer software
Computer software

Computer software, or just software is a general term used to describe a collection of computer programs, Algorithm and Software documentation that perform some tasks on a computer system....
. 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. A programmer's primary computer language (Lisp, 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 ....
, Delphi, C++
C++

C++ is a general-purpose programming language. It is regarded as a middle-level language, as it comprises a combination of both high-level programming language and low-level programming language language features....
, etc.) is often prefixed to the above titles, and those who work in a web environment often prefix their titles with web. A programmer is not a software developer
Software developer

A software developer is a person or organization concerned with facets of the software development process wider than design and coding, a somewhat broader scope of computer programming or a specialty of project manager including some aspects of Software product management....
, software engineer
Software engineer

A software engineer is a person who applies the principles of software engineering to the design, development, testing, and evaluation of the software and systems that make computers or anything with software such as chips work....
, computer scientist
Computer scientist

A computer scientist is a person 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....
. These profession
Profession

"A profession is a vocation founded upon specialised 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 refer to individuals possessing programming skills as well as 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....
 skills. 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 these occupations.

Those proficient in computer programming skills may become famous
List of programmers

This is a list of programmers notable for their contributions to software, either as original author or architect, or for later additions.See also: Game programmer, List of computer scientists...
, though this regard is normally limited to software engineering circles. Many of the most notable programmers are often labeled hackers. Programmers often have or project an image of individualist
Individualism

Individualism is the Morality stance, political philosophy, or social outlook that stresses independence and self-reliance. Individualists promote the exercise of one's goals and desires, while opposing most external interference upon one's choices, whether by society, or any other group or institution....
 geek
Geek

The word geek is a slang term, noting individuals as "a peculiar or otherwise odd person, especially one who is perceived to be overly obsessed with one or more things including those of intellectuality, electronics, etc." Formerly, the term referred to a carnival performer often billed as a wild man whose act usually includes biting the head...
dom, resistance to "suits" (referring to both business suits
Suit (clothing)

The man's suit of clothes is a set of garments which are crafted from the same cloth. The word suit derives from the French language suite, meaning "following", because the trousers and waistcoat follow the jacket's cloth and colour....
 literally and figuratively to the "Establishment"), controls and conformity.

Ada Lovelace
Ada Lovelace

Augusta Ada King, Countess of Lovelace , born Augusta Ada Byron, was the only legitimate child of George Gordon Byron, 6th Baron Byron. She is widely known in modern times simply as Ada Lovelace....
 is popularly credited as history's first programmer. She was the first to express an algorithm
Algorithm

In mathematics, computing, linguistics and related subjects, an algorithm is a sequence of finite instructions, often used for calculation and data processing....
 intended for implementation on a computer
Computer

A computer is a machine that manipulates Data according to a list of Code .The first devices that resemble modern computers date to the mid-20th century , although the computer concept and various machines similar to computers existed earlier....
, Charles Babbage
Charles Babbage

Charles Babbage, Royal Society was an England mathematician, philosopher, inventor and mechanical engineer who originated the concept of a programmable computer....
's analytical engine
Analytical engine

The analytical engine, an important step in the history of computers, was the design of a mechanical general-purpose computer by the British mathematician Charles Babbage....
, in October 1842. Her work never ran, though that of Konrad Zuse
Konrad Zuse

Konrad Zuse was a Germany Civil engineering and computer pioneer. His greatest achievement was the world's first functional program-controlled Turing-complete computer, the Z3 , in 1941 ....
 did in 1941. The ENIAC
ENIAC

ENIAC, short for Electronic Numerical Integrator And Computer, was a 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....
, 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 University, majoring in mathematics....
, Betty Snyder
Betty Holberton

Betty Holberton was one of the six original programmers of ENIAC, the first general-purpose electronic digital computer....
, 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....
, Fran Bilas
Frances Spence

Frances Spence was one of the original programmers for the ENIAC computer.She was born Frances Bilas in Philadelphia, Pennsylvania in 1922....
 and Ruth Lichterman
Ruth Teitelbaum

Ruth Teitelbaum was one of the original programmers for the ENIAC computer.Teitelbaum graduated from Hunter College with a Bachelor of Science in Mathematics....
 were the first working programmers.

International Programmers' Day is celebrated annually on January 7th.

Nature of the work

Some of this section is from the , 2006–07 Edition, which is in the public domain
Public domain

File:PD-icon.svgThe public domain is a range of abstract materials?commonly referred to as intellectual property?which are not owned or controlled by anyone....
 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 Federal government of the United States as part of that person's official duties." The term only applies to the work of the federal government, not state or local governments....
.


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 , as defined by the Information Technology Association of America , is "the study, design, development, implementation, support or management of computer-based information systems, particularly software applications and computer hardware." IT deals with the use of electronic computers and computer software to data conv...
 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 which provides good or Service to another entity under terms specified in a contract or within a verbal agreement....
. Licensing
License

The verb license or grant license means to give permission. The noun license refers to that permission as well as to the document memorializing that permission....
 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 specialised 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 a machine-readable artificial language designed to express computations that can be performed by a machine, particularly a computer....
s. Different programming languages are used depending on the purpose of the program. COBOL
COBOL

COBOL is one of the oldest programming languages still in active use. 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 computers used mainly by large organizations for critical applications, typically bulk data processing such as census, industry and consumer statistics, Enterprise Resource Planning, and financial transaction processing....
 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 programming language, procedural programming language, imperative programming language programming language that is especially suited to numerical analysis and scientific computing....
 is used in science and engineering. C++
C++

C++ is a general-purpose programming language. It is regarded as a middle-level language, as it comprises a combination of both high-level programming language and low-level programming language language features....
 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 ....
, C# and PHP
PHP

PHP is a scripting language originally designed for producing dynamic web pages. It has evolved to include a command line interface capability and can be used in Standalone software Graphical user interface....
 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 a structured collection of records or data that is stored in a computer system. The structure is achieved by organizing the data according to a database model....
 programmers
, mainframe programmers, or Web developer
Web developer

A web developer is a software developer or software engineer who is specifically engaged in the development of World Wide Web applications, or distributed network applications that are run over the [] protocol from a web server to a web browser....
s.

When making changes to the source code
Source code

In computer science, source code is any collection of statements or declarations written in some human-readable computer programming language....
 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 empirical investigation conducted to provide stakeholders with information about the quality of the product or service under test , with respect to the context in which it is intended to operate....
 and debugging
Debugging

Debugging is a methodical process of finding and reducing the number of computer bugs, or defects, in a computer program or a piece of electronic hardware thus making it behave as expected....
. 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 sometimes called maintenance programmer. Programmers may contribute to user guide
User guide

A user 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 range of subjects....
, or they may work with technical writer
Technical writer

A technical writer is a professional writer who designs, writes, creates, maintains, and updates technical documentation—including online help, user guides, white papers, design specifications, system manuals, and other documents....
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 an interface between hardware and applications; it is responsible for the management and coordination of activities and the sharing of the limited resources of the computer....
s and database management system
Database management system

A database management system is computer software that manages databases. DBMSes may use any of a variety of database models, such as the network model or relational model....
s. These workers make changes in the instructions that determine how the network, workstations, and CPU
Central processing unit

A central processing unit is an electronic circuit that can execute computer programs. This broad definition can easily be applied to many early computers that existed long before the term "CPU" ever came into widespread usage....
 of the system handle the various jobs they have been given and how they communicate with peripheral equipment such as printers
Computer printer

File:Lexmark X5100 Series.jpgIn computing, a printer is a peripheral which produces a hard copy of documents stored in computer file form, usually on physical print media such as paper or Transparency ....
 and disk drives
Data storage device

A data storage device is a device for recording information . Recording can be done using virtually any form of energy, spanning from manual muscle power in handwriting, to acoustic vibrations in phonographic recording, to electromagnetic energy modulating magnetic tape and optical discs....
. Because of their knowledge of the entire computer system, systems programmers often help applications programmers debug, or determine the source of, problems that may occur with their programs
Computer program

Computer programs are Instruction for a computer. A computer requires programs to function. Moreover, a computer program does not run unless its instructions are executed by a Central processing unit; however, a program may communicate an Algorithm#Formalization of algorithms to people without running....
.

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 combines a personal computer and WYSIWYG page layout software to create publication documents on a computer for either Publishing or small scale local Multifunction printer output and distribution....
 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 any activity related to developing a web site for the World Wide Web or an intranet. This can include e-commerce business development, web design, web content development, Client-side scripting/server-side scripting programming, and web server configuration....
 a huge part of the programming field. More and more software applications nowadays are Web application
Web application

In software engineering, a web application or webapp is an Application software that is accessed via web browser over a network such as the Internet or an intranet....
s that can be used by anyone with a Web browser
Web browser

A Web browser is a application software which enables a user to display and interact with text, images, videos, music, games and other information typically located on a Web page at a website on the World Wide Web or a local area network....
. Examples of such applications include the Google
Google

Google Inc. is an United States public company, earning revenue from AdWords related to its Google search, Gmail, Google Maps, Google Apps, Orkut, and YouTube services as well as selling advertising-free versions of the Google Search Appliance....
 search service, the Hotmail
Hotmail

Windows Live Hotmail, formerly known as MSN Hotmail and commonly referred to simply as Hotmail, is a free webmail service operated by Microsoft as part of its Windows Live group....
 e-mail service, and the Flickr
Flickr

Flickr is an and video hosting service website, web services suite, and online community platform. In addition to being a popular Web site for users to share personal photographs, the service is widely used by bloggers as a photo repository....
 photo-sharing service.

Globalization of Programming


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 Product or Service are actually developed or manufactured....
, and Foreign Worker Visa
Foreign Worker Visa

The Foreign Worker visa is an immigration document allowing a Foreign worker to temporarily immigrate to a country for purposes of employment. The immigration foreign nationals in this manner could displace domestic workers or fill a need that the host country needs, and thus is typically heavily supported by business groups....
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 Product or Service are actually developed or manufactured....
.

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. Objective studies on this debate that both sides accept have been hard to come by and a distrust has formed between large companies and programming trade groups.

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, comparative advantage refers to the ability of a person or a country to produce a particular good at a lower opportunity cost than another person or country....
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.

A parallel trend that has made it harder for some programmers to find work in the United States is the ongoing professionalization
Professionalization

Professionalization is the social process by which any trade or List of occupations transforms itself into a true "profession of the highest integrity and competence." This process tends to involve establishing acceptable qualifications, a professional body or association to oversee the conduct of members of the profession and some degree of...
 of computer programming. As software quality has steadily increased in successive years, the knowledge and experience required to produce such software has also increased, particularly as new programming languages, software project management
Software project management

Software project management is a sub-discipline of project management in which software projects are planned, monitored and controlled....
 techniques, and application frameworks
Application framework

In computer programming, an application framework is a software framework that is used to implement the standard structure of an application software for a specific operating system....
 have been introduced. Programmers who lack an understanding of these new technologies will naturally encounter decreasing demand for their services.

Professionalization is a particularly relevant force in the United States, as startup companies in particular often outsource the development of an initial application draft to an outside contractor (including overseas companies), and then hire a skilled in-house programmer in the United States to refine the initial product.

See also

  • Ada Byron's notes on the analytical engine
    Ada Byron's notes on the analytical engine

    Ada Byron's notes on the analytical engine are a description and associated documents produced by Ada Lovelace, on Charles Babbage's design for a mechanical computer called the analytical engine....
  • Code
  • Code monkey
    Code monkey

    The term code monkey generally refers to a computer programmer or other person who writes Source code for a living. More specifically, it refers to a person only capable of grinding out code, but unable to perform the more intellectually complex tasks of software architecture, analysis, and design....
  • Computer programming
    Computer programming

    Computer programming is the process of writing, testing, debugging/troubleshooting, and maintaining the source code of computer programs. This source code is written in a programming language....
  • Game programmer
    Game programmer

    A game programmer is a programmer who primarily develops video games or related software . Game programming has many specialized disciplines; practitioners of any may regard themselves as "game programmers"....
  • Labor shortage
    Labor shortage

    In its narrowest definition, a labor shortage is an economics in which there are insufficient qualified candidates to fill the demand for employment at any price....
  • List of programmers
    List of programmers

    This is a list of programmers notable for their contributions to software, either as original author or architect, or for later additions.See also: Game programmer, List of computer scientists...
  • Real programmer
    Real programmer

    The term Real Programmer is a term used by computer programmings to describe the archetypical 'hardcore' programmer. A real programmer eschews modern or graphical tools such as integrated development environments or languages other than assembly language or machine code in favour of more direct and efficient solutions - 'low-level program...
  • Script kiddie
    Script kiddie

    In hacker culture, a script kiddie, occasionally script bunny, skiddie, 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....
  • 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 development process
    Software development process

    A software development process is a structure imposed on the development of a software product. Synonyms include Software_Lifecycle_Processes and software process....
  • Software engineer
    Software engineer

    A software engineer is a person who applies the principles of software engineering to the design, development, testing, and evaluation of the software and systems that make computers or anything with software such as chips work....
  • 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....
  • Video game developer
    Video game developer

    A video game developer is a Computer software Software developer that creates video games. A developer may specialize in a certain video game console, such as Sony's PlayStation 3, Microsoft's Xbox 360, Nintendo's Wii, or may develop for a variety of systems, including personal computers....
  • Web monkey
  • 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....
  • 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....


External links

  • The US Department of Labor's description of and and statistics for employed