Computer programmers are the builders of the computing world. They translate software design into code that computers can read, crafting the operating systems and software applications consumers use every day. People’s interaction with computers is at an all-time high—familiar desktop models provide a constant stream information and entertainment, while complex systems perform countless behind-the-scenes tasks. The demand for computing power is only growing, opening more career possibilities for people interested in computer programming. Read more to learn about how to enter this profession – including degree and college options – as well as career trends and salary information.


What Does a Computer Programmer Do?

Computer Programmer Career Basics

Computer programmers turn concepts into reality. After a developer creates a basic software program, a programmer creates the instructions, or code, to make that program function. Programmers may create software to be run on personal computers, tablets, smartphones or automated systems used in manufacturing. With the explosion of smartphone technology, mobile applications are increasingly important, as are software-as-a-service (SaaS) packages, which drive Internet commerce. Once a program is functional, programmers may also be responsible for testing for bugs, removing errors and installing updates. Programmers also design the user interface, which is the part of the program that consumers see and interact with.

Discover your career fit

With Lantern’s Career Quiz, you can be matched to career options that align with your personal characteristics. Take the free Career Quiz

Computer Programmer Salaries and Job Outlook

Salary Details

According to the Bureau of Labor Statistics, the median income for computer programmers in 2014 was $77,550, up more than $3,200 from 2012, a rate that significantly outpaced inflation. Those in the top 10 percent earned over $127,000 a year. Even those in the bottom 10 percent earned more than $44,000, a wage that still put them well above the national average for all occupations. Of course, average salary varies by state—as does the cost of living. Programmers in Washington, New Mexico, Colorado, Washington, D.C. and California can expect to earn more than their peers on average.

The map below shows details about the 10th, 50th and 90th percentile of earners for each state.

State

Job Prospects for Programmers

Although jobs for computer programmers are only expected to increase at a modest rate of 8% by 2022, it is also predicted that 1 million computer programming jobs will go unfilled by 2020, meaning that demand is significantly outstripping supply. Since practically all industries require software services, jobs for computer programmers should increase at a decent clip. Specifically, many firms look to Internet-based applications as a way to lower costs while simultaneously reaching customers in their homes. The boom in the healthcare sector also bodes well for computer programmers, specifically those who hold a bachelor’s degree or higher and can work in several programming languages.

The states expected to experience the greatest percentage change in job growth between 2012 and 2022 are:

Here are the Stats:

1. Louisiana
33%
2. Wyoming
30%
3. Washington
24%
4. Colorado
21%
5. Utah
21%
6. Indiana
16%
7. New Hampshire
16%
8. Georgia
15%
9. Montana
15%
10. Iowa
14%

Of those states, Washington is projected to add the most actual jobs, with 3,990 more positions existing in 2022 than in 2012.
Select a state below for more information about employment and job growth for computer programmers.

Steps to Becoming a Computer Programmer

Step 1
Earn a Degree
While some employers only require an associate degree, the Bureau of Labor Statistics reports that most company recruiters prefer applicants who have graduated from a four-year college. However, a two-year computer programming degree is useful for students who need to attend a community college for financial reasons. It’s also a good way for students to determine their level of interest in the field while completing prerequisites for the major. Some students take jobs in the technology field after earning their associate degree; others use it as a springboard for a four-year program. A bachelor's degree enables students to diversify their skill set by learning several programming languages. In addition, students planning to work in a specific industry, such as health care or accounting, can take courses in that field.
Step 2
Choose a focus
While working toward a bachelor’s degree, students will get a sense of what aspect of computer programming most appeals to them. It’s at this stage that they begin leaning toward systems or applications, become interested in networks or databases, and get a feel for what extent they wish to work with hardware.
Step 3
Keep learning
Since the technology industry is constantly evolving, it’s essential that workers in this field stay abreast of the latest innovations. To remain competitive in the job market, computer programmers should head back to class, getting additional training to build competency in both emerging languages and updated versions of existing ones. Equally important, earning an advanced degree can qualify programmers for more senior roles. They can advance to become software developers, computer systems analysts or information systems managers.

Levels of Computer Programming Degrees

A bachelor’s degree is usually the minimum educational requirement in this field, as it demonstrates to employers that students have not only a broad range of experience with programming languages and concepts, but also that they have developed the problem-solving skills that are vital to this type of employment. However, there typically aren’t actual computer programming degrees available past the associate degree level. Instead, programming is included as an integral component in a bachelor’s degree in a related area, such as the ones mentioned above—software engineering, computer science, information technology, information systems security and computer engineering—or a similar field.

Associate Degrees

Students who are interested in programming can always start with an associate degree, where they will learn fundamental programming skills that underpin a degree at any level. They will receive practical preparation for entry-level information technology (IT) positions as computer programmers, Web developers and database designers. By the end of the program, which typically lasts two years, students should be able to analyze what end users need, and then design and code programs to fit these needs. As part of their training, they learn to test and debug applications to make them more efficient and functional, and to match appropriate programming languages with project specifications. Additionally, students will gain a working knowledge of computer systems and technology, as well as get hundreds of hours of practice using multiple programming languages, designing databases and creating Web applications.

Computer programming relies on logic, so students will be expected to develop both their math and problem-solving skills in concert. For students who choose not to continue on to a bachelor’s degree, such skills will help guide their future learning as they build their knowledge on-the-job, becoming proficient in specific programming languages. Although every degree program is different, the example courses below show the types of skills students can expect to gain at the associate degree level.

Introduction to Computing

This course provides an overview of various computer systems, from hardware and software applications to operating systems; it is designed for students with minimal subject knowledge, so more advanced students can sometimes test out.

Interior Design Skills & Knowledge Gained

Understand the history of computing Use software for word processing, spreadsheets, databases and presentations Be able to use computers in business and educational settings

Programming Fundamentals

This course introduces students to the logic of programming, laying the groundwork for students to learn specific programming languages in-depth in future classes.

Skills & Knowledge Gained

Use commands to manage operating system files Design and implement basic algorithms using a programming language

Java Programming/Data Structures

This course introduces object-oriented programming techniques as a method of structuring software. It also introduces students to Java, a versatile and widely used programming language.

Skills & Knowledge Gained

Build JAVA programs Test and debug JAVA programs to ensure they function as intended

Computer Programming - C++

This course covers C++ programming language concepts, including control structures, arrays and strings.

Skills & Knowledge Gained

Design and code basic programs using C++ Test and debug programs to ensure proper functionality

Bachelor’s Degrees

A computer science degree is a common choice for aspiring high-level programmers. Computer science students who earn a Bachelor of Science (BS) degree learn the fundamentals of computer programming as well as the mathematical and scientific principles that provide the underpinnings. Specifically, students become proficient in discrete math—a branch of mathematics that deals with objects that have distinct values—as well as computer organization and architecture, algorithms, programming and software design. Some schools offer Bachelor of Arts (BA) programs in computer science, which typically provide more general education and less math and science. However, each school is different, so students should research the options to determine which programs’ requirements best fit their needs.

In addition to coursework, most schools require students to conduct a culminating project that integrates what they have learned over the course of the degree. Typically, students meet regularly with an adviser who gauges their progress and offers advice and guidance. They then present their results in a final paper or presentation.

The bachelor’s degree courses listed below show the types of skills students can expect to gain at this level:

Algorithms

Students in this course learn how to design and analyze algorithms for correctness and efficiency.

Skills & Knowledge Gained

Create algorithms that sort lists and search databases for specific criteria Use algorithms to break down problems and find optimal objects Create graphs using algorithms Structure data efficiently

Discrete Mathematics

This course introduces basic techniques to solve problems with a countable set of possibilities. It covers set theory, difference equations, counting techniques, graphs and algebra.

Skills & Knowledge Gained

Use math and inductive reasoning to solve problems Determine the size of complex objects through advanced counting techniques Create and communicate math proofs Apply algorithms to problems

Computer Architecture

This course covers how computer hardware and software programs work together, starting with the basic logic of how systems and components interact, and proceeding to high-level programming languages.

Skills & Knowledge Gained

Use digital representation and digital logic Understand how computers are internally structured and organized Use machine, assembly and programming languages in tandem

Computer Networks

This course introduces students to Internet-based communications and delves into solving problems related to network size, security and access.

Skills & Knowledge Gained

Design network protocols Scale up and secure communication networks

Master’s Degrees

As with a bachelor’s degree, there is no specific computer programming degree at the master’s level. That does not mean, however, that students interested in programming don’t have more advanced options. In fact, computer science degrees at the master’s level provide a breadth of academic knowledge while allowing students to gain depth in a specific area.

Typical master’s programs in computer science require students to take courses in multiple areas, including math and theoretical foundations, artificial intelligence, and computer systems. Students might specialize in one of these areas, or they might choose to focus on another area such as computer and network security, database systems, human-computer interaction or scientific computation. Advanced programming skills come into play with any of these specializations. Specifically, graduates with a master’s degree in computer science will be thoroughly trained in the following skills:

Utilizing software development tools to design, code, test, and debug programs

Courses in computer architecture, operating systems and computer networking will provide students with an understanding of how computer systems work. At the master’s level, they go several steps farther by giving students practice in building functional software and networks that fit into such systems.

Designing and implementing algorithms

Computers can perform tasks at a pace that far outpaces humans—but only if they’re programmed correctly. That’s where complex algorithms come in. The giant technology company Google, for instance, uses one to optimize the results returned by its search engine, making it more likely for users to see the results that matter to them. Master’s students will work on similar problems, learning to apply mathematical methods to compute results.

Leveraging existing software to develop new software systems

There’s no point in reinventing the wheel, and no one knows this as well as computer programmers. Seldom do they want or need to spend the time, effort, and money building a program from scratch when an existing one will do the job. Students will be well-versed in established software and systems and are expected to use their proficiency to build large systems that can run multiple applications.

Similar Degrees

A degree or certificate in computer programming is just one way to enter the profession. Earning a degree in a broader technology field allows students to explore other computer concepts even as they become expert programmers. Because programming requires a solid foundation in math, logic and computer engineering and architecture, the following degree options are ideal paths for aspiring computer programmers:

Computer Programming

Online Computer Programming Degrees: What to Look For

Computer programming degrees are ideal for online study. The only equipment needs are a high-speed Internet connection and the appropriate software. However, that doesn’t mean students should send a tuition check to the first school they find. Online schools can vary considerably in terms of course offerings and overall quality. Prospective online students should first make sure the program has the following:

Student Engagement

Computer programming requires a lot of time in front of a computer screen, which is why some people like it. But students should be careful to ensure they have opportunities to interact with faculty and other students, which will serve them well in their future careers. Many projects are behemoth affairs, employing a host of programmers to work on the various parts, and employees will be expected to interact with a variety of team members. Students should check that their chosen distance program has integrated participation built into the curriculum.

Archived Lectures

One of the advantages of taking classes online is that most modern computers have webcams that are easily able to record lectures for further use. Many schools take advantage of this and archive their lectures so that students can review them when they are studying or have trouble understanding a concept or figuring out a problem.

Proper Accreditation

Accreditation is an important benchmark for all programs because it ensures the school and/or program has met rigorous academic standards. On top of that, it’s absolutely essential for students who want access to federal financial aid. With a four-year online computer science degree easily costing $20,000 or more depending on the college, financial aid can be a lifesaver.

Components of a Successful Career
as a Computer Programmer

Computer Programmer Skills

In addition to knowledge of multiple programming languages, computer programmers must be detail-oriented. When it comes to writing and debugging code, even one misplaced character can cause a program to malfunction.

Being a critical thinker is essential, as there are usually multiple ways to approach a programming problem, some more efficient or elegant than others.

Programmers are also focused and patient, since they may be tasked with writing line after line of code for long periods of time or conducting several tests to properly evaluate the quality and performance of a program.

Because computer programmers are often required to write code based on a client or employer’s request, it’s important that they be active listeners and strong communicators. Lastly, an understanding of how people typically use computers helps when designing user interfaces.

Computer Programmer Credentials

Programmers can earn certifications in both languages and platforms. Most major systems vendors also offer certifications. For example, Oracle and Microsoft offer exams that benchmark programmers’ abilities in specific areas.

Available certifications include:

  • Java
  • GIAC Secure Software
  • SAS Certified Base Programmers
  • SAS Certified Advanced Programmers

Prospective employers may require certifications for hiring, while programmers who earn them in their current positions can prove their readiness to be promoted to a better job within the company.

Tools and Technology for Computer Programs

Computer programmers are the original techies—creating and using technology every day. They work with servers and mainframe operating systems, as well as a host of software including:

Source code editing software Writing code requires more rigorous software than a word processing application. Some popular programs include Notepad++, Sublime Text and TextMate.
Compiler software Takes source code written in one programming language and translates it to another.
Database management systems software Used for managing large volumes of information. Programs include Microsoft SQL Server, MySQL software, Oracle and Pick software.
Development environment software Software such as Microsoft Visual Basic and Xerces2 Java Parser provides a virtual test kitchen for programmers to develop and refine software before its release.

Spotlight Career Interview

Sean Madden is the executive managing director of client experience at Ziba Design in Portland, Oregon. Before his current position, he spent eight years in Silicon Valley as a programmer and associate creative director. Sean works to improve how clients experience technology, and also teaches at the Yale Executive School of Management.

What prompted you to go into computer science? I chose computer science because in high school I spent quite a lot of time tinkering with computers, building them and constructing my own hardware. I felt like it would be a good continuation. I found that it was dramatically different than my expectations, but ultimately I enjoyed it.
You were working on the hardware side of things. Were you interested at all in programming? I ended up getting a degree in programming. I just had a general interest in computers, so I signed up for computer science, and rapidly came to realize what programming and the art of computer science is, and it was very different from my previous experience with computing. But I enjoyed it, so I ended up selecting it as a major.
In your current work, how do you work with programmers, and what do you look for when you’re hiring a programmer? Ziba is a creative firm. Increasingly, a huge part of our workload—probably 65 to 70 percent of our work—touches on a digital experience in some way. For us, a programmer is a person who brings our vision to life and makes sure it’s out in the world in the way we’ve imagined it. They can work in a lot of different contexts because the world we operate in is increasingly complex and connected. So we need people that are relatively up to speed, but also we need people that value design and understand that while there are always a million ways to program something, what we want are people that are invested in achieving the vision, not necessarily doing something as quickly as possible. Those people are rare.
What are some cool job opportunities that a lot of people may not know about if they’re just starting out? I think there’s no better degree right now to graduate with than a computer science degree. Essentially any company that starts today has to also be a software company. Almost everyone is moving a product or service to market. But the thing that powers that ability is a robust appreciation and understanding of software. You can be a programmer in literally any industry. You can be in transportation, hospitality, consumer electronics, or sports entertainment. Everybody needs software. So programmers are becoming entrepreneurs. I think what’s going to happen in the future is that fluency in software is going to be as important to companies as fluency in finance and marketing.
It seems like you were perfectly placed to go into the biggest industry of our time. Graduation was tough because the bubble burst in 2002. So we were in our senior year working on our theses, watching the ship we were going to sail sink in the harbor. My school took a liberal arts approach to computer science. We were taught how to think and be lifelong learners. And so it wasn’t about being awesome in Java. It was about using Java to understand the principles. When I got my first job actually as a programmer, I had three weeks to teach myself a programming language so that I could come into my job and actually contribute.
So, you were able to adapt pretty quickly. In computer science, when your secret super power is you’re also a great communicator and conductor of ideas, you have a skill that the gnarly computer science people tend to not have. So when you look at why people have had success, it partially is the computer science, but it’s also the ability to write, the ability to communicate and the ability to collaborate.

Related Occupations

For people who like computers but aren’t necessarily interested in the programming side of things, or who want to work on a larger scale than personal computers and mobile phones, there are several other careers to choose from:

Related Careers at a Glance:

Computer Engineer
Median salary: $108,420
Computer Network Architect
Median salary: $98,420
Computer Systems Analyst
Median salary: $82,710
Database Administrator
Median salary: $80,280
Electrical Engineer
Median salary: $91,410
Mechanical Engineer
Median salary: $83,060
Software Systems Developers
Median salary: $102,880
Web Developer
Median salary: $63,490

Sources: Bureau of Labor Statistics, Payscale

What do related computing careers pay?

Computer programmers write code and work with software applications and systems, but the field of computer science in general offers more extensive opportunities. Individuals who have a mechanical or engineering bent may gravitate toward working with hardware, while others will excel in network or information technology positions. In any case, people with a computer science background earn salaries much higher than the national average. Check out the annual wages for the 10th, 50th, and 90th percentile of earners in the following occupations: