Hi, I’m Brian, a former senior software engineer and now industry mentor at Pathrise. I have helped hundreds of software engineers land their dream jobs in tech. Check out my article where I answer the question, “What does a software engineer do?”
Software engineers design and build software for a wide range of purposes, from client-facing native mobile applications to server-side database systems. And now, more and more companies placing an emphasis on cloud computing, big data, and information security. Therefore, the number of software engineering jobs continues to increase, making it the fastest growing occupation in the United States.
Because there are so many different types of software engineering jobs available, finding a role that matches your past experiences and skill set can be challenging. To help you answer the question, what does a software engineer do?, we have outlined the most common backgrounds and in-demand skills that recruiters and hiring managers seek out in candidates. Now you can find the right position to launch your software engineering career.
What educational background do you need to land a job as a software engineer?
There are quite a few different paths that you can take to launch your software engineering career. Many software engineers have degrees in computer science, applied mathematics, information systems, electronics, civil engineering, and other STEM fields. Some even have backgrounds in philosophy, linguistics, and cognitive science. And while most software engineers have associate’s, bachelor’s, or graduate degrees, quite a few are self taught or bootcamp grads.
To learn the necessary skills to land an entry level software engineering job, alongside, or instead of, traditional schooling, some aspiring software engineers choose to enroll in a software engineering bootcamp, such as General Assembly or Flatiron School. If a full-time bootcamp is not an option, you can also use online learning platforms such as Springboard and Udacity to advance your software engineering skills.
Even after earning a degree or graduating from a bootcamp, breaking into tech can be challenging. Before landing their first full-time role, many software engineers gain experience on their own. They work as freelancers, intern at major tech companies, and contribute to open source projects on GitHub.
Job-seekers can then add both individual and open-source projects to their GitHub portfolios. Then, that can help them stand out to recruiters and hiring managers.
If you’re currently preparing for your technical interviews, check out our list of 93 software engineering technical interview questions.
What is software engineering? What does a software engineer do?
Software engineering is the practice of using computer science concepts and mathematical principles to design and develop software that meets a company’s or organization’s needs. A branch of computer science, software engineering is centered on developing software using established engineering methods, procedures, and concepts.
Software engineers help build operating systems, computer games, middleware, business applications, network controls, and more. They work alongside a variety of stakeholders across tech. Some of these people are clients, CEOs, founders, designers, marketers, customer support specialists, developers, and others. In fact, many software engineers spend more time in meetings than they do programming, depending on whether they are working for a startup, a major tech company, or somewhere in between. In addition to speaking about the project conceptually with non-technical audiences, software engineers draw diagrams and other models to tell web developers what to code.
Differentiating what software engineers do from what web developers do can be tricky. But, in general, software engineers focus on the architecture and design of the software itself. On the other hand, web developers build websites and create applications. For example, both software engineers test and debug their software to make sure that it is working as planned. However, they often approach the process differently. While software engineers also use pre-built tools, they typically need to create their own using programming languages like Python.
Relevant tools: Asana. Basecamp. JIRA. Slack. Zoom. Radare2. WinDbg. Valgrind. Chrome Dev Tools. React Developer Tools. Node Inspect. Sentry. Safari Develop Menu. ESLint. JS Bin. JSON Formatter and Validator. Webpack.
What types of roles fall under the software engineering umbrella?
Many software engineers have overlapping responsibilities with web developers and occasionally, data scientists and product designers. It is not uncommon for software engineers to participate in the development process, but most web developers are not engineers.
Software engineering is the fastest growing field in tech. So, there are quite a few specialties to choose from. People can specialize in front-end, back-end, and full-stack, as well as more niche roles, including quality assurance (QA), DevOps, security, and information architecture.
Depending on your background, you might be qualified for one of the positions listed below:
- Lead software engineer
- Technical architect
- Development team lead
- Software development manager
- Applications engineer
- New grad software engineer
- Software engineering, machine learning
- Enterprise security engineer
- Software engineer, infrastructure services
We have outlined the responsibilities and tools that fall under various software engineering roles in order to give you a better sense of what software engineers actually do.
Application (native mobile and web) engineer
Application engineers focus on meeting the end user’s needs. They design, build, install, and maintain web and native mobile apps that run on iOS, Android, Windows, and Linus. To ensure that the app meets the needs of the business or organization, application engineers continue to revise the software by conducting requirement analysis and releasing regular updates. As they build and maintain the application, they work with graphic designers, product designers, marketers, customer support specialists, and others.
While application engineers focus on client-side programs, systems engineers are responsible for coordinating the creation, maintenance, and growth of an organization’s computer system. Focusing on back-end engineering, they take into account the IT department’s needs, set up networks, evaluate the current software structure, and identify the limits of the company’s existing hardware.
To help standardize the company’s computer system, systems engineers design and enforce IT standards, as well as contribute to important IT documents. They work closely with data scientists, systems architects, development teams, and management to ensure that the system continues to meet the organization’s needs.
In general, systems engineers build the operating systems and networks that user-facing apps run on. They create and maintain databases that communicate with, and store information from, front-end applications. In fact, integrating different software products into a single platform is one of the key responsibilities assigned to systems engineers.
Relevant tools: Rust, Swift, C++, SQL, MongoDB, Nagios, ESX VMware, Microsoft HYper-V, Azure, Amazon Web Services, Python, Bash, PowerShell
DevOps engineers spend a good amount of time testing and deploying code. Besides coding and scripting, they have experience with systems and IT operations, and know their way around automation tools. They release small features quickly to ensure fewer failures and carefully monitor the product in the post-release stage. While some DevOps engineers focus on building automation tools, others work as quality assurance (QA) engineers and double check that the software meets all of the necessary requirements.
Relevant tools: Git/GitHub, Jenkins, Selenium, Docker, Puppet, Chef, Nagios, Prometheus, Consul, Ansible, Vagrant
Frequently referred to as “ethical hackers,” security engineers build systems, develop methods, and create procedures that allow them to identify security flaws. They attempt to hack their company’s own software in order to discover vulnerabilities, including cross-site scripting, cross-site request forgery, SQL injections, DoS attacks, XML/SOAP, API attacks, and more. Security engineers spearhead corporate security initiatives and make sure that employees and other stakeholders are safe from real-world threats.
Besides having a traditional background in programming, security engineers know the nuts and bolts of operating system internals (including macOS and Linux), digital forensics, incident responses, application sandboxing, and mobile UI design.
Relevant tools: Java, PHP, Perl, Python, Ruby, XML, HTML, Objective C, C#, XCode
Information technology (IT) architect
Some software engineers pursue a role in information technology architecture after they have 5-10 years of experience under their belt, as they must understand the workings of a company’s entire computer system. They approach the system holistically and focus on how certain components operate in the company’s larger technology ecosystem, including servers and middleware.
Working with IT management, IT architects ensure that the software’s architecture meets the needs and priorities of the organization. In particular, they pay close attention to IT security, cloud computing, and the hardware.They are also responsible for keeping up with the latest industry trends and deciding when to replace certain components.
Relevant tools: Juniper. Cisco. Arista. Aruba. NGINX. WMWare. Azure. Hadoop. Oracle. mySQL. Cloud Stack. GitHub. Zephyr. HTTP. DNS. UDP. Envoy. Mesos
Pathrise is a career accelerator that works with students and professionals 1-on-1 so they can land their dream job in tech. If you are interested in optimizing your software engineering job search by working 1-on-1 with a mentor, become a Pathrise fellow.