2.
Types of Jobs Available
Written by Tim Condon
Getting into the tech industry sounds like a solid goal. But once you get closer to actually applying for a job, you realize that you have a lot of options — which means that you also have to make a lot of decisions. Even as a junior dev, you’ll choose among a wide variety of roles, areas of expertise and types of companies to work for.
To help you make a choice that works for you, you need to consider what you want from your career and what brings you satisfaction in a job. This chapter will give you a solid start.
What You’ll Learn
In this chapter, you’ll narrow down your potential job search from “a role in tech” to a specific job position and type of company. Along the way, you’ll learn:
- What kinds of tech roles are available today.
- How company size affects your search.
- Which perks to prioritize.
- How to evaluate a company’s culture and technologies.
It’s time to get started!
What to Consider When Picking a Role
Now that you know some of the options available to you in tech, you can start thinking about the direction you want to follow. There are a few steps to deciding what you need out of a job. The first step, as described above, is to think about which roles match your personality and make you feel excited about working in them. However, there are some additional considerations as well.
These considerations include:
- The type of dev role that suits you best.
- How well different roles pay.
- The culture at the companies you’re applying to.
- The perks each role offers.
Next, you’ll learn more about each of these considerations. And then it will be time to look at which companies will be able to meet these goals.
Before you can apply for a position, you need to decide what type of developer you want to be. When getting into tech, you’ll likely start at a junior level, but you might be surprised to realize you have options beyond simply being a “software developer”. Software development itself includes several subcategories, and there are also roles like data scientist, site reliability engineer (SRE), test engineer, infrastructure developer — the list goes on!
To help you narrow your focus, you’ll start by learning about some common roles for people entering the tech job market.
Software Engineering
When most people start thinking about a role in tech, they’re usually visualizing a role as a software engineer or software developer. Software developers (hopefully!) spend most of their day writing code, whether that means creating mobile apps for consumers or building APIs (application programming interfaces) for mobile apps to consume.
Some of the different roles in software development include:
Front-end Developer
Builds websites and web applications for browsers.
- Important skills: The day-to-day work usually involves writing JavaScript or TypeScript. For this role, you’ll need to know at least some HTML, CSS and web design principles. You may also work closely with a design team to build websites.
- Best suited to: Someone who enjoys design and building things where you get an instant visual reward.
Mobile Developer
Works on apps for mobile devices like phones, tablets and wearables.
- Important skills: Generally, you’ll use a programming language like Swift or Kotlin or a cross-platform framework like Flutter or React Native.
- Best suited to: A developer who enjoys designing and making apps for mobile devices.
Back-end Engineer
Creates APIs for apps to use. This role gives you a lot variety in the technologies you’ll use because most languages support building APIs. Be sure to discuss tech stack choices when you interview for back-end engineer positions. Depending on a company’s size, you might work closely with the front-end engineers who use the APIs you build.
- Important skills: When you build back-end apps, you need to consider how to run and deploy them. Therefore, it’s useful to know something about AWS (Amazon Web Services) and Google Cloud. You should also have a good understanding of HTTP and sending and receiving API requests.
- Best suited to: People who enjoy working with projects that have several moving parts and who are interested in server technologies and learning how to deal with large numbers of users.
Full-stack Developer
Covers both front-end and back-end development, as well as additional responsibilities like managing infrastructure. Most companies have different roles for front- and back-end development, but smaller companies might ask you to do a bit of everything.
- Important skills: You’ll need to understand the differences between front-end and back-end development and how they fit together. You should be able to learn how to apply your skills to a number of different areas.
- Best suited to: People who are looking for variety and responsibility and enjoy learning different technologies. People who enjoy smaller company environments where they have a wider impact.
Library Developer
Builds libraries and SDKs (software development kits) for other developers to use. In this role, you’ll work closely with other developers and have the satisfaction of knowing that lots of different teams use the libraries you build.
- Important skills: You should have experience using existing libraries and SDKs so you know how to make your own projects useful. You need to be able to communicate with other developers to find out what they need and be good at writing technical documentation.
- Best suited to: People who enjoy having fellow developers rather than end users as customers. People who enjoy writing code that other people will use.
Each role has different responsibilities and day-to-day tasks. If you enjoy creating beautiful apps for users, then front-end or mobile development is for you. If you really enjoy working with other developers, library development is a good choice.
Some of these roles are user-facing, meaning you’ll be building directly for consumers. It’s really rewarding to see that someone sitting next to you at a coffee shop is using the app you built! Likewise, building APIs and seeing how many people use your code every hour is a great feeling.
But software development is just the tip of the iceberg when it comes to roles in tech. There are other types of positions you might consider applying for as well.
Data Engineering
Data engineers focus on collecting, storing and analyzing data to help a business make informed decisions. This might involve working out why product sales spike at certain times of the year or trying to predict how changing your website will affect site traffic.
Data engineering relies heavily on math, so you’ll need a good understanding of statistics for the role. Knowledge of machine learning is also useful to help you automate repetitive tasks, predict future occurrences and find trends in the data.
- Important skills: Statistics and mathematics are important for this role. You should have some knowledge of tools used to analyze data and how to interpret the results.
- Best suited to: People who like numbers, experiments and discerning patterns from data.
Test Engineering
The traditional view of software testing involves groups of people following a spreadsheet to manually check different parts of an app. These days, however, things are very different!
Dedicated test engineers, also known as quality assurance or QA engineers, help automate testing. This lets them find problems more quickly, test more areas of the app and release fixes faster.
Test engineers build tooling to help run tests for their teams, then work closely with developers to see how best to test the apps.
- Important skills: You should have experience testing frameworks and writing tests for mobile devices, networks or websites. You should also know how to write scripts to help automate testing.
- Best suited to: Folks who like exploring and breaking things!
Infrastructure Engineering
Modern software is so complex that there is a tech role dedicated to building and deploying apps that are reliable and work flawlessly for users around the world.
Infrastructure engineers, or site reliability engineers (SREs), are responsible for working out how to release apps. For example, SREs build tooling to make global deployments simpler, work with developers to ensure that apps scale to meet demand and create strategies to handle entire data centers going offline. You may also hear this role referred to as DevOps, short for developer operations.
Site reliability engineers historically work at larger companies, but many smaller companies are starting to incorporate SREs into their teams.
- Important skills: You need to be able to write scripts and automate many aspects of deploying and monitoring apps and sites. You should be willing to learn how to deploy apps, keep them secure and ensure they don’t break.
- Best suited to: People who want to work in larger organizations and who are interested in the lower levels of technology like networking and hardware.
Developer Relations
Developer relations, or DevRel for short, is a common role in companies that make products for other developers. A DevRel’s goal is to deeply understand their own products so they can showcase how they work to the developers who need them.
DevRels present at conferences and field questions from developers on how to use their products. Because the role involves creating videos and writing tutorials and blog posts, it’s useful to have strong writing and presentation skills.
This job suits someone who enjoys a lot of variety in their work life. They often find themselves in situations where they don’t know exactly which products or SDKs might fill a potential customer’s needs, making this a great role for someone who likes investigating solutions.
- Important skills: Content creation, including writing, coding sample apps and filming and editing videos. Willingness and ability to travel to conferences and present talks. Being able to present new technologies in different ways that others will understand.
- Best suited to: People who enjoy creating content, exploring new technologies and teaching and engaging with other developers.
Other Roles
The list above is just a sample of the roles you can pursue in technology. There are lots of others! Cybersecurity engineers ensure that products are secure. Database administrators (DBAs) make databases that are quick and efficient. There are network engineers, platform developers, machine learning experts and many more. For any field that interests you, there’s probably a role that focuses on that area.
If that feels overwhelming, don’t worry. You’ll probably move around roles as you progress in your career, so you don’t have to stress about finding the one that’s perfect for you at the beginning. Once you have your foot in the door, it’s much easier to switch.
When looking for a particular role, make sure you read the job description carefully to see if it involves what you want to work on. For example, if you’re looking for a mobile developer role, check to see whether you’ll work with native technologies or a cross-platform framework because those are two very different experiences.
Keep in mind, you can also pursue jobs that are based on research and not development. Research involves a lot of exploration, which is great for curious minds. It’s exciting to try and make things work! However, the work you do might never be seen outside of your team.
That said, programmers who work in research fields provide essential expertise to the wider academic community. For example, bioinformatics programmers at SRI International developed the Pathway Tools in the BioCyc Genome Database Collection. Now, they help scientists learn more about metabolic networks. If you’re expert in a field in addition to computing, using your programming skills to improve research in that field could be a satisfying challenge.
Which Roles Pay Best?
One important consideration, of course, is how much you’ll earn in different roles. If you’re undecided about the path you want to take, choosing one that pays better is a smart decision. However, it’s important to remember that salaries are likely to be lower and less varied between different roles when you start out.
According to a report from Dice on tech salaries, the top-paying jobs are cybersecurity engineers and data scientists — roles that require specialized expertise. These aren’t likely to be jobs that you’ll land fresh out of a bootcamp or course of study, but you might want to consider directing future goals in that direction.
Levels.fyi is a good site to find out average salaries for roles, companies and locations. However, be sure to work out what your total compensation package is before making a decision. Many companies offer stock options with different vesting periods on top of salaries, and other benefits, like being able to work from home, make a big difference, too.
Considering a Company’s Industry, Culture and Perks
The same role can feel very different depending on where you work; a good culture fit can make the difference between loving and hating your job. That’s why financial compensation is only one part of job satisfaction; you also need to consider other aspects, like feeling that you’re doing something worthwhile and a company culture that helps you thrive.
First, imagine the kind of positive impact you’d like to have in your job. This could mean working on clean energy technology to combat climate change or developing an app to bring your local community together. Or it might mean working for a company with millions of users, knowing that your work will have a big impact. Everyone is different, so think about what you envision bringing you satisfaction in your job.
Tip: For a rubric about how to quantify what’s important for you in a company, see Jeff Rames’ article, How to Decide If a Company Is Right for You.
In terms of company culture, think about what makes you respect a company and enjoy working for them more. Some non-technical company core values you might want to consider include:
- Remote or in-office: The COVID-19 pandemic has changed working forever, especially in tech. Many people are choosing to work remotely to give them greater flexibility to live where they want, spend more time with their family and friends and stop commuting. Others enjoy a greater sense of teamwork from working with their colleagues in person. Especially as a beginner developer, meeting your mentors face-to-face on a daily basis can be helpful. You’ll need to think about this and decide which work environment is right for you.
- Commitment to diversity: Does the company understand the value of hiring people from a broad variety of backgrounds? Do they demonstrate diversity in their senior leadership?
- Placing value on fun: Work and fun don’t have to be diametrically opposed. Some companies recognize that a workplace that values fun as well as hard work fosters better morale and less burnout.
- Good work/life balance: The days of all-night coding sessions just to keep your job are over. Does the company respect its employees as people, offering flexible and reasonable working hours and a generous (or unlimited) vacation policy?
Perks to Consider
Software developers are always in short supply, so many companies offer juicy perks to entice good devs to work for them. This could be free meals at the office or free laundry. There might be an onsite gym for you to use, foosball tables or even nap pods. These perks shouldn’t be your main focus, but they might help you decide between similar offers.
There are many aspects of company culture to consider, so working out what matters to you is an important step. For example, when I last looked for a job, I wrote a list of qualities I wanted in my next role. Some of the qualities I was looking for in the company included:
-
Data-driven: Should A/B test all features, gather metrics about performance and use these to determine their direction.
-
Engineering based: Have a solid engineering foundation. Use Agile best practices such as test-driven development and pair programming.
-
Learning-oriented: Have an opportunity to attend conferences, go on training courses and share knowledge with colleagues.
-
Transparent: Be open with customers and within the company. Allow dialogs and conversations. Let everyone question everything.
-
Automated: Spend time developing tools to deploy and release as quickly as possible, as often as possible.
-
User-oriented: Provide a great user experience and design accessibility and internationalization into the app from the start.
-
Open source: Have an established practice of giving back to the open-source projects they use, including making upstream fixes and releasing internally developed tools and libraries.
-
Friendly to blogging: Offer opportunities to write blog posts on interesting issues and engineering problems to share with the community, as well as sharing fun challenges and innovative solutions.
-
Sustainable: Have a plan to be net zero. Potentially, be a registered B-corp.
-
Flexible: I didn’t want to get stuck in a rigid 9-to-5!
-
Fun: Doesn’t take life too seriously. Personable and fun in documentation and onboarding, both internally and publicly.
Some of these may resonate with you, others may not be important at all. But coming up with a list that’s personal to you makes it easier to work out what roles to apply for.
If you’re not sure what aspects are important to you, discuss it with your family and friends. A different perspective is always useful.
Deciding on a Company Type
Once you’ve decided on the type of role you want to apply for and the culture you want to work in, it’s time to narrow down the list of companies you want to work for by evaluating which company types are most likely to fit the bill. There are almost as many types of companies as there are roles in tech.
Working for a large company feels very different from a small company for their employees. Large companies tend to be more stable and usually have a well-defined career progression through the many roles within that company. When working at a large company, you have the opportunity to become an expert in a very narrow field. There’s also more opportunity to work on projects that have a wider reach. Generally, you’ll encounter more structure and clearer management at large companies, as well as well-defined communication workflows and documentation and processes. This may or may not suit you!
Smaller companies are very different. Start-ups are fast-moving and can be exciting and dynamic. You’ll have more of an opportunity to make an impact and work on a wide range of problems. You’ll also be required to help out in many functions that aren’t necessarily part of your traditional role. As a software developer at a start-up, your day-to-day work will vary and you’ll move between writing code, deploying apps, testing and being on-call to handle live issues. You might even be called to help out with marketing or customer service. In a large company, different people handle all these separate roles.
The common expectation is that start-ups offer better pay, whereas larger companies offer better stock options or benefits like pension plans and healthcare. A word of caution however — start-ups can be risky, especially if they haven’t launched yet. Future companies want to see what you’ve worked on, and if the start-up fails before your app even reaches the App Store, it’s difficult to showcase your work.
The size of a company influences its culture, but doesn’t dictate it. Software developers are in high demand, so many companies, large and small, offer similar benefits, holidays and parental leave. Remember to think about what you want from a company, no matter its size.
Most people tend to gravitate to one company size over the other. Some people really enjoy working in a fast-paced environment that’s constantly changing and getting to work in different types of roles. Others prefer the stability of a large company and the ability to focus on one thing, as well as not worrying whether the company will still exist next month!
Investigating the Company Culture
So, how do you know which companies are a good culture fit? You can start by looking for the company’s core values. Usually found on their website, the core values tell you what a company thinks is important in terms of how it treats its customers and employees.
But how do you know whether a company really upholds its core values?
One of the best ways of getting an insight into a company is to look at their engineering blogs. Not only do these describe the kind of work you’ll do, but they also give you a sense of the company’s culture. You can see how much they invest in staff training, whether they use modern best practices for software development and how they work as a team. This can help you focus on companies that fit your personal criteria.
A comprehensive list of engineering blogs can be found at Kilimchoi’s GitHub. You can also follow employees on Twitter or LinkedIn to get an idea of what it’s like to work for their company.
Remember, the interview is a great place to ask questions directly to company employees to find out about their culture.
Key Takeaways
- Before you start interviewing, determine the role and company type that are best for you.
- There are many different kinds of software engineers. There are also roles in tech beyond software engineering, like quality review, developer relations, security and data analysis.
- You should also consider the company size and aspects of the culture that matter most to you.
- Aside from salary, evaluate the perks and benefits a company offers.
- Doing solid research on a company before you apply will save you time and effort.
Resources
As you consider different software engineering roles and where you might want to work, here are some references to keep current on salary and working conditions:
- Stack Overflow’s Annual Developer Survey includes responses from more than 70,000 developers worldwide across many different tech stacks. In addition to seeing salary by developer type and all the different developer roles represented in this survey, there’s interesting data about top technologies, languages and more. You can also download the data set to do your own analysis.
- Kodeco’s new State of Mobile Jobs survey includes 1,257 responses from mobile developers around the world. You can set filters to explore salary by country or by programming language as well as a number of other factors, including benefits offered and developer educational background.
- Equity 101 for Software Engineers at Big Tech and Startups offers a detailed discussion of how to evaluate equity, like stock or options, offered as part of a compensation package.
Action Plan
This chapter has given you a lot of things to think about before applying for your first role. Now, you should:
- Come up with a list of non-negotiable requirements for your desired job.
- Write down a list of things that are nice to have but you’d be willing to compromise on.
- Write a pros and cons list of working for a big or a small company, and decide which to target.
- Identify five companies that sound exciting to apply to. Investigate their culture by reading their engineering blogs and website.
- Reach out to your network, both in person and through LinkedIn or Twitter, to find people who work for those companies.
Reflect on what you’ve learned: Find this chapter’s worksheet (PDF) in this book’s GitHub materials repo.