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
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
- Can You Crowdsource a Better School Environment?
- 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!
- Design Your Own Video Game
- Devising an Algorithm for Solving Rubik's Cube
- Digital Image Processing
- Digital Photo Contrast
Do you have a specific question about a career as a Computer Programmer that isn't answered on this page? Post your question on the 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. Retrieved 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: