Without much exaggeration, it can be said that software is nearly everywhere, and it powers nearly everything. Every new vehicle on the road has software built into its systems. The fuel pumps that these vehicles draw gasoline from, have software controlling their operation. The money used to pay for the gas? Probably taken from an ATM, a computerized bank terminal that -- well, you get the idea.
We encounter software on a daily basis in our lives. It runs our phones, our laptops, and our appliances. We rely on software programs to help guide us around the city, organize our personal calendars, and keep track of our finances. But, before it can do any of these things, software has to be created.
Enter the software developer and software engineer. Developers and engineers design, create and maintain the software used in every device and machine that has a CPU in it -- did we mention that includes nearly everything out there these days? The demand for these tech professionals has risen in tandem with the thriving technology industry. In 2012, the U.S. Bureau of Labor Statistics (BLS) reported there were over a million software developer jobs in the country, and that this number is expected to grow significantly over the next decade. Much of this growth is being powered by the massive popularity of mobile computing, and consumers' hunger for bigger and better apps.
Software Development Careers
- What Do Software Developers Do
- What Do Computer Software Engineers Do
Software developers (often shortened to "devs") create operating systems, applications and other types of computer software. As with most products, software creation begins by determining what requirements the customer(s) who will be using the software has. A design is created for the software, and then the code is written. Devs often write the code themselves, but this task is sometimes delegated to programmers, depending on the structure of the organization.
When the code has been written, software devs collaborate with software testers who go through the entire application, checking the code for bugs. Software devs also collaborate with technical writers who create documentation and help files for the product. Depending on the industry, devs may have to work with regulatory and legal departments who ensure that the software meets certain industry standards, or complies with government legislation.
Once a software product has been released to market, software devs are often called upon to maintain and improve the software with patches and updates. Over time, devs may create new major versions of the software that eventually replace older versions.
Whatever the case, every piece of software from the largest operating system to the smallest mobile app, is created by one or more software dev.
Computer software engineers create the applications and operating engines that drive human interaction with the world of data. There are two primary types of computer software engineer: applications software engineers and systems software engineers.
- Applications engineers design, build and deploy general applications software and specialized utility programs.
- Systems engineers focus on the construction and expansion of entire computer systems.
Here's a breakdown of both specializations:
Computer systems software engineers design and build computer networks tailored to organizations' specific requirements. These software specialists take a big-picture view of an enterprise's IT infrastructure and develop the software that knits the computer hardware into an integrated network. They work on all aspects of the project, including operating systems-level software, compilers and network distribution software, and they participate in all phases, from research and design to development and testing.
Computer systems software engineers assess the needs of an organization, make decisions about technical purchases, and write code at the operating-system level that integrates the technology and customizes specifications to user needs. Systems software engineers may also implement security features to protect a system from intrusion and data loss.
Computer systems software developers may specialize in a particular type of organization, industry or technology. Examples of industry specializations include health care, manufacturing, military, telecommunications, aerospace, scientific R&D and financial services. Technical specializations span operating systems, system security, networking and routing, storage systems and more.
O*NET OnLine details the broad expertise required for computer systems software engineers. These software specialists must be familiar with various types of tools and hardware, for example:
- Processors -- central processing units or CPUs and graphics processing units or GPUs
- Computer servers such as application servers
- High-end computer servers like directory servers
- Integrated circuit testers and logic analyzers
- Mainframe computers
The U.S. Bureau of Labor Statistics (BLS) makes a distinction between computer systems software developers and a closely related occupation, the computer systems engineer. Also known as systems architects, systems engineers work with systems integration and problem-solving for a wide range of issues involving system and network administration. Systems engineers may configure, implement or install computer systems for their own employers or other organizations.
From imagination to creation to upkeep, computer software applications engineers take business applications, games, mobile apps and more from the drawing board to customers' hands. Working with programming languages like C, C++, Java and Python, these specialized engineers can be found anywhere from the whiteboard in the design room to the maintenance lab. Software applications engineers are valued for their high-level programming knowledge and application of current technology.
The term "software applications engineer" is a broad category spanning careers such as application integration engineer, software development engineer, software architect and computer consultant. It's also important to note some distinctions: Those with software applications engineer qualifications can call themselves applications developers. Not every applications developer, however, can be called a software applications engineer.
This occupation uses a wide variety of tools and software programs, according to O*NET. These pros work with software applications like the following:
- Database management system
- Development environment
- Object or component oriented development
- Program testing, source code editing and usability testing
- Web platform development
These engineers are also familiar with application servers, integrated circuit testers, logic analyzers and mainframe computers.
Software Developer Education
- Software Developer Degrees
- Computer Software Engineer Degrees
The majority of jobs in software development require candidates to have a bachelor's degree, usually a B.A. or B.Sc. in computer science, software engineering, or another related field. Software devs who want to work in a specific industry (i.e., finance, petroleum, etc.) will often take a minor that's related to that industry. Many colleges and universities now offer fully online degree programs in computer science, as well as traditional on campus programs.
It can be possible for software devs to break into the industry (typically in a more junior position) with an associate's degree in software development or programming. Associate degree programs typically take 6-12 months to complete, making them more affordable when compared to a bachelor's degree.
In many software companies, devs are responsible for writing the code for their designs. There are numerous programming languages used in the software industry, and while software devs encounter many of them during their degree programs, some additional education may be required after graduation. Some of the software industry's most popular programming languages include the following:
Some programming languages are bundled with other development tools into Solution Development Kits, commonly known in the industry as SDKs. Some SDKs are unique to a single platform, such as the iOS SDK for Apple's iPhone and iPad devices. Microsoft Visual Studio is a much larger development suite that can be used to create applications for multiple platforms.
Software devs can greatly benefit from having strong project management skills. The Project Management Institute (PMI) is the current global leader in project management education and certification. PMI offers a number of industry credentials as part of its certification program, which software devs can earn in order to further enrich their skill set.
Software development teams commonly employ a number of processes when creating products. Much like an assembly belt, a breakdown in any single process can impact software quality. Six Sigma is a globally recognized framework for reducing defects to a statistically insignificant number, and is often found in practice in software companies. Six Sigma education and certification is available from numerous vendors around the world.
According to O*NET, 75 percent of applications engineers have completed a bachelor's degree, while 17 percent held master's degrees and 7 percent hold associate degrees. In systems software engineering, 54 percent of respondents had earned a four-year degree and 23 had continued their education through graduate work.
Computer software engineers typically earn their bachelor's degree in computer science, mathematics, or computer information systems. Some employers tend to prefer applicants who have earned four-year degrees in these or related fields, although some computer software engineer jobs are held by people with no more formal education than a high school diploma or associate degree.
Product vendors like IBM and Cisco offer certification programs that can help aspiring computer software engineers round out their IT skillsets. While specialized certifications are not a perfect substitute for hands-on experience or formal education in the field, they can help students and professionals to become familiar with specific programs and hardware and add in-demand skills to their repertory.
Here's a drill-down on the educational requirements for systems engineers and applications engineers:
A bachelor's degree in software engineering or computer science is the standard minimum qualification for a career as a systems software engineer. According to O*NET, more than half of systems software developers had a bachelor's degree in 2010, while nearly one-quarter held a master's degree.
A software engineering degree is designed to provide the necessary foundation in computer science, mathematics and engineering. In addition, systems software engineers may build an applied skill set working with UNIX or Linux systems, operating systems such as Microsoft Windows 7 and programming languages like Java, Python, Perl, C, C++ and PHP or shell script.
Certifications offer additional skills development. Examples include IEEE's Certified Software Development Professional, or CSDP and the Carnegie Mellon Software Engineering Institute's certifications, such as Computer Security, Process Improvement, Service-Oriented Architecture and Resilience Management. Available certification areas for systems software engineers include security, virtualization, system architecture and servers. Credentials are also available from vendors like Microsoft, IBM and Apple. Certification gives systems software engineers an opportunity to extend and validate their professional skill sets.
A typical undergraduate computer software engineering degree includes general education courses plus extra math and science coursework in addition to courses such as distributed software development, software analysis and design and software quality assurance and testing.
Software engineering jobs typically require a bachelor's degree, although a master's degree is sometimes preferred. A two-year degree or certificate may be adequate for some computer programming jobs.
The usual college majors for applications software engineers are computer science, software engineering or mathematics. For scientific or engineering applications, employers often prefer a degree in computer or information science, mathematics, engineering or the physical sciences. For business applications, college courses in management information systems and business are also useful. A specialized graduate degree is needed for some jobs.
Software Developer Salary and Outlook
- Software Developer Salary
- Computer Software Engineer Salary
According to the BLS, job opportunities for computer software engineers are projected to increase significantly. As with computer hardware engineering, the domestic job market for software engineers will see growing competition from qualified candidates in other countries.
The BLS cites the rapid growth of computer networking as one of the forces behind this expansion in the job market, alongside increased reliance on sophisticated electronic data processing in business, communications, government, health care and other industries. The prominence of wireless handheld devices in the consumer market also promises to hold opportunities for computer software engineers, especially those who work on applications.
What sort of salary can a computer software engineer expect?
BLS data shows that computer software engineers are receiving decent compensation, with a range of salaries based on the particular specialization the engineer has. Here are some numbers for application software developers, followed by similar data for systems software developers.
Computer systems software developers can expect much faster than average job growth throughout the 2008-2018 period, according to the BLS. New jobs for systems and applications software engineers will likely be driven by demand for internet and networking technologies.
What is the salary for systems software engineering jobs?
BLS data provides the following median salary numbers for systems software engineers:
The BLS predicts excellent future growth opportunities for applications software engineers, thanks in part to an increasing demand for applications on mobile devices:
What is a typical salary for computer applications software engineers?
BLS data provides the following median salary numbers for computer applications software engineers: