Chapters

Hide chapters

Hack Your Job Search

First Edition · College Graduates · Career Changers · Self-taught Developers

Section I: Getting Tactical About Your Job Search

Section 1: 6 chapters
Show chapters Hide chapters

Section II: Standing Out From the Crowd

Section 2: 5 chapters
Show chapters Hide chapters

3. Decoding Job Listings to Find the Right Roles
Written by Tim Condon

When you start looking at job postings, you’ll see a variety of different mobile dev titles and roles. For someone new to the industry, this can feel a little overwhelming. This chapter will show you how to navigate the complex market as you start looking for your first job in tech. By the end, you’ll be able to decode job listings and discover the right job and level to apply for.

Note: There’s no industry standard for job roles, grades and titles — which also vary from country to country and company to company. This chapter tries to ensure that you can find the right roles to apply for, even when the titles vary dramatically.

What You’ll Learn

This chapter will help you navigate confusing job listings so you can target the right roles for your skill set. Throughout the chapter, you’ll learn:

  • What different software engineering job titles mean.
  • How to pick the right role and level to apply for.
  • Real-world examples from job listings.
  • How to set a general course for your future career.

You’ll start with a deep dive into the tech titles you’ll see in job postings and what they mean.

Exploring Tech Job Titles

Job titles are used primarily for distinguishing a role’s level and area of expertise. A single company might have software engineering roles at a number of different levels, like so:

  • Junior Software Engineer
  • Software Engineer
  • Senior Software Engineer
  • Principal Software Engineer
  • Staff Software Engineer
  • And even more roles

Note: In some countries, “engineer” is a protected job title, and you need specific qualifications to use it. This isn’t common in the tech industry, so this book uses engineer and developer interchangeably.

As a recent graduate, you’ll be most interested in the first two titles. However, it’s never too early to start thinking about your future career path, so you’ll take a brief look at the more senior titles as well.

Note that all of the experience requirements in this chapter are general estimates; realistically, the exact amount will vary depending on the companies you work for.

Junior Software Engineer (0 Years of Experience)

Junior software engineer or junior developer is the entry-level position in tech. Companies expect junior developers to have very little experience, if any. If you have only completed a short bootcamp or course of study, this is a good level to target.

Although junior software engineers are expected to have a strong foundation in their chosen programming language, they won’t need to solve complex problems on their own. Instead, they work on basic implementations or pair with a more experienced developer to stretch their skills. They’re expected to ask a lot of questions.

Necessary skills for this role include:

  • A strong, demonstrated desire to learn and grow.
  • Good communication skills including the ability to ask questions appropriately and listen and learn from colleagues.
  • The ability to work well on a team.
  • A strong foundation in the programming language(s) you were hired to use. Sometimes, even having taken advanced classes is enough to fulfill this requirement.

Many companies provide training at this level. The opportunity to attend seminars, conferences and other learning events is an important perk to ask about in the interview process.

Software Engineer (1–2 Years of Experience)

This is the place most people start their career in tech. If you’ve graduated from a computer sciences program or a longer course of study, or if you’re confident in your general technical skills, you can apply for jobs at this level after graduation.

In this role, you’ll be expected to know the basics of building apps for your chosen field — like a simple mobile app — and be able to explain some common basic programming concepts. You’ll be expected to work in a team and help build apps with assistance and direction from senior developers.

Necessary skills for this role include:

  • Experience writing software as part of full-time work, college/bootcamp coursework, personal projects, internships, coding competitions or research.
  • Strong problem-solving skills and a passion for research and experimentation.
  • Good teamwork and communication skills.
  • A strong, demonstrated desire to learn and grow.

Additional skills that are helpful for this role:

  • Exposure to architectural patterns.
  • A basic understanding of testing and debugging.
  • Exposure to CI/CD tools.

You won’t be expected to make key decisions, decide on technical solutions or lead teams at this level.

Senior Software Engineer (5 Years of Experience)

After a few years of experience — somewhere around five years, though the exact time will depend on a mixture of your skill and how your company differentiates between levels — you’ll progress to a senior developer. This role brings more responsibilities.

As a senior software engineer, you’ll be expected to solve most problems without needing any help. When issues arise in your code, you’ll be expected to debug and solve them. You should have a solid understanding of the platform you develop on.

At this level, you’ll almost certainly be working closely with more junior team members, and you might be expected to mentor them. To this end, you need to be able to articulate solutions and explain problems in easy-to-understand ways.

Principal Software Engineer (7–8 Years of Experience)

When you reach principal, you’ll usually look after a team of developers. At this level, you’ll be able to find solutions for most problems you’ll face. You’ll have significant input into code development and architecture, and you’ll be expected to know and ensure best practices are followed. You might be responsible for significant portions of an app — or even the whole thing.

If you work at a company with clients, you’ll be expected to meet with them, demonstrate your apps and discuss — and implement — their feedback.

Staff Software Engineer and Above (10+ Years of Experience)

After around 10 years of experience, depending on your company, you’ll need to decide whether to remain an individual contributor (IC) or go down the engineering manager role path. If you choose to stay on as an IC, a staff engineer role is a good position to target.

As a staff engineer, you’ll be a specialist in your area of expertise. Expect to field questions that touch on your specialization from all over the company.

From here, you can continue to improve your skills and your specializations. You might move into a principal or distinguished software engineer role, or you might consider joining the management track as a Chief Technology Officer or other role. You’ll eventually help guide the company in making technical decisions, such as when to adopt new technology.

Now that you have a good idea of the available roles as an IC, it’s time to take a look at job descriptions to see which ones are a good fit for you.

Determining Which Level to Target

If you’re applying for your first role in tech after graduating — either from a bootcamp, a computer sciences course or individual study — you’ll probably apply at the base software engineer level. This is where most people who have a good software foundation but no professional experience will apply.

If you’ve only done a short bootcamp, or you’ve just started to study, you might target a junior level instead. As explained earlier, this also depends on the company and how it defines its levels.

This table gives you a basic idea of what skills are expected at the junior developer, software developer and senior software developer levels:

Mentor other team members Senior software developer Skill Level Choose project architecture Senior software developer Review others’ code Software developer Write unit tests for code to ensure code quality Software developer Improve skills and learn how to use new APIs and frameworks Junior software developer Independently implement features Software developer Write and debug code Junior software developer Talk through solutions in code Explain technical problems in layman’s terms to management and clients Junior software developer Senior software developer
Skill expectations grow as you go up the levels.

Keep in mind that different companies expect different things from the roles they post. More important than a title is the demands the company lists for their roles. Reading through the job specification is the best place to start to work out what level to apply at. Next, you’ll look at how to read job descriptions to determine whether they’re right for you.

Deciphering Job Descriptions

When looking for roles to apply to, job descriptions can be a confusing mess of buzzwords! Sometimes, the perfect role might be masquerading under an unfamiliar title. So, you’ll need to go beyond scanning job titles and read the job listings to work out whether a position is a good fit for your skills.

There are two main sections of the job description to look at: Qualifications and Responsibilities.

The Qualifications section provides a guideline for the experience you need to apply for the role. If a role only asks for educational experience, like a degree or bootcamp, then you probably qualify for it. If it requires multiple years of experience working on a platform, then you might want to put that on your “return to this in the future” list.

The Responsibilities section lists the key tasks you’ll do day to day. Generally, if it lists points like “problem-solving” and “good understanding” of technical areas, then you should add it to the list to consider. If it lists points like “guiding other team members”, “being a domain expert” or “independent problem-solving”, then the description is probably aimed at more senior developers.

Now that you know what the job posting wants, the question is: Do you have what it takes?

Do You Have the Skills?

What happens if you look over a job posting that seems to be targeting your level but you feel like you don’t have the skills you’ll need?

Well, you might have much more applicable experience than you realize. Not all of the work requirements have to be done on the job; some can come from your bootcamp projects or classwork.

Go through all the projects you’ve done, skills you’ve learned and code you’ve written to build your listed qualifications. Working on a group project in a bootcamp is a great example. You worked as part of a team, communicated with teammates, defined clear requirements, built apps and ensured that your code worked cohesively. A single project hits many requirements listed for entry-level job descriptions!

Furthermore, not all of the experience has to be in a tech-related job. If you’ve worked in other industries or taken part-time jobs while studying, you can use those skills to enhance your resume. For example, any customer-facing role, like retail work, proves you can work as part of a team and with clients.

When you start looking for your first job, it’s a good idea to look for ways to showcase your skills. Developing a portfolio is discussed more in Chapter 4, “Creating a Resume & Portfolio”. Working on projects where others can see your code, which enhances your resume, is discussed in Chapter 8, “Building in Public”.

Note: For some tips on applying skills from non-technical experience to your resume, see Jay Strawn’s article, How to Write the Perfect Resume After Graduating a Coding Bootcamp.

Finally, it’s worth applying to any roles that you find interesting or want to work at, even when you don’t hit all the requirements — especially if the role is with a smaller, more flexible company. If the company likes you, they may try to fit you in even if you don’t match the job description perfectly.

Next, you’ll get some examples of real job postings that you can compare to your current skill set.

Examples of Real Job Posts

To look at a real-world example, here’s a job description for a large tech company:

Key Job Responsibilities

• Design, develop and maintain our iOS mobile apps.

• Work with team members to investigate design approaches, prototype technology and evaluate technical feasibility.

• Lead architecture and design of features from conception to launch.

• Help improve engineering processes and tools to increase team effectiveness.

• Be part of an Agile development process to deliver high-quality software.

Basic Qualifications

• Experience contributing to the architecture and design (architecture, design patterns, reliability and scaling) of new and current systems.

• Non-internship professional software development experience.

• Programming experience with at least one modern language such as Java, C++ or C# including object-oriented design.

• Bachelor’s degree in Computer Science, Computer Engineering or related field, or equivalent practical experience.

• Proficiency in Computer Science fundamentals such as object-oriented design, data structures, algorithm design, problem-solving and complexity analysis.

• iOS mobile application development experience in Objective-C and Swift.

• Experience communicating technical problems to both technical and business audiences verbally and in writing.

Preferred Qualifications

• Master’s degree in Computer Science, Computer Engineering or related field, or equivalent practical experience.

• Deep understanding of Agile principles and exposure to various process implementations.

• Proficient understanding of code versioning tools such as Git.

• Experience with reactive programming frameworks.

• Experience optimizing apps for performance.

• Experience writing testable code and automated tests.

• Experience with deployments to the App Store.

• Experience with REST architecture for web services.

• Knowledge of professional software engineering practices and best practices for full software development lifecycle, including coding standards, code reviews, source control management, continuous deployments, testing and operations.

In this example, the job posting is split into three sections: responsibilities, basic qualifications and preferred qualifications. The responsibilities section describes your day-to-day responsibilities. So, in this example, you’ll work on iOS apps as part of a team. You might be responsible for building specific features, and you’ll be expected to explain code and decisions to your team. The basic qualifications section shows what experience you should have.

When tailoring your resume for the job (See Chapter 4, “Creating a Resume & Portfolio”), you should ensure you have something for each point. So, in the above example:

  • Experience contributing to architecture and design: You can use any complex app you’ve built as an example.
  • Professional software experience: This may feel like it’s excluding those who don’t have any professional experience, but you may find this on graduate-level jobs. In most cases, you can use any work experience or projects for this, so don’t let it put you off!
  • Experience with one modern language: Everyone graduating from a bootcamp or computer science degree should have this!
  • Degree or equivalent experience: Again, a bootcamp would also count for this.
  • Proficiency in computer science fundamentals: You should cover some basics on this in your bootcamp or degree. This is also a pointer for things to look into when preparing for an interview.
  • iOS mobile app experience: You should have this if applying for an iOS developer job! Going through some tutorials should suffice if it wasn’t covered in your bootcamp or degree.
  • Experience communicating: Any team projects you’ve done will count for this!

Overall, this posting is aimed at the software developer level, and most recent graduates with iOS development experience — either outside or during their education — would be fine applying.

The next example, for a clean energy company, is more clear-cut:

About you…

• You’re someone who thrives on uncertainty and loves to make an impact.

• You’re passionate about what you do, and that shows through your enthusiasm and communication.

• Your values align with the company’s; you care about sustainability and creating a better future for our planet.

• You enjoy contributing across the whole development process including design, product management and staying on top of upcoming technologies that could benefit the business.

