Computer programmers work with computer software engineers to write the complex coded instructions that give computer programs and Web sites their functionality.

Computer programming degrees teach students the computer languages, like C, C+, and Python, and the syntax necessary to make them come to life.

Many programming degrees also teach the basic elements of software engineering; talented computer programmers often become software engineers.

Computer software engineers are responsible for the applications that make our computer devices functional in thousands of different ways; they design and program all types of computer software, from video games to business tools to iPhone apps.

Computer software engineers generally fall into one of two groups: applications engineers and systems engineers. Applications engineers design and develop individual software programs, while systems engineers synchronize and optimize the diverse software systems of a particular business or organization.

Advanced and current training is critical for computer software engineers and programmers alike. These professionals work in a dynamic, complex field that incorporates sophisticated mathematics, engineering, and linguistic principles. Because of that complexity, computer software professionals are generally very highly educated; over 70% of programmers and 80% of engineers have earned a bachelor's degree or higher, according to the Occupational Information Network.

Computer Programming Career Opportunities

As the internet becomes an accessible and central element of the business and entertainment world, computer programmers and software engineers familiar with Web-based applications and internet-related software will have excellent career opportunities, according to the BLS.

While the occupational group that includes both engineers and programmers is expected to experience strong overall growth, driven by robust job prospects for computer software engineers, computer programmers are actually predicted by the Bureau of Labor Statistics to experience a slight decline in employment from 2008 to 2018, largely due to outsourcing and the development of user-friendly programming software.

According to the Bureau of Labor Statistics, there were 426,700 working computer programmers in 2008. The field is expected to lose about 12,000 jobs over 10 years, for a 2018 total of 414,400 positions. That's a moderate decline of about 3%.

Computer programmers are pedicted to have slightly negative occupational growth from 2008 to 2018. Source: Bureau of Labor Statistics

Real job opportunities for computer programmers will be better than that negative estimate. According to the Occupational Information Network, a project of the Department of Labor's Employment and Training Administration, there will be 80,300 positions available to qualified programmers from 2008 to 2018. That figure takes into account existing positions vacated by retirement, career change, early termination, etc.

According to the Bureau of Labor Statistics, there were 909,600 working computer software engineers in 2008. The field is expected to add 295,200 jobs over 10 years, for a 2018 total of 1.2 million positions. That's a growth rate of about 32%, much faster than the average for all professions.

Computer Software Engineers are expected to have a robust,  30% growth rate from 2008 to 2018. Source: Bureau of Labor Statistics

Once again, real job opportunities for computer software engineers will be better than even that optimistic estimate. According to the Occupational Information Network, a project of the Department of Labor's Employment and Training Administration, there will be 371,800 positions available to qualified computer software engineers from 2008 to 2018. That figure includes those 295,200 predicted new positions AND positions vacated by retirement, career change, early termination, etc.

Computer Programming Earnings

Earnings for computer software engineers and programmers are generally excellent; with median wages more than double the national median.

According to the BLS, computer programmers earned median annual wages of $69,629 in 2008. The middle 50% of the field earned between $52,640 and $89,720, while the bottom 10% earned less than $40,080 and the top 10% earned more than $111,450.

Computer applications software engineers were significantly better paid: they earned a yearly median of $85,430 in 2008. The middle 50% of the field earned between $67,790 and $104,870, while the bottom 10% earned less than $53,720 and the top 10% earned more than $128,870.

Computer systems software engineers made the most, earning median annual wages of $92,430 in 2008, according to the BLS. The middle 50% of the field made between $73,200 and $113,960 annually, while the bottom 10% made less than $57,810 and the top 10% made more than $135,780.

Earnings for computer programming and software engineering professionals were generally excellent in 2008. Source: Bureau of Labor Statistics

Earnings will be best for candidates with advanced postsecondary degrees in fields like computer software engineering, computer programming, and computer science, and for those willing to relocate to tech-heavy areas like parts of California, New York, and Pennsylvania.

Computer Programming Educational Benefits

According to the Bureau of Labor Statistics, a growing number of employers expect job candidates to have a bachelor's degree, though a limited number of positions require only an associate's degree.

According to the Occupational Information Network, the majority of computer programmers aged 25 to 44 – 73% – have a bachelor's degree or higher. 22% have some college, including associate's degrees and diplomas. The remaining 6% have a no formal postsecondary education.

Over 70% of computer programmers have a bachelor's degree or higher. Source: Occupational Information Network

Even more computer systems and applications software engineers have a bachelor's degree or higher – 85%. 13% have some college, including associate's degrees and diplomas. The remaining 2% have a no formal postsecondary education.

85% of Computer Software Engineers have a bachelor's degree or higher. Source: Occupational Information Network

Coursework in computer programming degree programs generally includes elements of computer science, information technology, programming language, and other applied disciplines.

Even if you're a self-trained expert in software applications and programming languages, completion of a degree demonstrates to potential employers that you are responsible, results-oriented, and employable. According to the National Association of Colleges and Employers (NACE), graduates of computer science programs received first salary offers averaging $61,407 in 2009.

Computer Programming Degrees Online

Technology programs are uniquely suited for online education; students learn not only from their assignments but from the format of their education. Students enrolled in an online computer software engineering program or other related online computer science program can take an assignment over email, complete it on their personal or work computer, and submit it through the internet. Not only is the process more streamlined than that at a ground school's technology program, it is more representative of the real-world business dynamics.

The best online computer software engineering programs provide an education as good as one pursued at a local ground school, in a more flexible and accessible format that may be better suited to working students. As with all expensive and important educational decisions, do your research when choosing an online software engineering program at any level. Is the school accredited? Do credits transfer? What are people saying about this program specifically and this school in general? The answers to many of these questions can be found on this website, but don't be afraid to ask your admissions counselor difficult questions.

See our "How to Choose" section for a more detailed list of things to consider and questions to ask.

Computer Programming Skills and Abilities

Both software engineers and computer programmers work almost exclusively on computers. Tasks and necessary skill sets vary widely depending on employer and industry.

Computer programmers focus on the manual programming of computer software, a task that can be very repetitive. They use computer languages like C, C++, and Python to realize their own design visions or those of software engineers with whom they work. These languages are taught in online computer software engineering or programming programs, but any prior training or experience helps.

Because of the complexity of their tasks, computer software engineers and programmers must be detail-oriented – a single missed letter of code can ruin the function of an entire software system. If an error is made, computer software engineers and programmers should be able to quickly and accurately troubleshoot their projects.

Deductive reasoning and complex problem solving abilities are especially important for software engineers; while programmers are mostly concerned with the encoding of commands into appropriate languages, software engineers have many of the same responsibilities as traditional mechanical engineers. Like their mechanical counterparts, software engineers must have a clear understanding of the individual functions of the programs on which they are working, and should be able to maximize efficiency and effectiveness in the sum of those functions. Because they are creating software that will be used by other people, software engineers must consider ease-of-use.

Because they often design software for specific industries or businesses, domain knowledge of the industry for which they are designing is especially useful for computer software engineers. For example, if an engineer is designing investment software for a bank, some knowledge of the financial and banking systems is very valuable.

Computer software engineers and programmers alike should be acute critical thinkers and investigators of potential flaws in the programs they design. Because they often work as part of a development team, they should be able to work well cooperatively, and take the lead when necessary.

Computer Programming Qualification and Advancement

Graduates of computer programming programs of all levels may be qualified for entry-level positions as Computer Programmers or Computer Software Engineers, but most software professionals have a bachelor's degree or higher. Prerequisites for software engineering positions are usually even more stringent.

Additional Information

The Institute of Electrical and Electronics Engineers Computer Society maintains a Web site at http://www.computer.org/.

The National Workforce Center for Emerging Technologies maintains a Web site at http://www.nwcet.org.