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.
- 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.
- 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
States with the Highest Concentrations of Developers
|State||Employment||Avg. Annual Salary|
Source: Bureau of Labor Statistics - OES
|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
Top Paying Cities
Avg. Annual Salary
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.
- 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.
- 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.
- 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.
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.