Computer Programmer

What do computer programmers do?

Computer programmers write the code that allows all computer applications to run. They are responsible for the millions of lines of code it takes to run everything from our phones to satellites to EKG machines.

They do this by communicating with computers in programming languages. Applications, systems, and platforms are written in a variety of languages, such C++ or Python. Programmers learn to “speak” these languages and are able to create programs that allow searching, surfing and selfies.

Often, computer programmers work closely with software developers and engineers. The developers create a design, and the programmers carry it to completion. They problem solve and fine tune the details of coding to ensure the program works as designed.

Programming projects vary greatly in complexity and duration. Some require knowledge of more than one language. Others may be year-long endeavors. All require attention to detail. Regardless of their assigned project parameters, highly proficient computer programmers should possess certain key skills.

Key Skills

  • Fluency in C++, Java, SQL, HTML, Ada, BASIC and Python, depending on platform and program
  • Familiarity with multiple operating systems and platforms like Android, OS, Linux, etc.
  • Ability to troubleshoot intricate work processes
  • High level communication skills and an ability to present products to end-users and clients
  • Ability to perform detail-oriented, creative work with little supervision

Many programmers work remotely as independent contributors. They may work on a contract basis for several employers or maintain FTE (full-time equivalency) status with one company. Either way, those that do work remotely must be highly organized and autonomous. Programmers who take the lead on their own portions of a larger scale project remotely are accountable for every line of code they write, test and implement.


Areas of Programming

People who can code are needed in every field imaginable and their skills are being used to streamline and improve the systems all industries rely on. The applications of coding knowledge are broad and far-reaching, but being an expert in a specific area of coding can greatly increase your job prospects.

Java Programmer

May be employed by a variety of organizations such as life insurance companies, colleges, credit card companies, or technology companies. Could easily specialize in a different computer language, such as C++ or Python, with similar duties and requirements.

Typical Duties

  • Analyze, code, test , maintain and update internally developed applications, following standards set forth in the company’s Software Development Policy and Procedure.
  • Technically lead development projects through to completion.
  • Use software tools including but not limited to Eclipse, SVN, Microsoft Excel, Microsoft Word, and Microsoft Outlook.
  • Work with IT Manager and other Java programmers to provide technical support for all company programs and implement development projects within established timeframes.
  • Develop a strong working knowledge of the company’s technical environment – software, hardware, intranet / internet, and networking systems.
  • Demonstrate effective business and technical communication skills.



Based on experience; $60,000-$70,000/year

Education Requirements

Varies by company – Associate Degree, Certifications, or several years of experience are typical requirements

Experience Requirements

1+ years experience with JAVA (or specified language)

CNC Programmer

Employed in manufacturing settings. Program machinery to perform tasks and create products.

Typical Duties

  • Use high speed CNC machines and G-code programming to produce intricate tooling components.
  • Develop, set up and create operating procedures for equipment.
    Typical Duties
  • Review, recommend and develop new technology to advance machinery capabilities.
  • Manipulate drawings for high speed machining process.
  • Setup and develop inspection procedures for components.
  • Ensure CNC programs are created that will produce parts that meet all drawing requirements.
  • Ensure setups are simple and capable of holding parts in a safe and accurate way.
  • Ensure processes and setups instructions are documented and can be handed off to operators for repeat production runs.



Based on experience; $30-$50/hour

Education Requirements

CNC training and experience valued over degree

Experience Requirements

Typically 1-3 years working with CNC machinery.

Game Programmer

Design, develop and deploy video games.

Typical Duties

  • Design and create major new game features. Ensure features are integrated cleanly with existing features and platform infrastructure.
  • Problem solve through code writing.
  • Assist in developing project plans and commitments, then deliver consistently.
  • Insist on the highest standards, and create functional and engaging features that delight gamers.



Dependent on experience; programmers generally clear $80,000/year

Education Requirements

Bachelor of Computer Science or related degree

Experience Requirements

3+ years of programming experience in multiple languages

How much do computer programmers make?

With a projected shortage of over a million CS professionals over the next 10 years, it’s no surprise that programming salaries are rising quickly. The BLS reports the average annual wage for computer programmers was $82,690 in 2014. The best-paid 10 percent in the field made approximately $123,490, while the bottom 10 percent made approximately $43,640.

The best-paid 10 percent in the field made approximately $123,490, while the bottom 10 percent made approximately $43,640.

Average Programming Salaries, 2004-2012

  • $82,690 14’
  • $78,260 12’
  • $74,900 10’
  • $73,470 08’
  • $69,500 06’
  • $65,910 04’

Source: Bureau of Labor Statistics - OES Archives

Pay by Experience

Avg. Annual Salary

Entry-Level 0-5 yrs $50,160
Mid-Career 5-10 yrs $63,840
Experienced 10-20 yrs $72,960
Late Career 20+ yrs $76,380

Top Paying Cities for Programmers

Avg. Annual Salary

Seattle-Bellevue-Everett, WA $119,760
San Francisco, CA $104,770
Vallejo-Fairfield, CA $102,850
Oxnard-Thousand Oaks-Ventura, CA $99,880
Albuquerque, NM $99,140

Source: Bureau of Labor Statistics - OES

States with the Highest Concentrations of Programmer Jobs

State Employment Employment per 1,000 Avg. Annual Salary
Washington 13,760 4.72 $115,430
New Jersey 16,430 4.22 $86,320
Illinois 19,380 3.36 $74,060
Nebraska 3,120 3.31 $76,230
Utah 4,060 3.17 $78,470

Source: Bureau of Labor Statistics - OES

Top-Paying Industries for Programmers

Industry Employment Avg. Annual Salary
Securities and Commodity Exchange and Brokerage 2,370 $109,350
Financial Firms and Banks 230 $107,910
Software Publishers 21,550 $101,640
Mining Company Support 150 $96,750
Personal Services 430 $96,450

Source: Bureau of Labor Statistics - OES

How do I become a programmer?

Most jobs in programming require a bachelor’s degree, though you may be able to find some positions that will accept a two-year degree or even a certificate. It depends on your current education level — if you already hold an undergraduate degree in a related field, you can get started with some supplementary introductory coursework in CS.

If you’re going the four-year route, keep in mind that colleges and universities that are recognized for their math or IT programs will usually put you ahead of the pack. Check out our bachelor’s degree guides for a comprehensive overview of your options.

I Have Completed my Undergraduate Degree

Decide if you want to earn a second degree in CS.

  • Consider the ways in which you want to incorporate programming into your career.
  • If you are a mid-career professional who doesn’t want to change industries, taking individual CS courses will help you apply a programming skillset where you are now. If you don’t need to complete a degree, you won’t need to take for-credit courses.
  • If you are considering a more major career change into programming, it may be a good idea to earn your second degree in CS.

Find and speak with current programmers.

  • How did they get where they are today?
  • What was the most difficult part of learning to program?
  • What do they like best about their jobs?
  • What do they wish they’d have known about programming in school?

Find a school that offers the course content, schedule and cost that best meets your needs.

  • Remember that programming is overwhelming at first, start slowly. Consider beginning with online tutoring or subscription-based code training programs instead of formal college courses.
  • Be sure to weigh all your options, research offerings from your previous schools. Ask for alumni benefits like discounted tuition or free non-credit course auditing.
  • Try an online class. Programming lends itself pretty perfectly to virtual learning and autonomous learning is an important skill for programmers to develop early.

I’m Currently an Undergraduate

Take some introductory CS courses. Choose a foundational class from the CS department and see how you enjoy it.

  • Information Technology
  • Computer Science Principles
  • Data Programming
  • Computer Programming I; II
  • Foundations of Computing

Don’t be discouraged early.

  • Remember that no one is born knowing computer science and that you don’t have to be a genius to learn it.
  • Give yourself time to play with the concepts in your course. Celebrate those moments when something you didn’t understand suddenly seems simple.
  • Remember that knowing even a little bit of programming gives you an incredible edge in just about any profession.

Build a relationship with your professor.

  • It’s easy to fall behind in a technical course where concepts build upon the logic of past work.
  • Make use of office hours before you’re confused. Ask questions in class right as you think of them.
  • Use your assignments to master the fundamentals, but imagine new ways to apply them. Float ideas in class, make new connections and you’ll keep yourself engaged in what might otherwise feel like dry material.

Declare your major.

  • If you love CS and you’re up for the challenge, declare it as your major as early as possible!
  • If you’re choosing another major, consider the ways in which foundational CS work will supplement your degree.
  • Knowing how to code will make a serious difference in any field, from entertainment to healthcare to finance!

Career Advancement

Staying current is key to advancement in this career. Programmers must be willing to continually learn new languages and technologies as they develop. Those who keep their skills sharp and up-to-date will be able to advance into opportunities in software engineering and IT management.

For those starting out, internships offer excellent opportunities to gain the experience prospective employers want to see. Computer programmers can beef up their resume with internships through schools, temp work, or summer job opportunities.

Programmers can also become certified in specific programming languages or for vendor-specific programming products.

Programming Resources

There are a wide variety of tools available to you to build your skills as a programmer independently. Most of these are available online, and many are free. These run the gamut from sample code databases to step-by-step tutorials and how-to’s. There is even a “personal trainer” service for people new to programming.