What you’ll have

• A computer science degree or equivalent (not essential but desirable).

• Can demonstrate having built one Android app as a hobby or as part of a degree.

• Knowledge and experience with Kotlin.

• Are keen to develop features across Android & iOS (previous exposure to iOS development is a plus, but not required).

• Are excited to learn new technologies like Jetpack Compose and GraphQL.

• Passionate about great app design and user experience.

The format of this posting is different, but the “About you” section provides some guidance about the type of company and its culture. The call-out to sustainability is easy to spot for someone who wants to work in an environmentally conscious company.

The “What you’ll have” section provides the basic experience and qualifications you need. You can see that anyone who’s done some Kotlin and built any kind of Android app would be able to apply. This job is aimed at junior developers and above.

The final example shows the other end of the spectrum:

Qualities and skills sought

• Solid industry experience building well-implemented and really usable native iOS and/or Android apps.

• A willingness to work dual-platform and across all aspects of the apps — you may cross-train within this role.

• Adept with Swift and/or Kotlin.

• Experience with SwiftUI and/or Jetpack Compose.

• Experience using SaaS APIs in a mobile app.

• Excellent analytical and problem-solving skills.

• Familiarity with best practice mobile app architectures.

• Familiarity with mobile unit testing.

• A self-starting, innovative and collaboration-oriented approach.

You can extract key details from this description. They expect experience in a number of areas you likely won’t have covered in much depth, such as unit testing, architecture and working with different APIs. The first point for “solid industry experience” shows that they’re looking for someone who’s worked on a large professional app. Overall, this is aimed at the top end of software developers or senior software developers, so unlikely to be suitable to recent university or bootcamp graduates.

Remember that every company is different and that titles for equivalent roles vary, sometimes even from department to department within the same company! Read the job description thoroughly, and when in doubt, if you like the job, then apply. See Chapter 1, “Evaluating Your Options”, for more on when to apply for different roles.

Thinking About Your Future

You’re at an early stage in your career now, but as you gain experience, you’ll also have more opportunities for advancement. Here’s a quick look at how to interpret job levels and opportunities for promotion moving forward.

Interpreting Grades Within a Role

Some companies have different levels of seniority within each role. These levels, or grades, will determine your compensation. You’ll move through the grades as you get more experience and take on more responsibilities.

When you first start out, target grade one. For example, “Software Engineer I” sounds like a good role to explore.

Getting Promoted

It’s never too early to start thinking about your next steps, even as you’re taking your first ones. One thing that you should consider as you start interviewing is your path to promotion once you get hired.

Most companies have specific processes for getting promotions. Some will require you to make your case to a promotion board, but this practice is becoming less common. Normally, when you start taking on responsibility and fulfilling the requirements of the grade above you, you or your manager will put you forward for promotion.

Many companies have a framework for determining what you need to do to progress in your career. For example, Monzo, a UK fintech company, has published its career progression framework. This describes the impact, technical skills and behaviors expected of you at each grade and level.

It’s worth searching the website of the company you’re applying to in case they publish a similar public framework.

Congratulations, you’ve made it to the end of the chapter! By this point in the book, you’ve learned which skills you need to apply, how to pick the kinds of companies you want to work for, and what the different job roles mean. Next, you’ll look at how to create a resume and portfolio that will help you land an interview. Then you’ll be ready to apply.

Key Takeaways

  • Most people will apply for roles at the graduate level: Software Developer, Software Engineer or Junior Developer.
  • Companies use different job descriptions for the same levels. Read the Qualifications section of a job listing to work out which roles are right for you.
  • Don’t be afraid to apply for roles that seem out of reach.

Action Plan

  • Write down your skills from your bootcamp, experience and/or degree.
  • Write down any potentially relevant experience from other jobs, even if they weren’t in tech.
  • Find job descriptions and highlight key responsibilities and expectations.
  • Work out the roles to apply for.
  • Pick out key responsibilities and qualifications from job descriptions and match your skills to them.

Reflect on what you’ve learned: Find this chapter’s worksheet (PDF) in this book’s GitHub materials repo.

Have a technical question? Want to report a bug? You can ask questions and report bugs to the book authors in our official book forum here.
© 2024 Kodeco Inc.