Software engineers typically hold a bachelor’s degree or higher in computer engineering, software engineering, or computer science. Some employers require work experience.
Are you ready to find a school that's aligned with your interests?
Those interested in pursuing software engineer careers can expect growing job opportunities. Software engineers design software programs and often participate in the details of their development. In a world that places increasing importance on applications and web development, employment options for software engineers remain robust in a variety of industries. For aspiring software engineers, that can mean diverse career opportunities.
This page provides an overview of software engineering, including detailed information on expected skills, career paths including job opportunities by educational level, potential work environments, occupational and salary data, and professional organizations for software engineers.
Computer software engineers apply engineering principles and systematic methods to develop programs and operating data for computers. If you have ever asked yourself, “What does a software engineer do?” note that daily tasks vary widely. Professionals confer with system programmers, analysts, and other engineers to extract pertinent information for designing systems, projecting capabilities, and determining performance interfaces. Computer software engineers also analyze user needs, provide consultation services to discuss design elements, and coordinate software installation. Designing software systems requires professionals to consider mathematical models and scientific analysis to project outcomes.
The demand for high-performing computer software engineers continues to grow. According to projections from the Bureau of Labor Statistics (BLS), jobs for software developers should increase by 22% between 2019 and 2029, much faster than the national average. Computer software engineers can find employment in almost any industry. In fact, over 530,000 new computer and information technology jobs are projected to be added to the workforce, according to the BLS.
Hard skills refers to practical, teachable competencies that an employee must develop to qualify for a particular position. Examples of hard skills for software engineers include learning to code with programming languages such as Java, SQL, and Python.
Programming languages comprise a software engineer’s bread and butter, with nearly as many options to explore as there are job possibilities. Examples include Ruby, an object-oriented language that works in blocks; Rust, which integrates with other languages for application development; PHP, a web development script that integrates with HTML; and Swift, which can program apps for all Apple products.
Learn More About Programming Languages HereWhile hard skills like knowledge of programming languages are essential, software engineers must also consider which soft skills they may need to qualify for the position they seek. Soft skills include individual preferences and personality traits that demonstrate how an employee performs their duties and fits into a team.
Depending on the particular position, the daily responsibilities of a software engineer can vary. Software engineers may confer with clients or executives to begin the development of a project, designing programs to meet those expectations. They assemble charts and diagrams for visual representation of the software, writing code themselves in addition to supervising a team of programmers. They also run tests and fix issues that may occur with the programs they have designed.
Explore programs of your interests with the high-quality standards and
flexibility you need to take your career to the next level.
Software engineers typically hold a bachelor’s degree or higher in computer engineering, software engineering, or computer science. Some employers require work experience.
The BLS projects that the need for software developers will increase by 21% from 2018-2028, far faster than the national average for all occupations. Software engineers and software developers can look forward to plentiful opportunities.
Most software engineers hold a bachelor’s degree, which can take four years to obtain. Employers may seek software engineers with some experience as developers, or in other coding capacities.
While the positions share similarities and often work in tandem, software engineers analyze and design full software systems, while software developers lead and carry out the creation of the software itself. Engineers, however, often participate in software development.
Entry-level software engineers may take on a variety of roles. Working with a team, they may focus on the back end of a piece of software and build the specific flow of code, or on the front end to ensure that the user interface stays consistent. They may also focus on quality assurance testing.
Salaries for software engineers can vary based on the industry, location, and the employee’s years of experience. PayScale reports an average salary of $86,440 for software engineers. With significant experience, salaries can grow rapidly, with the average rising to $94,000 for those with 5-9 years of experience.
While the BLS does not distinguish between software engineers and developers, reports for these occupations highlight particularly lucrative industries and states in the field. Software developers earn an average annual wage of $111,620.
Silicon Valley’s home state of California ranked highest in the nation for software developer salaries, with an average annual wage of $134,370 as of May 2019. Washington is next on the list, with an average annual salary of $131,870. New York ranks third, followed closely by Washington, D.C. and Maryland.
Entry Level (0-12 Months) | $75,910 |
Early Career (1-4 Years) | $83,440 |
Midcareer (5-9 Years) | $94,240 |
Experienced (10-19 Years) | $104,300 |
Whether you’re earning a degree or taking a coding bootcamp, everyone’s journey is a little different. Here are some common steps that everyone can and should take to become a software engineer.
Typically, employers seek software engineers who hold a bachelor’s degree in software engineering, computer engineering, or computer science. Employers look for software engineers with practical knowledge, and may also seek some work experience and demonstrated coding knowledge.
Aspiring software engineers take courses such as programming languages, database management, programming concepts, data structures and algorithms, software architecture, and discrete mathematics. Some programs require a final capstone project in software engineering, which may encompass a practical task such as the design of a full program, and which students may complete as part of a group.
An associate degree can introduce students to the fields of computer science and software engineering. Courses may include network concepts and operating systems, computer logic and programming, and web programming. Students can typically complete an associate degree in two years of study.
With an associate degree, students can prepare for several career paths or apply the credits they have earned to a bachelor’s degree program.
Web developers design and construct websites to fit the needs of their clients. They may create site-specific applications, code the site’s functions, and collaborate with other departments to integrate content and graphics.Web Developer
With a bachelor’s degree, software engineers and computer scientists gain a wealth of opportunities in the field. Depending on the chosen major and specialization, students may take courses in programming languages, software security, engineering statistics, and discrete mathematics — plus general education requirements. In general, a bachelor’s degree takes four years to complete.
Also known as IT managers, these high-level professionals determine the technology needs of an organization. Job duties include securing data, researching solutions, analyzing costs, and making recommendations to company leadership.Computer and Information Systems Manager
Responsible for hands-on technology, computer hardware engineers design and develop tangible computer parts such as processors, memory, and routers. They run tests, troubleshoot, and oversee the manufacturing process.Computer Hardware Engineer
Software developers design computer programs, applications, and systems. These professionals typically boast a computer science bachelor’s degree.Software Developer
With a graduate degree, software engineers and computer scientists gain a wealth of opportunities in the field. Depending on the chosen major and specialization, students may take courses in programming languages, software security, engineering statistics, and discrete mathematics — plus general education requirements. In general, a bachelor’s degree takes four years to complete.
Computer and information research scientists develop entirely new tools for computer scientists. They research complex problems and identify computer-related solutions, invent programming languages, and analyze areas for improvement.Computer and Information Research Scientist
Students who pursue a doctorate in an area of computer science like software engineering may graduate with improved career opportunities and higher potential salaries. A doctoral degree can take 4-5 years to complete, with coursework including principles of computer science, data mining, and advanced statistics with technology applications. Most Ph.D. programs require a culminating dissertation or project of an equivalent scope.
Lead software development engineers design, create, and test software for their companies, often overseeing a team of developers. They may also manage the project as a whole by setting timelines.Lead Software Development Engineer
Employers consider previous work experience an important factor during the hiring process. Software engineers who can demonstrate practical knowledge may gain a significant advantage in hiring for positions of their choice. Software engineers can seek mentorships through internships, as companies of all sizes seek interns in the field. Students may also elect to use academic work, such as a final project or capstone, to demonstrate experience.
Professional organizations often feature internship opportunities and offer student membership levels. The Institute of Electrical and Electronics Engineers (IEEE) offers networking opportunities, training, publications, and scholarships for students and young professionals. Similarly, student members of the Association for Computing Machinery can access volunteer opportunities along with an online learning center, student newsletter, and career news.
Software engineers can often boost their resume to the top of the pile by obtaining credentials in cybersecurity, programming, or development. CIW web development professional certification combines user-interface programming with back-end design, giving certificate holders a broad skill set recognized by employers like Cisco, Raytheon, and Hewlett Packard. The credential requires three exams, each of which carries a fee.
As a certified secure software lifecycle professional (CSSLP), software engineers can prove their acumen with best practices in cybersecurity. The certification requires an exam that evaluates eight areas of cybersecurity. Other available certifications include Microsoft programming and platform development.
Software engineering graduates can benefit from a wealth of job opportunities. Industry and location factor into salary potential along with experience and education. PayScale reports an average annual salary of $86,440 for software engineers.
By completing a degree, software engineers can enhance their job prospects, widen the field of available positions, and potentially qualify for higher salaries. Those with an associate degree may pursue jobs in web development, while bachelor’s level positions include computer and information systems management and computer systems analysis. With a master’s degree, software engineers may seek roles as computer and information research scientists, and a doctorate can qualify them to work as professors or lead engineers.
With strong demand across a variety of industries and corporation types, software engineers often enjoy an extensive selection of job choices. Software engineers may find work in large corporations, small startups, or as independent freelancers. While many work in computer systems design and related services, other popular industries include finance, software publishing, and manufacturing.
Location plays an important part in job availability and earning potential for any career, including software engineering. Known for innovative technological hubs in Silicon Valley and San Francisco, California employs the highest number of software engineers in the country, with the BLS reporting 249,620 working in the state as of May 2019. Texas ranks next with less than half that many, followed by New York and Washington.
Software engineers in California also earned the highest salaries in the country as of May 2019, with an average annual wage of $134,370.
STATES WITH THE HIGHEST EMPLOYMENT LEVEL OF SOFTWARE DEVELOPERS | NUMBER OF SOFTWARE DEVELOPERS EMPLOYED |
---|---|
California | 249,620 |
Texas | 109,510 |
New York | 78,890 |
Washington | 77,650 |
Virginia | 73,310 |
TOP-PAYING STATES FOR SOFTWARE DEVELOPERS | AVERAGE ANNUAL SALARY AS OF MAY 2019 |
---|---|
California | $134,370 |
Washington | $131,870 |
New York | $119,570 |
District of Columbia | $118,580 |
Maryland | $116,080 |
Software engineers can work in companies of all sizes. Large companies typically employ large teams and offer greater opportunities for collaboration, where software engineers may work on a small component of a big project. They may manage teams of developers. In a smaller setting, the role of a software engineer may blend more fully with that of a developer. Some software engineers may work remotely, with flexible hours and minimal in-person interaction with team members.
INDUSTRIES WITH THE HIGHEST LEVEL OF EMPLOYMENT FOR SOFTWARE DEVELOPERS | NUMBER OF SOFTWARE DEVELOPERS EMPLOYED |
---|---|
Computer Systems Design and Related Services | 472,180 |
Software Publishers | 122,320 |
Management of Companies and Enterprises | 69,940 |
Data Processing, Hosting, and Related Services | 48,050 |
Other Information Services | 40,670 |
TOP-PAYING INDUSTRIES FOR SOFTWARE DEVELOPERS | AVERAGE ANNUAL WAGE |
---|---|
Independent Artists, Writers, and Performers | $211,400 |
Support Activities for Water Transportation | $132,870 |
Computer and Peripheral Equipment Manufacturing | $131,750 |
Cable and Other Subscription Programming | $130,010 |
Kiersten Nelthorpe is a software engineer specializing in backend API design and databases. She earned her bachelor’s degree in Computer Science from Brigham Young University in Utah. After starting out at Microsoft in the Seattle area, Kiersten now works as a Senior Software Engineer at Imagine Learning, an education technology company. Most of her corporate experience has been programming in C#/.Net, but Python is her language of choice when coding for fun.
My dad spent many years as a mechanical engineer, so I figured engineering would be a good, stable career to look into. As I scanned the list of engineering disciplines, “software engineer” kind of jumped out as something that sounded interesting to me. Except, I literally knew nothing about it. I had never coded before (except for some minor HTML tweaking to customize my MySpace page back in the day). Nevertheless, I signed up for the introductory programming course at my university the next semester and had so much fun that I switched my major to computer science.
The need to transfer, process, and store huge amounts of data always seems to be growing faster than what the hardware and technology can keep up with. So new technologies to deal with huge amounts of data are being created and refined at an astonishing pace. Keeping up with what options are available and staying educated on when to use them can take a lot of effort.
I also love that my career in software engineering has allowed for a lot of flexibility as a parent. I have two young children, and I can get my work done earlier or later in the day depending on what is going on at home. I can also occasionally work from home if needed (though I will admit that it’s usually easier to focus in the office).
When I was in my senior year of college, I was nervous about finding a job as quickly as possible, even though I didn’t need to be. So I applied to over 100 companies and ended up having to turn down interviews. The result of that was having multiple job offers all over the country so I could pick wherever I wanted to live after graduating.
Ever since I graduated, I have worked on corporate engineering teams for software product companies. In one company, every engineer had their own office and a lot of communication between employees was done through chat. Now, I work in an open workspace where everyone’s desk is out in a big open room. It’s actually nice to be able to just turn around and ask a quick question to another engineering team.
Ever since starting my career in software engineering, I have been coding and testing my code. But as I gained more experience, I got more involved in planning the architecture of the software products and the systems used by engineering teams.
Every day, the team comes together briefly for a “standup” meeting where we each report on what we did the day before, what we will be doing today, and whether or not we are blocked on a task. As soon as a task is completed, the engineer picks up something new to work on from the backlog. Using Scrum allows the engineers to choose which tasks they will work on while also ensuring that the right things are getting done.
There are so many free interactive tutorials online where you can try out programming without having to set anything up on your computer. I think Javascript and Python are great languages to get started with. Just try it out!
If you enjoy programming and decide to pursue it, work on some example projects on your own. These can come from tutorials or just things that interest you (like making a specific kind of calculator or transforming data in text files). Then upload your projects to a Github repository. Potential employers like to see examples of your code!
For now, I see myself pursuing the first option and doing a deep dive into big data since I have already been working on the big data problems these last few years.
States do not require software engineers to hold certifications or complete continuing education hours. However, obtaining additional credentials and pursuing continuing education can enhance career advancement opportunities. In a rapidly evolving field, continuing education ensures that software engineers remain up to date on cutting-edge advances. Candidates can pursue continuing education through organizations such as Devslopes, Coursera, and Udemy, described in the table below.
Software engineers can find a wealth of information through resources like Core Intuition Podcasts, a software development series; TechBeacon, a website full of information for software engineers; and the Yalantis blog, featuring industry-related articles on technology, marketing, and design. Software engineers may also want to practice their skills with game-based practice resources like codewars.
An online event for tech professionals, hack.summit( ) is a free blockchain conference that encourages networking and mentorship. Pluralsight also offers an annual live conference, in addition to a full catalog of online courses for software engineers. Another popular course platform, Construx, offers courses for teams or individuals both online and in person, along with other resources such as coaching, organizational assessments, and a podcast.
Graduates can take advantage of many resources to help them find a job in software engineering. Many new software engineers get their start by working with professors, internship supervisors, and other mentors. Students should also take advantage of any career services their college or university may offer.
Online programs sometimes provide career assistance. Students who take courses through Udacity work with a career coach. Graduates can also search for job opportunities through websites like WPhired, which lists WordPress jobs around the world; Toptal, where freelance software engineers and developers can seek employment; and Stack Overflow, where programmers can network and look for jobs.
Through conferences, job boards, and member forums, professional organizations also provide access to job opportunities.
In a field that changes quickly, software engineers can benefit immensely from participation in professional organizations. Most organizations offer multiple ways for members to stay up to date on current trends and changes in the field through newsletters, publications, and events.
Professional organizations also provide career advancement assistance, including job boards and mentorship programs. One of the best ways to network with colleagues in the field, professional organizations offer a host of helpful online forums, local meetings, and annual conferences.
Bootcamps can offer an affordable path to computer science careers. Learn about paying for coding bootcamp with our comprehensive guide to payment options.
Explore different types of coding bootcamps, including data science, Python, and JavaScript. Find out the next step for your coding career.
A master's in computer engineering can be a rewarding way to advance your career and increase your earning potential. Find out which program is best for you.
Discover programs you’re interested in and take charge of your education.