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.
Programmers fall into two camps: applications programmers and systems programmers. Applications programmers create and upgrade software applications and customize programs to fit a certain context, whether it be patient management software at a dentist’s office or translation software for a mobile phone. Systems programmers create operating systems. They take a holistic approach to how different applications work with the computer. Applications programmers sometimes bring in systems programmers to make sure their programs will be compatible on an operating system.
Computer programmers’ primary responsibility is to write code, so they must know at least one programming language. Since different languages are suited to different applications, most programmers learn multiple languages or more versatile languages. Programmers also update code for programs to make them more secure and/or functional. They routinely test code by looking for errors — sections of code that the computer does not understand — and debugging programs.
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.
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:
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.
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.
|School Name||More Information|
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.
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.
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.
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.
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.
This course introduces students to the logic of programming, laying the groundwork for students to learn specific programming languages in-depth in future classes.
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.
This course covers C++ programming language concepts, including control structures, arrays and strings.
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:
Students in this course learn how to design and analyze algorithms for correctness and efficiency.
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.
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.
This course introduces students to Internet-based communications and delves into solving problems related to network size, security and access.
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:
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.
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.
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.
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:
Use the database below to browse a comprehensive list of schools with degrees related to computer programming.
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:
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.
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.
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.
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.
Available certifications include:
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.
|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.|
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.
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.
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.
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.
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.
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.
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.
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:
Sources: Bureau of Labor Statistics, Payscale
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: