A computer programmer could...
|Program an infusion pump's embedded system for safer drug delivery.||Program a barcode reader, allowing stores to track inventory.|
|Help studios create cutting-edge and cool video games.||Program and test the autopilot for an airplane's flight control system.|
Key Facts & Information
|Overview||Computers are essential tools in the modern world, handling everything from traffic control, car welding, movie animation, shipping, aircraft design, and social networking to book publishing, business management, music mixing, health care, agriculture, and online shopping. Computer programmers are the people who write the instructions that tell computers what to do.|
|Key Requirements||Good analytical, troubleshooting, problem-solving, and logic skills, as well as attention to detail and the ability to communicate well with others.|
|Minimum Degree||Bachelor's degree|
|Subjects to Study in High School||Physics, computer science, algebra, geometry, calculus|
|Projected Job Growth (2010-2020)||Average (7% to 13%) In Demand!|
Training, Other Qualifications
A bachelor's degree is commonly required for computer programming jobs, although a two-year degree or a certificate may be adequate for some positions. Employers favor applicants who already have relevant programming skills and experience. Skilled workers who keep up to date with the latest technology usually have good opportunities for advancement.
Education and Training
Most programmers have a bachelor's degree, but a two-year degree or a certificate may be adequate for some jobs. Some computer programmers hold a college degree in computer science, mathematics, or information systems, whereas others have taken special courses in computer programming to supplement their degree in a field such as accounting, finance, or another area of business. In 2006, more than 68 percent of computer programmers had a bachelor's degree or higher, but as the level of education and training required by employers continues to rise, this proportion is expected to increase.
Employers who use computers for scientific or engineering applications usually prefer college graduates who have a degree in computer or information science, mathematics, engineering, or the physical sciences. Employers who use computers for business applications prefer to hire people who have had college courses in management information systems and business, and who possess strong programming skills. A graduate degree in a related field is required for some jobs.
Most systems programmers hold a four-year degree in computer science. Extensive knowledge of a variety of operating systems is essential for such workers. This includes being able to configure an operating system to work with different types of hardware and being able to adapt the operating system to best meet the needs of a particular organization. Systems programmers also must be able to work with database systems, such as DB2, Oracle, or Sybase.
In addition to educational attainment, employers highly value relevant programming skills, as well as experience. Although knowledge of traditional programming languages still is important, employers are placing an emphasis on newer, object-oriented languages and tools such as C++ and Java. Additionally, employers seek people familiar with fourth- and fifth-generation languages that involve graphic user interface and systems programming. College graduates who are interested in changing careers or developing an area of expertise may return to a two-year community college or technical school for specialized training. In the absence of a degree, substantial specialized experience or expertise may be needed.
Entry-level or junior programmers may work alone on simple assignments after some initial instruction, or they may be assigned to work on a team with more experienced programmers. Either way, beginning programmers generally must work under close supervision.
Because technology changes so rapidly, programmers must continuously update their knowledge and skills by taking courses sponsored by their employer or by software vendors, or offered through local community colleges and universities.
When hiring programmers, employers look for people with the necessary programming skills who can think logically and pay close attention to detail. Programming calls for patience, persistence, and the ability to perform exacting analytical work, especially under pressure. Ingenuity and creativity are particularly important when programmers design solutions and test their work for potential failures. The ability to work with abstract concepts and to do technical analysis is especially important for systems programmers because they work with the software that controls the computer’s operation.
Because programmers are expected to work in teams and interact directly with users, employers want programmers who are able to communicate with non-technical personnel. Business skills are also important, especially for those wishing to advance to managerial positions.
Certification is a way to demonstrate a level of competence and may provide a job-seeker with a competitive advantage. In addition to language-specific certificates, product vendors or software firms also offer certification and may require professionals who work with their products to be certified. Voluntary certification also is available through various other organizations.
Nature of the Work
Watch this Engineer Your Life video to see how Tara Teich, a video game programmer at LucasArts, works to make fun and realistic characters come to life in video games.
Computer programmers write the step-by-step instructions that direct computers to process information. These instructions, or programs, tell the computer what to do in a series of logical steps. Programmers work on a wide range of projects. The kind of work a programmer does depends on the employer. Programmers work in manufacturing, industry, engineering, government offices, hospitals, and educational institutions.
Programmers receive detailed job descriptions that identify the goal of the program. Programmers then may prepare systems flow charts that show diagrammatically how information will flow through the computer and its peripheral, or related, equipment. If much creativity and expertise are demanded at this step, systems analysts or computer software engineers may prepare the systems flow charts. In most medium to large computer installations, programmers receive their instructions from systems analysts or computer software engineers.
When the preliminary stages are completed, programmers write the actual program using special computer languages. Different computer languages are used for different applications. For instance, HTML and XML are useful when creating Web applications, and COBOL is useful for business applications. Since most programs are long and complex, they must be tested to see whether they run as expected. This step is called debugging. If the test run is not satisfactory, the programmers examine the program for errors in logic and data and make corrections or report the problem to a software engineer. It may take a few days to write a simple program, while more than a year may be required to develop a sophisticated one.
Most programmers are involved in applications programming. They work on specific tasks that have a direct application, such as designing accounting procedures. Applications programmers usually specialize in either writing programs just for one professional field, such as science or business. Applications programmers meet with clients and designers to understand the scope of the project before they begin to write the code. They work alone or in teams depending on the budget, deadline, and the size of the project.
Systems programmers write programs to maintain and control systems software that may run systems such as a large office's computer network. They would, for instance, write a program that enables a new printer to work with an old computer. They generally work for computer manufacturers or for companies that have large computer installations. Some are involved in developing new computer languages. Computer software engineers, who are very experienced programmers, design and implement complex programs from scratch. They are familiar with computer hardware design, memory, and the inner workings of computers.
Programmers spend the majority of their time in front of a computer terminal, and work in clean, comfortable offices. Telecommuting is becoming more common, however, as technological advances allow more work to be done from remote locations.
Most computer programmers work about 40 hours per week. Long hours or weekend work may be required, however, to meet deadlines or fix unexpected technical problems. About 4 percent work part-time, compared with about 15 percent for all occupations.
Like other workers who spend long periods in front of a computer terminal typing at a keyboard, programmers are susceptible to eye strain, back discomfort, and hand and wrist problems, such as carpal tunnel syndrome.
On the Job
- Correct errors by making appropriate changes and rechecking the program to ensure that the desired results are produced.
- Conduct trial runs of programs and software applications to be sure they will produce the desired information and that the instructions are correct.
- Compile and write documentation of program development and subsequent revisions, inserting comments in the coded instructions so others can understand the program.
- Write, update, and maintain computer programs or software packages to handle specific jobs such as tracking inventory, storing or retrieving data, or controlling other equipment.
- Consult with managerial, engineering, and technical personnel to clarify program intent, identify problems, and suggest changes.
- Perform or direct revision, repair, or expansion of existing programs to increase operating efficiency or adapt to new requirements.
- Write, analyze, review, and rewrite programs, using workflow chart and diagram, and applying knowledge of computer capabilities, subject matter, and symbolic logic.
- Write or contribute to instructions or manuals to guide end users.
- Investigate whether networks, workstations, the central processing unit of the system, or peripheral equipment are responding to a program's instructions.
- Prepare detailed workflow charts and diagrams that describe input, output, and logical operation, and convert them into a series of instructions coded in a computer language.
Companies That Hire Computer Programmers
Explore what you might do on the job with one of these projects...
- A Box Office Disappointment: Why the Book is Always Better than the Movie
- Artificial Intelligence: Teaching the Computer to Play Tic-Tac-Toe
- Bit Depth, Colors and Digital Photos
- Circles, Tangent Lines and Triangles
- Color Profiles
- Color Saturation
- Combining Computer Science and Math: Circumscribing a Circle about a Triangle Using the Geometry Applet
- Combining Computer Science and Math: Inscribing a Circle in a Triangle Using the Geometry Applet
- Computer Sleuth: Identification by Text Analysis
- Create Your Own Chemistry Color-analysis Tools
- Creating a Video Game for the Blind
- Customize Your Own Drum Set!
- Devising an Algorithm for Solving Rubik's Cube
- Digital Image Processing
- Digital Photo Contrast
- Digital Photo Resolution
- Digital Voice Analysis
Do you have a specific question about a career in Computer Science that isn't answered on this page? Post your question on Science Buddies Ask an Expert Forum.
State employment service offices can provide information about job openings for computer programmers. Municipal chambers of commerce are an additional source of information on an area’s largest employers.
Further information about computer careers is available from:
- Association for Computing Machinery: www.acm.org
- Institute of Electrical and Electronics Engineers Computer Society: www.computer.org
- National Workforce Center for Emerging Technologies: www.nwcet.org
- University of Washington Computer Science and Engineering Department:www.cs.washington.edu/WhyCSE
- BLS. (2009). Occupational Outlook Handbook (OOH), 2008-09 Edition, Bureau of Labor Statistics. Retrieved May 1, 2009, from http://www.bls.gov/oco/
- O*Net Online. (2009). National Center for O*Net Development. Retrieved May 1, 2009, from http://online.onetcenter.org/
- Net Industries. (2009). Computer Programmer Job Description, Career as a Computer Programmer, Salary, Employment - Definition and Nature of the Work, Education and Training Requirements, Getting the Job. Retrieved August 25, 2009, from http://careers.stateuniversity.com/pages/199/Computer-Programmer.html
- Net Industries. (2009). Meet a Computer Programmer. Retrived August 25, 2009, from http://careers.stateuniversity.com/pages/868/Meet-a-Computer-Programmer.html
- Engineer Your Life. (2009). Engineer Your Life: Tara Teich. Retrieved August 11, 2009, from http://www.engineeryourlife.org/cms/inspiringwomen/
We'd like to acknowledge the additional support of: