Software Developer

What do software developers do?

Software developers create and maintain computer programs. They are the creative masterminds that give us systems to run devices and computer-related tasks. Their work results in anything from accounting software to run a business to the genius behind a complex video game. Software developers specialize in either applications or systems software.

  • Systems software developers: Create and maintain operating systems of computers and other electronics. They may design specific systems for a company or general systems used in products for the public.
  • Application software developers: Create and maintain programs and applications used on operating systems. All the games, spreadsheets and phone apps used by consumers start with application software developers.

Working closely with computer programmers, software developers collaborate to create the best systems for the project or customer’s needs. They oversee the project from beginning to end, from idea development to delivery.

Once programs are completed, software developers are often responsible for maintaining the programs, working out any bugs in the system, or continuing to upgrade them as customer needs change and grow.

Key Skills

  • Familiarity with computer languages: C++, Python, Java, PHP, XML, HTML/JavaScript/CSS, Unix Shell Scripting
  • Familiarity with operating systems: Linux, Solaris, HPUX, BSD, Mac OS X, Windows
  • Proficiency with databases, such as Oracle (PL/SQL) and MySQL
  • Ability to work in a team environment
  • Ability to communicate technical information to non-technical people
  • Superb oral and written communication skills
  • Continued professional development to stay current with changing technology

Software developers frequently consult with other developers, programmers and customers. They are also often relied upon to train new software developers. Because of this, communication skills and strong proficiency with all the latest systems are key.

Areas of Expertise

Data structures and algorithms

This area forms the nuts and bolts used by developers to store and organize data. Data structures are used for the arrangement of data. Algorithms perform the manipulation of the data, such as searches. Of the phases of development, this falls under coding. Software developer careers focusing on data structures and algorithms include:

  • Data Scientist – Analyze data and create new algorithms to evaluate the effectiveness of a company’s programs.
  • Developer for online shopping programs – A strong foundation of data structure and algorithms is needed to create shopper-friendly programming, from Walmart to Amazon.
  • Developer for search engines – Google, for example, uses complex algorithms to determine search results and rankings.


Programming languages are used to create the software, or “speak to the computer” about what the developers want a program to do. It is therefore essential for software developers to know the languages of their trade. Which language(s) developers learn helps determine where they can specialize. C, C++, C#, Python, Java, PHP, XML and HTML/JavaScript/CSS are the most common languages used in today’s programming. (See our full guide for a more in-depth breakdown)

  • Java – Very popular. Most programmers learn this language; it’s used for mobile-based apps and is the language to know for Android OS and apps.
  • C/C++/C# – A must-learn for developers; it’s used in hardware, speed games, desktop software and operating systems like Windows.
  • Python – The most popular in 2015, this language is used for expanding web apps, data analysis and user interfaces—it’s considered an all-in-one language.


Applications are specific tasks a user asks a computer or system to perform. An application software developer designs the programs and writes the code to make the computer do the task. Most specialize within their field. Career opportunities include:

  • Video Games – Potential projects include graphics software, gaming companion apps such as those that manage character inventory and mobile app games.
  • Mobile Applications – “There’s an app for that” has quickly become a universal solution for day-to-day tasks. Application developers make those apps happen.
  • Big Business – Large companies employ application developers to create the proprietary applications needed to run their business.
  • Government – From the Department of Defense to local civic offices, running and defending the country includes thousands of applications.


A platform is the general environment in which applications are designed to run. Software developers must be familiar with whatever group of technologies are used within a platform to work in that environment. Examples of platforms include:

  • Cloud platforms – Quickly becoming the most popular type of platform, developers create these to enable users to interact with system applications without having to acquire the hardware and software involved.
  • Microsoft Windows – Platforms are also known as operating systems. Developers work to create, improve and generate new versions of systems such as Windows.
  • Android – Mobile operating systems such as Android have quickly become popular platforms. Developers are needed for the constant changes and upgrades to such systems.

How much do software developers make?

Steady increases in both salaries and employment over the last decade make this a growing and profitable field. The BLS reports the highest-paid 10 percent of software developers made roughly $150,000 in 2014. The lowest ten percent that year cleared $56,000.

Average Developer Salaries, 2004-2012

  • $99,530 2014
  • $93,280 2012
  • $90,410 2010
  • $87,900 2008
  • $82,000 2006
  • $77,330 2004

Source: Bureau of Labor Statistics - OES Archives

States with the Highest Concentrations of Developers

State Employment Avg. Annual Salary
Washington 48,890 $115,370
Virginia 36,840 $104,170
New Jersey 37,350 $100,830
Colorado 22,680 $101,590
Massachusetts 26,900 $109,670

Source: Bureau of Labor Statistics - OES

Top-Paying Industries

Industry Employment Avg. Annual Salary
Other Information Services 31,080 $127,590
Securities & Commodity Exchanges 30 $125,360
Wireless Telecommunications Carriers 2,420 $120,630
Securities & Commodity Contracts Intermediation & Brokerage 8,680 $120,220
Promoters of Performing Arts, Sports & Similar Events 200 $118,460

Source: Bureau of Labor Statistics - OES

Pay by Experience

Median Salary

Entry-Level 0-5 yrs $61,503
Mid-Career 5-10 yrs $75,149
Experienced 10-20 yrs $84,790
Late Career 20+ yrs $87,851

Source: Payscale

Top Paying Cities

Avg. Annual Salary

San Jose, CA $142,370
Oakland, CA $121,200
San Francisco, CA $117,610
Seattle, WA $117,460
Baltimore, MD $114,350

Source: Bureau of Labor Statistics - OES

How do I become a software developer?

For a career in software development, one typically needs a bachelor’s degree. A major in computer science is the best option. However, degrees in software engineering math are also common.

Coursework should focus on software building and computer programming. Even though writing code is often assigned to computer programmers on a project rather than software developers, it is important to have this foundational skill. This is especially important because developers often begin their careers as programmers and advance from there. If students know what industry they desire to work in, it is helpful to minor or concentrate other coursework in that area.

College internships are a great way to gain experience at the start of this career path. From the beginning, it is important for software developers to learn the latest languages and tools of the field. For a successful career, you must continue to stay current as technology changes and develops.

I Have Completed my Undergraduate Degree

Decide if your degree has prepared you for a career in software development

  • Mechanical engineering, mathematics, business and graphic design are all potentially-related degrees that employers may accept.
  • If you have the knowledge and skills of a developer, you may not need an additional degree in computer science. If your coursework and experience have taught you strong computer language skills, math skills and communication skills, you are well-prepared.

Do a job search

  • Look at the jobs currently available. Find the ones that interest you. Check the job requirements to see if your current education and training meet these standards.
  • If you find your background does not fit the jobs you desire, consider additional schooling.

Contact employers

  • Do some additional research directly with employers. Contact companies that you would want to work for (even if they are not currently hiring) and ask them what experience they desire from their employees.
  • Ask employers if they would consider experience and training in lieu of a formal computer science degree.

Contact employees

  • Speak with software developers already employed in the field. Find out about their educational and professional background. See what they have found to be most valuable.
  • Speak with developers at various stages of their career. This will help you determine if a different degree is needed for whatever advancement you seek.

I’m Currently an Undergraduate

Take introductory computer science courses

  • Get your feet wet. A taste of computer science will help you decide if a career as a software developer is right for you.

Learn a computer language

  • This is the basic building block for developers. Learning whether or not you are skilled at this will help you decide if software development is a good fit.
  • Once you have mastered one language, it becomes easy to transfer those skills and principles to learning another language.

Examine your skill set

  • Are you a good communicator?
  • Are you good at working independently?
  • Do you like to learn?
  • If you can say yes to each of these, you already have many of the skills needed to be a software developer.

Get experience

  • If you have decided to pursue software development, try to get an internship in the field while you earn your degree.
  • Work with several languages if you can. Become familiar with a variety of platforms and projects.
  • A strong portfolio of foundational skills, on-the-job training and completed projects will help you jump-start your career at graduation.

Career Advancement

Software developers have multiple options for career advancement. This will depend largely on the area of interest or specific part of the field in which they are employed. Software developers may advance to become information technology project managers. In this case, they write their own software code rather than passing it off to a programmer. They are further involved in an entire project, overseeing deadlines, budgeting costs and final implementation.

Obtaining a master’s degree may prove helpful for advancement, but this will depend largely on the employer. Often, on-the-job success and experience are more relevant than additional formal education.

Another option available to software developers is to start their own consulting firm. With experience and skills, it may be possible to obtain their own clients and work for themselves full-time.

Either way, as software developers contribute to progressively higher-level projects and build upon their knowledge-base, earning power and professional mobility grows quickly. More than many positions, even those in computer science, software development is one with particularly high rates of mobility and growth.

Additional Resources