The Bureau of Labor Statistics (BLS) projects that employment within the field of computer and information technology (IT) will increase by 13% between 2016 and 2026, nearly double the average rate of growth for all other occupations. On top of strong job prospects, this field offers exceptional salaries; in 2018, computer and IT professionals earned a median salary of $86,320, roughly $48,000 more than the national median salary.

Earning a degree in computer programming may qualify you for a variety of careers such as software developer, information security analyst, database administrator, or network administrator. While most of these positions require a bachelor's degree, you may need a graduate degree or additional professional certification to take on supervisory and managerial roles within the field.

This page provides an overview of computer programming careers, including information on the types of degrees offered, job availability, and interviews with computer programming professionals.

Skills Gained in a Computer Programming Program

You can gain many of the skills needed for a career in computer programming on your own through online tutorials, self-instruction, or guided practice. However, a college degree or professional certification validates these skills to future employers or clients. Formal education or training also provides opportunities to develop nontechnical skills in areas like project management or budgeting -- big-picture expertise that may lead to career advancement. Below, you can read about five skills essential to the success of aspiring computer programmers.

Coding

Computer programmers must know at least one programming language such as Java, Swift, Python, or C++. These languages allow programmers to create instruction sets or algorithms that direct computers to perform calculations based on inputs and outputs. Software applications comprise many of these instruction sets. Most companies seek programmers who can code in two or more languages.

Logic

Success as a computer programmer relies heavily on conditional thinking, commonly referred to as "if this, then that." Programmers use logic to create adaptability and interactivity within a computer application. Logic also plays a key role in troubleshooting code errors and other problem-solving tasks.

Problem-Solving

Meeting needs and solving problems drives the work of computer programmers. A small error in a piece of code can sometimes lead to catastrophic failure. Once programmers develop code, they maintain and improve it to add features and fix bugs, some of which occur in only specific and rare circumstances.

Research

Programmers need strong research skills for a variety of tasks, including learning new computer languages. They also need the ability to research solutions for both new issues and errors in previously written code.

Patience

All coders and programmers make mistakes. Because of the precise nature of the work, identifying and correcting errors can take many hours. In some circumstances, an entire project can be scrapped when a solution cannot be found or is too costly or unworkable. Patience and perseverance help programmers deal with this frustration and continue making progress toward their goals.

Why Pursue a Career in Computer Programming?

A career in programming can be quite lucrative. According to the BLS, the top 10% of earners in computer programming, typically those with the most education and experience, commanded salaries in excess of $134,630 in 2018.

Programmers who advance in their careers may become computer systems analysts or software developers, and these positions pay higher salaries. With the right combination of experience and training, programmers may take on roles as computer and information systems managers. In 2018, the median salary for these supervisory positions approached $143,000.

The top 10% of earners in computer programming, typically those with the most education and experience, commanded salaries in excess of $134,630 in 2018.

While the demand for computer programmers may decline due to increased international competition, the need for IT specialists and leaders continues to rise. For example, the BLS projects that employment for database administrators will grow by 11% from 2016 to 2026.

Finally, computer programming jobs provide the opportunity to work at the cutting edge of technology. For example, you may use your coding skills in developing a mobile wellness application that helps people lead healthier lives. You could also contribute to the design of an artificial intelligence program or robotic control systems used in space exploration.

How Much Do Computer Programming Graduates Make?

Many factors can affect your earning potential as a computer programmer. For example, programmers with a bachelor's generally make more than those with just an associate degree. IT professionals whose management skills allow them to lead the work of a project team often command even higher salaries.

Your salary may also depend on your geographic area and specific industry. For example, computer programmers working for software publishers earned a median salary of $103,530 in 2018, while those who wrote code for manufacturing companies made approximately $83,000. Finally, as can be seen in the table below, pay generally increases in line with experience.

Interview

Austin Norby

Austin Norby

Director of Cyber Initiatives

After four years as a government employee with the National Security Agency where Austin Norby worked on cryptanalytic products, dabbled in data science, acted as an exploitation analyst, championed innovative ways to accomplish missions, and reverse engineered embedded devices, he joined Blue Star Software, where he is the director of cyber initiatives.

Austin wears many hats, including technical presenter, talent acquisition specialist, course creator, teacher, and software engineer who still develops capabilities for the intelligence community. He also holds industry-recognized accreditations such as OSCP, OSWP, and CISSP. In his spare time, Austin enjoys honing his infosec skills on CTFs, reading, gaming, and eating incredible food.

Why did you decide to pursue a career in computer programing? Was it something you were always interested in?

Interestingly enough, it was not something I was always interested in. I dabbled with computers at home when I was younger and wanted to learn, but I was also easily sidetracked with school, sports, and friends. By the time I attended college, I was set on getting a degree in mathematics, and one of the required courses was intro to programming 1. I was excited to take the course, but I had no idea that it would lead to a career. This course was really tough because we started by learning Lisp. I've had to use it once since and I still think it's an awful language, ESPECIALLY when you're just learning how to program.

What really solidified my pursuit of a career in computer programming was the mixing of mathematics and computer science. This led to my interest in encryption and computer security, which ultimately led to my first job with the Department of Defense. One thing that students should make sure to keep in mind is that the intro courses can be fun and easy, but there is always a class that "weeds out" less capable students. What got me through the "weed-out" class was hard work, no doubt, but also I loved the challenge of getting something to work. There are few things as satisfying as pouring your heart and mind into a challenge and finally seeing the program compile, run, and return the result you were expecting. That trait is necessary to be successful in computer programming.

What is so valuable about earning a degree in this field right now?

The answer to this question is very simple: job flexibility and security. Anyone who can program can be useful to any business currently because of the nature of programming -- it can be applied to any field and it's an exponential technology. Breaking this down further, a business has a product or service and of course requires financing and communication. Programming can address all of those needs and do it quicker than any human so long as the problem is understood well enough. The real difficulty currently is breaking down problems to their basic components and understanding them well enough in order to build them back up as programs. Some systems lend themselves to this very well, such as accounting, scheduling, and calculating. Other problems can be broken down into simple components, but computers are still not great at solving them due to computer vision or inherently difficult problems like the traveling salesman problem. Programming can create a website, or a product, or a schedule, or process payments, or send information at a percentage of light speed anywhere around the globe.

This is also what I mean by an exponential technology -- it can grow and compound on itself while an individual is putting in a linear amount of effort over time. So what does this mean for flexibility and security? Computer programmers have the flexibility to solve many different problems over their careers by learning one technology: programming. You could be an intern at a biochemical lab running analysis on the lab results. Then you could become an enterprise web developer and give unprecedented access to your company's data to internal teams to improve products and services. Then you could become a cloud administrator to make computing possible for anyone in the world. And to wrap up your career, you could join a small startup and create an app that you're passionate about. All of these jobs exist for computer programmers, and the jump between them is simply a matter of learning any missing technologies and whether the company uses your preferred programming language. It's hard to have that kind of flexibility in a career in other professions.

Lastly, let's talk about job security. The job security for programmers is different than the old-school job security that existed many years ago. Job security is more like job availability. Programmers may have temporary jobs for six months to two years and then choose to leave, or the project is transferred to a new team, or the job is cancelled. This is great because it leads into the flexibility I just mentioned, and there will ALWAYS be jobs like that around. A project here, a project there, and therefore the job search becomes much less stressful because it's not a question of if, but when, where, and what will I be doing.

Can graduates of computer programing programs find careers all over the country?

Absolutely! There are so many systems and processes that can and should be updated to modern levels of technology, and those businesses, all around the country, need to hire computer programmers in order to do that.

One point I will concede regarding my previous statement is getting an internship while you're in school. This can be more difficult because a lot of the developer jobs are full-time and really require about four years of hands-on knowledge in order to know enough to be valuable. This isn't a hard-and-fast rule, but from a business perspective, it might take more time and energy to create a project that is challenging and rewarding to the intern but provides enough value for the company after accounting for setup time, training time, hourly rate, and tear-down time after the intern leaves. If you're struggling to get an internship, don't worry -- that is not a setback and just requires that you take a different path. One of the best ways to stand out to a future employer is to create personal projects to show that you can and like to code.

The next question people ask is, "What personal projects should I be building?" You should be building anything that makes you excited to sit down and solve problem after problem until you have a working program that you are proud of. If you want to get into mobile programming, program an app that does a few things. If you want to get into web application programming, create a few "dummy" sites like a portfolio that a potential employer can visit and navigate. If you want to get into cybersecurity, join some Reddit threads, learn about security online, and participate in capture-the-flag (CTF) competitions (most are free). I also recommend that you read as much code as you can find. Reading other code will help you make your code better and give you "recipes" for solving problems that have already been solved.

Lastly, to address the actual question that was posed, you can do any of this from almost anywhere. Many companies are supporting quality telework/telecommute agreements and many companies have multiple locations across the country. Simply work with your recruiter or HR rep to figure out where would be the best place to put you given the company's goals and your goals.

What did your career trajectory look like after you graduated? How did you end up in your current position?

Starting about a year before graduation, I was able to secure an internship with a company that allowed for part-time work during the school year and full-time work during the summer. I cannot stress enough how much this boosted my career prospects. If something like that exists in your area, definitely apply for it! I worked throughout my last year and started with the Department of Defense (DOD) after graduation. I spent about four years with the DOD, moving around to experience and expose myself to all it had to offer. I worked with many different languages, technologies, and types of people and got exposure to a powerful mission.

During those four years after graduation, I did not stop learning. I studied for certifications, I read books, and I took classes at local schools. If there is one piece of advice for computer programmers specifically -- but really anyone in any industry -- it's never stop learning! For computer programmers, it's a dual-edged sword. There is so much to learn, from languages to technologies to operating systems to networking to mobile to cloud to you name it. However, the landscape evolves quickly, and a quality programmer must also pivot to learn or stop learning skills as the industry needs them. Learning a specific technology is never a bad decision, but you must not fall victim to the sunken cost fallacy; do not spend more time in a technology once you know it will no longer provide you, your employer, or your industry value.

What are the pros and cons of working in the industry?

First, we'll start with the pros. Currently in our industry, the pros are plentiful because of how many things are being transformed from old technology to new technology -- that provides many job prospects for computer programmers. Modernization of point-of-sale systems to the cloud, updating websites to use the newest JavaScript frameworks, and designing modern, fast, and user-friendly mobile apps are all very hot jobs right now. Along with the multiple job prospects and only a few people who can fulfill the demand on the industry comes rather high compensation. This is also location-dependent in many cases, but you certainly can pick your region in the U.S. and make your desired salary even if you can't necessarily pick your state and/or city.

Some of the cons come from what I just said; the highest salaries are concentrated in certain areas, so complete geographical freedom or choice might not be available. Programming also requires a dedication to learning. It is not a job you can do 9-5 for the next 40 years after graduation UNLESS you constantly learn new skills and apply them to your work.

What advice would you give to computer programing graduates seeking a job after graduation?

I tried to weave in advice in my above responses but I'll highlight some of my favorite advice below.

Never stop learning - seriously, I can't stress this enough. You will be so much more valuable having learned new skills in the context of older skills through your entire career.

Internships are not mandatory, programming projects are not mandatory, and writing the next unicorn startup app is not mandatory. Do what is available to you to show the world your ability to solve problems, code, and work in a team.

If you can't find a job immediately, keep looking and be willing to take remote positions or relocate for a short, fixed period of time to get the experience or company position you want. Then, work on finding your way back into your ideal geographical location.

Don't be afraid to fail. You will write bad programs, you will write inefficient code, and you will make silly mistakes throughout your career. That is INEVITABLE. Learn from it, add that technology to your list of technologies to master and conquer, and keep moving forward.

How to Become a Computer Programmer

Earn Your Degree

While you may qualify for some entry-level roles in computer programming or web development with just an associate degree, most positions require at least a bachelor's degree. Along with instruction in general education topics like English and social sciences, bachelor's programs in computer programming and computer science equip students with skills and knowledge in areas such as enterprise applications programming, algorithms and data structures, and the principles of cybersecurity. They may also help learners gain practical experience through internships and project-based learning.

For supervisory and managerial positions, such as director of information security or chief technology officer, many companies prefer to hire candidates with a master's degree. In addition to developing technical expertise, students in a master's program often study business administration topics like project management, organizational behavior, and financial analysis. Graduate students who wish to pursue a doctorate may be required to conduct research and summarize their findings in a master's thesis.

Finally, to stay abreast of new technological developments and approaches, computer programmers and other IT professionals often take advantage of continuing education opportunities throughout their careers. Professional associations like CompTIA and the IEEE Computer Society offer a variety of certification and credential programs.

How Many Years of College Does It Take to Become a Computer Programmer?

Most undergraduate degree programs in computer programming comprise 120 credits. Full-time students typically earn their degree in four years. Part-time learners, however, may need up to eight years to meet all of their program's graduation requirements.

Some strategies can allow you to graduate in less time. For example, if you already hold an associate degree, you may qualify to transfer up to 60 credits toward a bachelor's and finish your undergraduate program in just two years. Some colleges and universities also permit self-paced learning, meaning you can advance to the next level or course after demonstrating mastery of the competencies taught in the current class. While accelerated tracks often appeal to working professionals looking to earn their degree as quickly as possible, you need strong self-motivation and time-management skills to succeed in these programs.

Finally, most master's programs require 1-2 years of full-time study, and doctoral programs may require an overall time commitment of anywhere from 3-7 years.

Concentrations Available for Computer Programming Majors

Cybersecurity
A cybersecurity concentration prepares learners for jobs protecting sensitive data or investigating computer-based crimes and fraud. Classes within this concentration cover topics such as forensic digital analysis, system vulnerability identification, and applied cryptography and network security. Cybersecurity students also participate in "ethical hacking" projects to hone their skills.
Data Science
Data science involves the use of algorithms and various systems to draw new knowledge or insights from both structured and unstructured data. After completing coursework in machine learning and management systems, students pursuing this concentration often seek out careers in data analysis or database administration.
Artificial Intelligence
More and more technologies incorporate some form of artificial or machine intelligence to solve problems or perform their functions more effectively. As a result, learners specializing in artificial intelligence can enter a variety of careers in computer science while applying their expertise in human language technologies and advanced algorithm design.
Mobile Development
Mobile development entails creating applications and programs for handheld devices. Students who choose this concentration usually take classes in graphic design and application development for specific operating systems. Upon graduation, they may create apps for existing technology companies or launch their own entrepreneurial venture.
Business of Software
Rather than focusing exclusively on the technical aspects of computer programming, some students may select a concentration in the business of software. Here, they learn about subjects like microeconomic theory, financial accounting, and statistics for business management. This coursework prepares learners for roles leading IT teams, departments, and organizations.

What Can You Do With a Computer Programming Degree?

One of the benefits of a computer programming career is the diversity of professional opportunities in the field. Individuals with only an associate degree can qualify for jobs as web developers, computer support specialists, and entry-level programmers.

However, with a bachelor's degree in computer programming, you can take on more advanced roles including cybersecurity analyst and enterprise application developer. Students who supplement their programming skills with expertise in hardware may also become computer engineers or computer network architects.

Although not always a requirement, a master's degree may give you a competitive edge over other candidates for director and manager positions. Finally, a Ph.D. in computer programming prepares you for careers in academia or research in both the public and private sectors.

Associate Degree in Computer Programming

While an associate degree may allow you to obtain some junior-level positions in the IT field, it's not an ideal degree for those hoping to advance into roles as computer programmers and software developers. Instead, you should consider an associate degree in computer programming as a stepping stone to a bachelor's degree.

If you earn your associate degree at a public community college, you can often easily transfer these credits into a bachelor's program. This approach is also typically less expensive than earning all the required credits at a four-year college or university.

Computer Support Specialist

Computer support specialists offer technical assistance to users and organizations. For example, they may staff a computer helpline, answering questions about common issues and referring more serious problems to other technicians. They may also set up new equipment, perform regular maintenance, and install updates for computers and devices linked to their company's network.

Average Annual Salary: $53,470

Web Developer

Web developers design and build websites. They must often know how to write code using a programming language like HTML, XML, or JavaScript. Back-end developers focus on the technical infrastructure of a site, while front-end developers create a site's layout, graphic design, and the functionality of interactive elements.

Average Annual Salary: $53,470

Source: BLS

Bachelor's Degree in Computer Programming

A bachelor's degree is the standard educational requirement for most jobs in computer programming. Undergraduate programs provide advanced instruction in areas like programming logic; network security; and systems analysis, design, and integration. Students may also learn specific programming languages depending on their desired career path. For example, a student who wants to work in a healthcare IT department and manage the patient database for a large hospital may learn Structured Query Language (SQL).

Undergraduate programs also typically incorporate some form of experiential learning, such as an internship or capstone project. Students pursuing an online bachelor's in computer programming may compile a portfolio of work showcasing their new skills.

Software Developer

Software developers design computer applications and operating systems. They conduct needs assessments, draft the structure of new programs to meet those needs, and oversee the maintenance and ongoing testing of their products. Whether they write the underlying code or not, software developers need a strong background in computer programming to guide their work.

Average Annual Salary: $105,590

Information Security Analyst

Information security analysts protect an organization's computer networks and systems. They may actively monitor networks for security breaches, conduct penetration testing to discover potential vulnerabilities, or develop security standards for colleagues and users. Information security analysts typically need at least a bachelor's in computer programming or a related field.

Average Annual Salary: $98,350

Source: BLS

Master's Degree in Computer Programming

A master's degree in computer programming prepares you for managerial roles in IT. In addition to studying technical subjects such as parallel computing and software engineering, students in these programs often complete coursework in areas like personnel management, organizational development, and business law.

Some graduate students also complete either a thesis or capstone project. Thesis-track master's programs help learners develop skills in quantitative and qualitative analysis, positioning them for further studies or careers in research. Capstone projects, more common in practice-oriented programs, give students the opportunity to apply their learning to a real-world challenge in computer programming.

Information Technology Manager

Information technology managers oversee computer-related activities at an organization. They create budgets, hire and supervise staff, and collaborate closely with senior leadership. They also ensure the availability of data through management information systems and lead cybersecurity efforts. Many companies prefer to hire candidates with a master's degree in business administration or a relevant technical discipline.

Average Annual Salary: $142,530

Computer or Information Research Scientist

Computer and information research scientists invent new technologies or identify innovative uses for existing technologies. For example, they may create a new computer programming language to enhance or accelerate development of software. Computer scientists often focus on a specific field, such as robotics, artificial intelligence, or data science. Most of these jobs require at least a master's degree.

Average Annual Salary: $118,370

Source: BLS

Doctoral Degree in Computer Programming

A doctoral degree represents the pinnacle of academic achievement in the field of computer programming. Students who earn a Ph.D. often assume senior leadership roles in the industry or pursue careers in academia. While you may quality for teaching positions at a community college with a master's alone, nearly all tenure-track faculty positions at four-year institutions require a doctorate.

Most doctoral programs require students to complete a dissertation. The dissertation process involves conducting original research, organizing your methods and findings in a written document, and defending your dissertation before a faculty committee. Some programs give students the option of completing a practice-based doctoral project rather than writing a dissertation.

Chief Technology Officer

Chief technology officers lead all aspects of their company's IT efforts. They generally serve as a member of their firm's executive team, helping to shape and implement overall organizational strategy. Depending on the size of their company, chief technology officers may also supervise the work of multiple IT managers. Though typically not required, a doctorate can help signal advanced expertise to potential employers.

Average Annual Salary: $155,652

Postsecondary Teacher, Computer Science

Postsecondary teachers instruct students at colleges and universities. They also conduct and publish original research, serve as advisors to master's and doctoral students, and perform certain administrative tasks, like assisting with the hiring of new faculty members. These positions almost universally require a specialized doctoral degree.

Average Annual Salary: $82,220

Source: PayScale/BLS

Where Can I Work as a Computer Programming Graduate?

Computer programming jobs are available across the country, though many large technology companies like Apple, Amazon, Facebook, and Microsoft maintain headquarters in San Francisco or Seattle. In addition, jobs in urban areas may pay more than those available in rural locations.

Computer programmers work in a wide variety of industries, including manufacturing, finance and insurance, computer systems design, and software publishing. Some programmers also work independently, serving as consultants for multiple clients.

Locations

Where you live can have a significant impact on your employment opportunities. For example, nearly 30,000 computer programmers work in California, while only 460 work across the entire state of West Virginia. Alabama boasts the highest number of programming jobs per capita, largely because of the presence of NASA's Marshall Space Flight Center in Huntsville.

Programmers in Washington state enjoy the highest pay, earning an annual mean wage of $126,920 in 2018. Programmers in South Dakota receive the lowest pay, with an average salary of only $57,060.

When considering where to begin your career, you should also consider factors like housing costs and overall quality of life.

Industries

Computer Systems Design and Related Services

Roughly 38% of all computer programmers in the U.S. work in computer systems design and related services. They are typically employed by large technology companies like Alphabet, Apple, and Microsoft.

Average Salary: $89,550

Software Publishers

Programmers working for software publishers may design computer games, mobile applications, office software, or educational programs for young children. Software publishers employ roughly 7% of all computer programmers nationwide.

Average Salary: $105,150

Management of Companies and Enterprises

This category encompasses all computer programmers who take on managerial or supervisory positions at their organization. They may lead IT departments or oversee the development of new technology products.

Average Salary: $87,250

State Government, Excluding Schools and Hospitals

Programmers working in state government perform many functions. For example, they may write code for their department of revenue's electronic tax-filing program. They may also conduct routine maintenance of agency websites or create custom databases for government information.

Average Salary: $77,250

Colleges, Universities, and Professional Schools

Almost 6,500 computer programmers in the U.S. work at colleges and universities. While schools increasingly do not develop proprietary systems, programmers can help adapt commercially available customer relationship management databases and other tools used in admissions, financial aid, and course registration.

Average Salary: $74,200

How Do You Find a Job in Computer Programming?

Before you apply to any job openings, start by enhancing your professional brand. Update your resume, references, and online networking profiles. Next, consider compiling a portfolio of your work, including any applications you have developed and research papers you have written. If you know only one programming language, begin learning a second one. Many companies prefer to hire candidates with fluency in at least two languages. Finally, even if you hold a bachelor's or master's degree in computer programming, you may still benefit from earning a professional certification in a particular platform or framework.

As you begin the job search process, remember to dedicate time to growing and maintaining your professional network. Tell family and friends you're looking for a new job. Reach out to industry leaders for computer programming career advice. In addition to events organized by the professional associations listed below, seek out networking opportunities in your local area on sites like MeetUp, EventBrite, and GroupSpaces.

Professional Resources for Computer Programming Majors

IEEE Computer Society

A branch of the Institute of Electrical and Electronics Engineers, the Computer Society serves computer science, engineering, and technology professionals. The association organizes research and networking conferences, maintains an online repository of academic articles and best practice guides, and administers three certification programs for software developers and engineers.

CompTIA

Since its founding in 1982, CompTIA has worked to empower IT professionals and encourage innovation within the computer industry. In addition to disseminating research on subjects like artificial intelligence and the internet of things, the organization produces webinars, podcasts, and training modules to help professionals stay updated on new developments.

Association for Computing Machinery

ACM aims to advance computing as both a science and a profession. The association publishes scholarly journals, convenes regional and international symposia, and gives awards to recognize exemplary service in the field. Members can also communicate and collaborate through special interest groups in areas like embedded systems, microarchitecture, and spatial information.

Computing Research Association

Rather than serving individual professionals, CRA represents more than 200 organizations active in computing research. The association offers a wealth of resources including best practice memos, regular summaries of new research, workforce and labor market reports, and career mentoring workshops. CRA also hosts a nationwide jobs board.

Codecademy

Throughout their careers, computer programmers must stay up to date on new technologies, tools, and approaches. Codecademy offers free online classes in 12 different programming languages including Python, Java, Ruby, and C++. Users can also access a paid option that incorporates personalized learning plans and live assistance from instructors.