Computer programmers held about 568,000 jobs in 1996. Programmers are employedin almost every industry but the largest amount is in the computer and dataprocessing industry that includes companies that write and sell software. Allotof programmers can also be found working for companies that provide engineeringand management services, manufacturers of computer and office equipment,financial institutions, insurance carriers, educational institutions, andgovernment agencies.

A growing number of computer programmers are employed on atemporary, a contract basis, or work as independent workers because allot ofcompanies demand expertise with newer programming languages or more specializedareas of application. Rather than hiring programmers as permanent employees andthen laying them off after a job is completed, employers can contract withtemporary help agencies, consulting firms, or directly with programmersthemselves. A marketing company may only need the services of severalprogrammers to write and debug the software necessary to get a new databasemanagement system running. This practice also enables companies to bring inpeople with a specific set of skills. Bringing in an independent contractor witha certain level of experience in a new or advanced programming language enablesan establishment to complete a particular job without having to retrain theirworkers.

Such jobs may last anywhere from several weeks to a year or longer.There were 20,000 self-employed computer programmers in 1996 and this number isexpected to increase. Programmers usually work in offices. Although they usuallywork about 40 hours a week, programmers may work longer hours or weekends inorder to meet deadlines or fix critical problems that occur during off hours.Programmers can access a system directly, but from remote locations, to makecorrections or fix problems. Like other workers that spend a long time in frontof a computer terminal typing at a keyboard, they are susceptible to eyestrain,back discomfort, and hand and wrist problems such as carpal tunnel syndrome orcumulative trauma disorder.

Computer programs tell the computer what to do suchas which information to identify and access, how to process it, and whatequipment to use. Programs vary widely depending on the type of information tobe accessed. Although simple programs can be written in a few hours, programsthat use complex mathematical formulas or that draw data from many existingsystems, require more than a year of work. Allot of programmers work together asa team under a senior programmer's supervision. Programmers write specificprograms by breaking down each step into a logical series of instructions thecomputer can follow.

They then code these instructions in a conventionalprogramming language, such as C and FORTRAN. An artificial intelligencelanguage, such as LISP or Prolog; or one of the more advanced function-orientedor object-oriented languages, such as UML, Java, C++, Visual Basic, or Ada.Programmers usually know more than one programming language and since manylanguages are alike, they can often learn new languages relatively easily. Inpractice, the language they know or the type of environment they generally workin such as mainframe programmer, object-oriented programmer, or Internet orWorld Wide Web programmer often refers to programmers. In many largeorganizations, programmers follow descriptions that have been prepared bysoftware engineers or systems analysts.

These descriptions list the inputrequired the steps the computer must follow to process data, and the desiredarrangement of the output. Many programmers are involved in updating, repairing,modifying and expanding existing programs. When making changes to a section ofcode programmers need to make other users aware of the task the routine is toperform. They do this by using comments in the coded instructions so others canunderstand the program.

Innovations such as Computer-Aided Software Engineering(CASE) tools enable a programmer to concentrate on writing the unique parts ofthe program because the tools automate various pieces of the program beingbuilt. CASE tools generate whole sections of code automatically, rather thanline by line. This also stops more reliable and consistent programs andincreases programmers' productivity by eliminating some of the routine steps.Programmers often are grouped into two types: Applications programmers andsystems programmers.

Applications programmers usually are oriented towardbusiness, engineering, or science. They write software to handle specific jobswithin an organization, such as a program used in an inventory control system.They may also work alone to revise existing packaged software. Systemsprogrammers maintain and control the use of computer systems software.

Theseworkers make changes in the sets of instructions that determine how the network,workstations, and central processing unit of the system handles the various jobsthey have been given and how they communicate with peripheral equipment, such asterminals, printers, and disk drives. Because of their knowledge of the entirecomputer system, systems programmers often help applications programmersdetermine the source of problems that may occur with their programs. Programmersin software development companies may work directly with experts from variousfields to create software, either programs designed for specific clients orpackaged software for general use, ranging from games and educational softwareto programs for desktop publishing, financial planning, and spreadsheets. Muchof this type of programming is in the preparation of packaged software, whichcomprises one of the most rapidly growing segments of the computer servicesindustry. The average earnings of programmers who worked full time in 1996 wereabout $40,100 a year.

The middle 50 percent earned between about $30,700 and$52,000 a year. The lowest 10 percent earned less than $22,700; the highest 10percent earned more than $65,200. Starting salary offers for graduates with abachelor's degree in the area of computer programming averaged about $35,167 ayear in private industry in 1997, according to the National Association ofColleges and Employers. Programmers working in the West and Northeast earnedsomewhat more than those working in the South and Midwest.

