June 30, 2022
In this second part of a three-blog-miniseries on the path to a software engineering career we’ll cover the necessary steps to signing your first software engineer job offer.
Software engineering is a highly technical profession that can easily span a person’s entire career. It involves not only programming but also other technical tasks such as system design and non-technical work including task prioritization and project planning.
While many software engineers (SWEs) go into the industry directly after graduating college with either a bachelors, masters, or PhD degree in computer science, there are also plenty of SWEs from other walks of life.
Fortunately, most job requirements are focused on experience and skills instead of pedigree. This means that, regardless of education and background, there are a few steps every candidate must navigate to land a job offer.
SWE roles, just like any other job, have requirements and qualifications. While most entry-level positions won’t ask for much prior experience, there are often technical skill requirements:
Often, depending on role (frontend, backend, full stack, mobile, etc.), job listings will include specific requirements for experience in at least one programming language. Some of the most common ones are:
Another common job requirement is familiarity with common frameworks or infrastructure. Common ones include:
React (for frontend/full-stack roles)
Nodejs (for backend/full-stack roles)
Various Apache Proejcts (Cassandra, Kafka, etc.)
Cloud infrastructure (Amazon Web Services, Google Cloud, Microsoft Azure, etc.)
Finally, many job descriptions will also require understanding of specific software engineering concepts and design patterns. Some common ones are:
Object-oriented programming (OOP)
Model-View-Controller (MVC) architecture
If you have experience with at least a few technical skills requirements for a particular job listing, there’s a good chance the recruiter will pass your resume along to hiring managers and get you an interview.
You can find courses, tutorials and other educational content for almost any skill online these days, so by no means is it a requirement to learn these technical skills through a college degree.
It’s also worth pointing out that SWE job listings often have a ‘required qualifications’ and a ‘preferred qualifications’ section. The preferred qualifications are tougher, but it is by no means necessary to achieve all of them to get the job. In fact, many employers will hire SWEs that only have one or two of the preferred qualifications.
Once you’ve got the right skills on your resume, it’s time to prepare for interviews. For most SWE positions, there will likely be several interviews with different interviewers, and at least one of the interviews will be technical.
Preparing for technical interviews takes patience, time, and a lot of effort, but it’s well worth it. While entry-level roles don’t have as much variance in total compensation as more senior roles, the difference in pay between junior SWEs in top-tier tech companies (Meta, Google, Airbnb, etc.) and average companies can still be 2x or more.
There are books and entire courses dedicated to software engineering interview prep, so we won’t go into the details in this post (but we’ll likely create future content on this - so stay tuned!).
The main takeaway here is that practice makes perfect. Technical interviews are full of whiteboard (written by hand or on a plaintext editor, not using real dev environments) computer science and coding problems, and the key to acing interviews is to solve practice problems.
A good place to start is Leetcode, a platform tailored to practicing technical interview problems. It contains tens of thousands of real interview questions, making it one of the most popular platforms for developers and aspiring developers. Some people will solve upwards of 500 problems while job hunting.
Of course, not all interviews will be technical. Many companies will also include some type of behavioral interview to assess a candidate’s soft skills. These interviews usually come in the form of open-ended questions such as “how would you deal with a difficult colleague?” or “can you tell me about a time when you had to make a difficult decision?”.
These non-technical interviews should not be taken lightly - they are just as important. They are more subjective by nature, but if an interviewer finds red flags during a behavioral interview it could end your chances of getting an offer.
While you’re preparing for technical interviews, it’s also important to update and polish your resume. Although some job postings will accept LinkedIn or Github profiles, most will still require a resume.
Resumes serve one and only one purpose - landing an interview. Recruiters and hiring managers will select candidates with the strongest resumes for 1-on-1 interviews, and all other candidates will either never be contacted or receive a generic “Thank you for your application. Unfortunately, …” reply via email.
For most entry-level jobs, there’s little prior experience required, so any internships, research work, or even volunteering work (in a technical capacity of course) will help your resume stand out.
Recruiters also want to see that you have the technical skills (discussed above) the job requires. Make sure your resume includes projects or previous experience that covers those skills. A great way to demonstrate this is to build mobile and web apps using any of the dozens of free APIs from API Ninjas.
Different jobs have different requirements, so it may make sense to keep multiple versions of your 1-page resume (yes, unless you are a seasoned researcher with a long tenure, resumes should be single-paged) tailored towards specific job requirements.
Once your resume is ready to go it’s time to start applying. There are generally 3 ways to apply: applying directly, getting a referral, and using third-party recruiters.
Most people looking for SWE jobs will apply directly to a job posting either on an employer’s website or through a job listing site like indeed.com. This process is usually pretty straightforward - you apply online with your basic contact information and resume.
The only downside to applying directly is that sometimes your application gets lost in a sea of other applications, or that some algorithm that reads resumes and scans for keywords decides to auto-reject your application. To ensure your application actually makes it to a human recruiter, consider getting a referral.
Referrals provide the best chance of getting an interview because it ensures your application actually reaches a recruiter or hiring manager.
The content of the referral (i.e. what the referrer says about a candidate) is sometimes important. At smaller companies where reputation and who you know matters more, strong referrals will actually carry some weight in the hire/no-hire decision making process, but at large tech giants they usually do very little to influence the hiring outcome.
With so many tech job openings, there is no shortage of third-party recruiting firms. Recruiters like to reach out to promising candidates via LinkedIn with messages promising high salaries, great work-life balance and unlimited growth potential.
For entry-level roles, however, third-party recruiters play less of an important part because many companies will recruit directly from colleges for new graduates. It’s perfectly fine to work with third-party recruiters since the employer will be the one paying them a finders fee.
Do, however, pay attention to the job openings they throw your way. Third-party recruiters will often work with you to get the job you want, but sometimes there are conflicts of interest (e.g. if a client employer urgently needs to fill a role, a recruiter may push you to sign an offer even if it’s not the right job for you). Always do your own diligence.
Once you start getting positive responses from employers, it’s time to start setting up interviews. SWE positions typically have anywhere from 2-6 interviews, and sometimes these interviews are split into separate rounds.
For example, large tech companies like to split the interview process into 2 rounds: the phone screen, which is normally 1-2 technical interviews done virtually, and the on-site, which is usually a whole day of 4-5 back-to-back interviews done at the company’s office (although since COVID-19, many onsite interviews are also virtual now).
A popular strategy to scheduling interviews is to rank them in order of job desirability, and start with the lowest ones. The idea is that you want to get as much real interview experience as possible before tackling interviews for your dream job(s).
When actually attending interviews, all you need to do is exercise common sense (i.e. make sure you’re not late, check your internet connection if it’s a virtual interview, don’t pull an all-nighter playing video games the night before) and do your best.
Interviewing is a numbers game. Even the best candidates have their ‘off’ days, so you want to cast your net as wide as possible and line up multiple interviews. Many candidates aim to interview for at least 10 positions, and some go as high as 50 or 60.
Finally, it’s worth noting that it’s perfectly acceptable to decline/cancel future interviews if you already decide on an offer. Some recruiters may become frustrated that you’ve been poached by a competitor, but by declining you’ll save your time and free up their interview schedules for other promising candidates.
If you’re fortunate enough to receive more than one offer letter, well, you have a great problem on your hands.
Picking the right offer can be extremely simple or complicated. If you have several offers from similar companies in the same area, picking the job with the highest compensation seems like an obvious choice.
On the other hand, if you have offers from both startups and large tech companies, and the offers are in different cities with different costs of living, you may have a dilemma on your hands.
Everyone’s situation is different, so we’re not going to provide a formula for deciding between offers, but we will highlight a few key considerations:
It’s no secret SWEs often enjoy very good pay, so naturally compensation is one of the first things candidates think about.
Unlike many other professions which pay a fixed cash salary, many SWEs are paid a mix of cash and stock (also known as Restricted Stock Unit or RSU) to incentivize better alignment with the employer’s business goals.
Stocks can be tricky to evaluate because share prices change very frequently, making your compensation more variable. This is even tougher with offers from private companies since you cannot sell your stock freely on an open market.
Some people choose larger, public tech companies because their stock prices are more stable, whereas others opt for smaller public or private companies for the growth potential (more growth often translates to higher share prices).
For an entry-level hire, career trajectory is crucial. Different SWEs may have different career goals, but it’s never too early to think about trajectory.
And not all companies offer good career growth. Some employers may lure in candidates with a solid offer letter but fail to mention the average time to promotion is 4 years whereas other employers may promote their engineers in 2 years.
Of course the job market partially accounts for these discrepancies when hiring, but it is certainly true some employers offer better and more opportunities for growth, and of course with career growth comes better pay.
Work-life balance is often overlooked until it is too late. Many people (especially young graduates) think that working hard is always the right thing to do, and that as long as they’re being compensated well there is no such thing as working too hard.
Before signing an offer letter, do some research on the employer. Employment review platforms like GlassDoor are a good start, or you can try anonymous forums like Blind. Are people complaining about nights and weekends? Is the oncall pager always beeping at 3AM?
Even if you decide to take a demanding job for other benefits such as better pay, it’s worth doing some research so you know what’s coming and can properly set expectations around your personal life accordingly.
Two job offers with the same pay can translate to wildly different living standards depending on where the job is located. Within the US, there are cities with extremely high cost of living (New York, San Francisco), and there are also many areas with lower cost of living.
It’s important to consider how far your pay will get you where you live. Some key factors that contribute to cost of living are housing costs, transportation expenses, food costs and entertainment costs.
Housing cost is the largest contributor to unaffordability and high costs of living. Whether it’s renting an apartment or buying a home, location can multiply a house or condo’s value 10 times. So if you earn $100,000 a year in the San Francisco Bay area, your lifestyle will probably be very different from a person who earns the same in Nebraska.