There are many jobs within the software industry, and most of them are easier to land, or are higher-paying once you land them, if you have a solid grasp of computer science fundamentals. You don’t need a degree from an accredited university in 90% of cases, but you do need to learn the material, whether it be online, on the job, or in a formal setting. Let’s explore the most common computer science job titles and their associated compensation, details, and duties.
If you don’t feel you have a solid grasp of basic computer science skills yet, don’t worry! Here at Qvault, we offer straight-forward courses designed to get you a computer science job, without having to take out student loans or go to night school. You can sign up and demo them for free.
In the table below you’ll find the median salaries for various programming jobs according to Stack Overflow‘s annual developer survey in 2020. We can expect that in 2021 things will stay relatively similar. Accounting for inflation and industry growth, we’ll likely see a growth of around 2-4% for most positions, and once the 2021 data is out, we’ll update this chart accordingly.
Let’s jump into each role and see what makes them worth their salaries, the future outlooks for the positions, the average level of experience required for each position, and some of the best ways you can move into one of these careers. Oftentimes a degree is useful for landing these jobs, but it is almost never required, and learning computer science online is a great alternative that can save serious time and money.
The job titles listed here are, for the most part, very different. If you are planning on applying to two or three different kind of jobs, you should also have two or three distinct resumes you use. Each resume can be tailored to the specific job posting.
With great responsibility, comes a great salary. I believe Uncle Ben said that. As you can imagine, one way to earn more than the average developer is to manage an entire team of developers. At larger companies, candidates will likely need over ten years of experience to break into management, but at smaller companies, the rules are more flexible, with developers with as few as 5 years able to move into a higher leadership position. With that in mind, smaller companies also often don’t pay quite as well, with compensation often tied directly to the performance of the company as a whole.
- Plan & execute the software development process within a team
- Communicate with clients members of other departments
- Mentor junior programmers and be a leader and motivator for the entire team
- Create detailed reports, evaluate new technologies, and give presentations
- Coordinate effectively with customers, designers, and engineering teams to drive development
- Manage various competing demands to meet internal targets
- Plan effectively to consistently meet commitments made to customers and executives
- Recruit and retain a growing team of top-tier engineers
If you haven’t heard of DevOps, you probably need to get your head out of the sand. SRE’s play a huge role, especially at larger companies, making sure that a software companies site and services are always available. Think of the monetary disaster Google would face if their search engine was down for just a single hour. Many millions of dollars would wasted, and as such, companies like Google are willing to invest heavily in site reliability.
- Develop systems & software that keep sites and services online and responsive
- Respond as on-call support and manage outages
- Optimize software delivery systems for efficiency
- Turning high-touch manual processes into fully automatic solutions, and maintaining and improving existing automation.
- Use your clear understanding of automation and orchestration procedures to automate wherever and whenever possible while eliminating technical debt
- Find optimizations and other efficiencies in order to scale applications and services
- Communicate end-to-end configuration, technical dependencies, and overall behavioral characteristics of the production services you own
- Be an expert at articulating the technical characteristics of your services and the dependencies between services
- Understand and be able to communicate the scale, capacity, security, performance attributes, and requirements of the services you own
- Test, maintain and improve existing processes
- Implement, test, and maintain new processes
Artificial intelligence and Machine Learning are at the forefront of many new technologies such as self-driving cars, personal digital assistants (Google Assistant, Amazon Alexa), and even just automated vacuums like the Roomba. Since this field is growing so quickly, it can be hard for employers to find great talent, and competition is fierce. Becoming familiar with common AI algorithms, heuristics, and frameworks like Tensorflow can be enough to get yourself a job in the industry.
- Define models, then clean and feed data through them
- Take theoretical data science models and implement them in real-world systems
- Scale data pipelines up to ingest and process massive amounts of data
- Tweak hyperparameters based on research and results
- Help in the design, implementation, and improvement of AI/ML projects
- Build and maintain data pipelines to keep them stable, performant, and accurate
- Influence project priorities, deadlines, and deliverables
- Serve as a key resource to team members on engineering best practices, design, and coding standards
DevOps is a blanket term that includes philosophies, practices, and tools that increase the ability of an organization to deliver software. The idea is to blur the line between software management, deployment, testing, and development to improve products at a faster pace. This speed allows organizations to better serve customers and compete in a growing marketplace.
DevOps engineers need to have a solid understanding of scripting languages like Bash and Python and need to be experts with at least one of the major cloud providers like AWS, GCP, or Azure.
- Maintain website platforms and technologies
- Manage cloud infrastructure and resources
- Prioritize and repair databases, communication stacks, and services
- Manage cloud billing and budgets
- Develop tools and automate solutions to support on-premises and cloud services
- Install and configure applications and underlying software infrastructure
- Automate repetitive and manual tasks and improve operational maturity
- Maintain services by measuring and monitoring availability, latency, and overall system health
- Be part of an engineering team on-call rotation if required
Data engineers build and advocate for high-quality core data sources in a companies data warehouse. This involves crafting thoughtful data models, reliable data transformations and pipelines, and effective data structures for analytics. Think of a data engineer as the new and improved database administrator. Rather than managing a single database, a data engineer can be responsible for all things data and app state across a tech organization.
- Designing distributed systems
- Creating reliable pipelines
- Combine and architect data sources using robust ETL processes
- Collaborating with data science engineers
- Build and maintain core data model schemas for data warehouses
- Write code and scripts to transform incoming data from various databases and third-party systems to formats and structures in reusable data views
- Collaborate with data analysts, data scientists, AI software engineers, and stakeholders to make effective use of core data assets
- Monitor and improve the health of our data pipelines and quality
- Contribute to the evolution of tools, systems, and methods for harnessing data
- Help ensure appropriate data privacy and security
Back-end developers are the lifeblood of the web. They are responsible to writing the core application logic for websites, web apps, and mobile applications. Back-end developers can work in almost and language (and sometimes framework) under the sun, and typically spend most of their time interfacing with databases and writing APIs that make the front-end developer’s lives easier.
- PHP (God forbid – sorry if this is you)
- Django (Python)
- Flask (Python)
- Rails (Ruby)
- Laravel (PHP)
- Express (Node)
- .NET (C#)
Common back-end databases
- Postgres (SQL)
- MongoDB (NoSQL – Documents)
- MySQL (SQL)
- ElasticSearch (NoSQL – Search)
- Oracle – Don’t do this
- Redis – In-Memory Key/Value
- Be comfortable working with high volumes of data and user input
- Building security into the server-side of a customer-facing application
- Writing efficient database queries
- Designing useful APIs for front-end developers
- Design, build, deploy, operate, and maintain services often in a CI/CD environment
- Build repeatable and automated integration and unit tests
- Identify and participate in code refactoring needs
- Participate in code reviews and architecture discussions
Embedded software engineers develop software that controls various devices and machines that aren’t jsut traditional computers. Integrating software engineering with non-computer devices leads to the development of embedded systems. Embedded systems are most common in medical, consumer electronics, manufacturing science, aviation, automotive industries.
A typical embedded system requires a wide range of programming tools, microprocessors, IDEs, and operating systems. Think of the code that runs the remote control that’s connected to your TV. There isn’t an operating system that executes a
.exe file, but there is code running on the device. Embedded application engineers write that code.
- Write code with tight compute and memory constraints
- Work with difficult languages such as C, C++, and Rust
- Interact directly with the hardware
- Collaborate with mechanical or electrical engineers
- Work with low-level communications protocols
- Analyze processing speed and help identify areas to improve performance
Mobile developers are a kind of software engineer. They specialize in mobile software such as apps for Google’s Android and Apple’s iOS operating systems. Job titles for this type of role also include Android developer and iOS developer when the roles are more specific. Mobile devs learn the languages and development environment for their chosen platforms, for example, Swift Xcode, Kotlin, Java, and Android Studio.
- Design, create and maintain mobile apps (IOS, Android, etc)
- Work with native IDEs and languages like Java, Kotlin, and Swift
- Test, debug and improve mobile apps
- Collaborate with design and product teams
- Work with the development team to create high-quality mobile apps
- Follow QA processes to ensure quality
- Create apps that adhere to current Apple App Store and Google Play Store standards
- Self-manage completion of projects and work with project managers to meet deadlines
- Develop designs into applications with exactness
The “Computer Scientist” title means a lot of different things to different people. It seems (after browsing various job sites) that it usually involves government or security work. As a Computer Scientist you’ll use your skills to automate and enrich a variety of data in support of analytics and reports. CS employees sometimes need to bridge the gap between non-computer scientist analysts and other technical professions such as Data Scientists and software developers. Computer scientist jobs often involve continual learning and ongoing research into cutting-edge problems.
- Use applications and algorithms to find solutions to complex problems
- Conduct new research and analyze results of peer studies
- Work with government agencies or universities on grant-funded projects
Desktop developers write code for applications that run natively on computer’s operating systems like macOS, Windows, and Linux, and don’t necessarily require an internet connection. A desktop developer’s responsibilities depend on the kind of apps the employer creates and the senior of the dev in question. Desktop and enterprise app developers prototype, build, implement, and maintain the source code behind apps like Microsoft Word, VS Code, Slack, Google Chrome, and over the operating systems themselves.
- Work with legacy systems on battle-tested software
- Build out user-facing apps with a long deploy lifecycle
- Release backward-compatible updates to not disrupt existing users
- Build platforms that can be used by product engineers so that they can be as productive as possible
- Write modular, secure, and well-tested code
- Design and build software capable of reaching millions of daily users
- Ensure that development environments are best in class by delivering improvements to internal tooling
- Work closely with customer support to respond quickly to issues for users and solve those in a permanent and scalable way
Programming teachers, instructors, and professors can provide instruction on a wide range of computer science and coding courses. Curriculums vary widely depending on if the educator works at a university, for an eLearning site, or at a developer bootcamp.
- Develop curriculums to teach students the industry basics
- Release courses or articles online to promote education through eLearning
- In some cases, lead classes in person and provide tutoring and mentorship
It’s interesting to note that full-stack developers on average earn $8,000 less per year than back-end developers, even though they are responsible for both back-end and front-end duties. The reason is likely that pure back-end developers tend to work at larger companies where compensation is higher and where they can specialize more on the kinds of technologies they work with. As with most things, the more highly specialized the role, the higher the pay.
- Work with both the front and back end of web apps
- Database access and schema architecture
- Typically must be a go-getter, as this role is prevalent at startups
- Architect new applications quickly to optimize for developer speed
Game devs plan, design, and create video games for computers, mobile devices, or specialized consoles like Xbox, Nintendo, and PlayStation. Their work involves developing engines and writing code to implement the features and functionality required to make the game work. Game developers typically require more of a math, graphics, and CS background than the average web developer, because performance is of the utmost importance.
Many game programmers work full-time hours at game studios or larger companies, there are also many who prefer to work remotely or to self-publish their games as indy projects on platforms like Steam.
- Plan game projects and estimate completion time
- Test and debug games
- In some cases, especially at smaller companies, design the game’s rules and story
- Regularly release backward-compatible updates and balance patches
- Work within tight timelines, sometimes requiring long hours
Database administrators, also known as DBAs, use specialized software (databases) to store and organize data for a company or software project. The DBA role is still prevalent at legacy software companies, or companies with large relational databases, but isn’t found very often at newer cloud-based startups.
- Manage the performance of databases within an organization
- Plan and build new database architectures and interactions
- Protect the organization’s data against cyber-attacks and leaks
- Conduct maintenance and upgrades to keep databases running efficiently
Front-end web developers are responsible for implementing the entire visual and interactive component of a website or web application. Front-end engineers typically interface directly with the APIs, libraries, and data provided by the software written by back-end web developers. While front-end developers used to make quite a bit less than backend developers, that gap is tightening as more and more application logic is pushed to the front-end with frameworks like Vue, React, and Angular moving into the spotlight.
- Work with designers and establish the needs and preferences of website design
- Design, code, and modify websites and web apps
- Develop the UI and UX of applications
System administrators, also referred to as sysadmins, are responsible for the maintenance, configuration, purchasing, and reliable operation of a companies systems and software. They are typically responsible for the installation of software including email clients, billing systems, customer management software, and password managers. System administrators also actively resolve problems and issues with servers and infrastructure to limit disruptions of work within the organization. Of all the jobs on this list, they require some of the least CS, coding, and math skills.
- Basically an IT role, not necessarily a developer of software
- Design network infrastructure for the internal workings of the company
- Manage the organization’s software usage like email and customer management systems
QA engineers design and implement tests and debugging procedures at the companies they work for. QA engineers are often also responsible to track quality assurance metrics (e.g. defect densities and open defect counts.) and manage bug tracking software like Jira or Github issues. There is a distinct difference between a QA Engineer, and a”normal” QA role, and along with the differences in duties there is a very large pay gap.
A QA engineer will actually write and deploy code that automates the testing of the software in question. They will write unit tests, integration tests, and help build out a deployment pipeline. On the other hand, non-technical QA positions likely are required to simply act as a user of the software and manually report any issues they find.
- Use and create test automation software for deployment pipelines
- Run and develop new tests for existing applications
- Use bug tracking systems to document problems and aide engineers in identifying solutions
“Researcher” is kind of a vague title, so unfortunately there isn’t much for us to say about it. With that in mind, it usually means working with the government, a university, or an R&D agency on innovative algorithms or cryptography systems.
- Invent and design new approaches to computing technology and find innovative uses for existing technology
- Work with faculty and peers to find new research to conduct
Business analysts, also known as BI professionals, work alongside other business analysts and typically report directly to a project manager. Their main tasks include performing detailed requirements analysis, interfacing directly with databases, documenting processes, and performing user acceptance testing. BI (business intelligence) workers tend to spend time with some of the industry-standard tools like Domo or Tableau.
- Work with the internal organization to help them improve their processes and systems
- Know the ins and outs of popular databases like Postgres, MySQL, and Mongo in order to conduct BI research
- Perform analysis in order to come up with solutions to business problems
- Help to introduce data-driven solutions to businesses and their clients
UI/UX designers are often responsible for gathering user requirements, designing graphic elements and building navigation components. The software they use to create designs is rapidly changing, and there is fierce competition in that industry. In order to do well, a designer needs to stay up-to-date with the latest trends in the design tools, as well as design best-practices.
UI/UX designers typically don’t need any CS or programming experience, but I’ve actually seen some designers make a transition from front-end work to design because they enjoy the creative side.
- Understand and use popular design tools like Sketch, Illustrator, or Figma
- Provide useful application mockups to front-end engineers
- Build out and design intuitive UI and UX for websites and applications
If you’re new to the computer science field, be sure to check out our article on getting your first coding job without any experience.
Follow and hit us up on Twitter @q_vault if you have any questions or comments
Subscribe to our Newsletter for more programming articles