On average, systemsprogrammers earn more than applications programmers. A survey of workplaces in160 metropolitan areas reported that beginning programmers had average annualearnings of about $27,000 in 1995. Experienced mid-level programmers with somesupervisory responsibilities had average annual earnings of about $40,000.Median annual earnings for programmers at the supervisory or team leader levelwere about $55,000.

According to Robert Half International Inc. startingsalaries ranged from $32,500 to $39,000 for programmers and $47,500 to $60,000for systems programmers in large establishments in 1997. Starting salaries forprogrammers in small establishments ranged from $28,000 to $37,000. In theFederal Government, the entrance salary for programmers with a college degree orqualifying experience was about $19,520 a year in early 1997; for those with asuperior academic record, $24,180. The majority of computer programmers, almost60 percent, had a bachelor's degree or higher in 1996.

Of these, some hold a BAor BS in computer science, mathematics, or information systems while others havetaken special courses in computer programming to supplement their study infields such as accounting, inventory control, or other business areas. As thelevel of education and training required by employers continue to rise, thispercentage should increase in the future. Skills needed vary from job to job andthe demand for various skills is generally driven by changes in technology.Employers using computers for scientific or engineering applications generallyprefer college graduates who have degrees in computer or information science,mathematics, engineering, or the physical sciences.

Graduate degrees in relatedfields may be required for some jobs. Employers who use computers for businessapplications prefer to hire people who have had college courses in managementinformation systems (MIS) and business, and who possess strong programmingskills. Although knowledge of traditional languages such as FORTRAN, COBOL, or Cis still important, increasing emphasis is placed on more advancedobject-oriented languages and tools such as CASE tools, C++, Visual C++, Ada,Smalltalk, Visual Basic, PowerBuilder, and Java as well as 4th and 5thgeneration languages, graphic user interface (GUI) and systems programming.Employers prefer general business skills and experience related to theoperations of the firm as well. Most systems programmers hold a 4-year degree incomputer science. Extensive knowledge of a variety of operating systems isessential.

This includes being able to configure the operating system to workwith different types of hardware, and adapting the operating system to best meetthe needs of the particular organization. They must also be able to work withdatabase systems such as DB2, Oracle, or Sybase. When hiring programmers,employers look for people with the necessary programming skills who can thinklogically and pay close attention to detail. The job calls for patience,persistence, and the ability to work on exacting analytical work, especiallyunder pressure. Ingenuity and imagination are also particularly important whenprogrammers design solutions and test their work for potential failures. Theability to work with abstract concepts and do technical analysis is especiallyimportant for systems programmers because they work with the software thatcontrols the computer's operation.

Since programmers are expected to work inteams and interact directly with users, employers want programmers who are ableto communicate with non-technical personnel. Beginning programmers may workalone on simple assignments after some initial instruction, or on a team withmore experienced programmers. Either way, beginning programmers generally mustwork under close supervision. Because technology changes so rapidly, programmersmust continuously update their training by taking courses sponsored by theiremployer or software vendors.

For skilled workers who keep up to date with thelatest technology, the prospects for advancement are good. In largeorganizations, they may be promoted to lead programmer and be given supervisoryresponsibilities. Some applications programmers may move into systemsprogramming after they gain experience and take courses in systems software.With general business experience, programmers may become programmer-analysts orsystems analysts, or be promoted to a managerial position. Other programmers,with specialized knowledge and experience with a language or operating system,may work in research and development areas such as multimedia or Internettechnology. As employers increasingly contract out programming jobs, moreopportunities should arise for experienced programmers with expertise in aspecific area to work as consultants.

Technical or professional certification isbecoming more common as a way for employers to ensure a level of competency orquality in all areas. Many product vendors offer certification or may evenrequire certification of technicians and professionals who work with theirproducts. The number of voluntary certificate or certification programs is alsogrowing and this type of certification is available through organizations suchas the Institute for Certification of Computing Professionals (ICCP). ICCPconfers the designation Certified Computing Professional (CCP) to those who haveat least 4 years of experience or 2 years of experience and a college degree. Toqualify, individuals must pass a core examination plus exams in two specialtyareas, or an exam in one specialty area and two computing languages.

Those withlittle or no experience may be tested for certification as an Associate ComputerProfessional (ACP). Certification is not mandatory, buy it may give a job seekera competitive advantage.