Whether you’re just starting out or looking for a change, finding a new software engineering job can seem like a daunting task. Let’s talk about some good and not-so-good places to start.
Define your goals
Start by understanding your highest-priority needs. Don’t worry whether what you want is good or bad. Come up with a statement that defines your professional objectives. For example:
- I just graduated from a coding bootcamp, and I need experience.
- My current job doesn’t seem to be going anywhere, and I need something new.
- I feel like I’m underpaid, and I asked my friends and they said I should be making a lot more money.
- I want to be able to work remotely so I can travel or stay near family.
In order to find a job that’s a good fit, you first have to identify what would make a job feel like a good fit, and that requires some honest exploration into understanding your own wants and needs. Once you’ve done that, you can narrow down the places you need to look to find good people and a company to work for.
Full-time or contracting?
For many people, considering whether the job will be full-time or a contract job isn’t even a question. Unless you have already decided, I’ve compared full-time and contracting previously, and it’s probably worth a read.
If you’ve just graduated from college or a bootcamp, you should look for full-time employment unless your life parameters dictate otherwise. Working full-time will give you steady income as well as the training and growth opportunities you won’t get when you for yourself. You’ll also begin to grow your professional network which will be extremely valuable in the future.
Remote or on-site?
Working from home in your underwear certainly has its advantages, but it’s not always the best option.
If you’re earlier in your career, working from home can be detrimental to your growth. Interactions over videoconference and especially chat will be more difficult than in person, and it will be harder to get the mentoring and support you need. You especially don’t want to be the only person on a team who is remote because you’ll simply never be valued as highly or included as much as the people who all see each other face-to-face.
A lot of companies advertise themselves as “remote-friendly,” but the truth is that it depends on how well they have set themselves up. Make sure a company you’re considering follows good remote practices, such as hiring good communicators, uses good collaborative tools, and has processes that force people to be communicative.
The ideal remote company is one that is “remote-first,” meaning they were designed to facilitate remote work from the start of the company, as opposed to bolting-on remote culture later in the company’s lifetime. Great examples of this are Zapier and GitLab.
Lots of tech companies in Silicon Valley now try to make the commute easier, since living near the workplace has become prohibitively expensive. Things like commute compensation, such as public transportation or Uber/Lyft reimbursement, are becoming much more common.
Finally, if you’re looking for on-site positions and you need a visa, make sure the company is willing to sponsor a work visa. Visas are complicated and not all companies will sponsor them.
So where do I look?
I’ll list some resources with the quality of opportunities you’ll find using them.
Best: Your friends
Who doesn’t want to work with people they already know, like, and trust? This isn’t to suggest nepotism or that friends will guarantee you get hired—the final decision in tech companies comes down to how well you interview with people who don’t know you—but friends can help refer you to companies using their internal systems and get hiring managers to prioritize you.
If you’re contracting, the best gigs come from people you know. My personal experience confirmed this, and while I was contracting I had plenty of work through connections from former co-workers. During a lull I reached out to an alumni network and was quickly oversaturated and even had to turn down offers.
Good: Local meetups
Are you using popular technology? Are there local meetups or events for it? This is a great way to hear about current trends as well as identify companies in your area that are using technology that you’re interested in. Usually the meetups are sponsored by one or more companies that are trying to hire aggressively, so you’ll walk away with at least one lead.
Even if you’re an introvert, make it a goal to meet at least one person. When everyone sits down for the main presentation of the night, turn to one side and introduce yourself to the person sitting next to you. Congratulations! You’ve added someone to your personal network.
Good: Online communities and conferences
Do you specialize in some kind of technology or framework? Is there a community of people around it? Where do they work and what do they do?
These communities might also have conferences, which might also happen near you. Like meetups, conferences are great places to meet people with similar interests. Conferences also have sponsors, who are probably hiring.
Good: Pre-screening and interviewing platforms
Recently, two new platforms have sprung up to pre-interview candidates, either in the form of interview practice or fun quizzes. This saves time by letting you effectively interview at multiple places at once. You’ll also get a sense of how well you’ll do in a “regular” company interview. Plus it standardizes the interviewing process a little across companies, which I personally hope will help to reduce random variation and interviewer bias.
I haven’t used these services personally other than taking the quizzes, but I would sign up if I were looking for a software engineering job tomorrow.
Good: Human-curated job boards
Job listing sources that feature human-curated job listings are a good source because human moderation helps maintain a high quality bar for listings.
A great example of this is the recurring Hacker News “Who’s Hiring” thread which appear every month. Employers must paste their job description in the plaintext text box and follow a certain format. People (or, more likely, employees of the listed companies) vote casually on the listings, so interesting opportunities appear towards the top. Plus, the links will instruct you on how to contact the company directly instead of dealing with an intermediary (more on that later).
Good: Venture capital portfolios
If you have an interest in startups and are willing to take risky bets with stock options instead of cash, or if you want to find groundbreaking companies with interesting missions, venture capital firms might be a good place to start looking. VC firms usually have lists of portfolio companies on their web sites, and many of the bigger firms have their own in-house recruiting teams.
This is a good route to finding jobs because researching a company you want to work for is important, and this method puts that step first. You’ll be more likely to find a company you align with. Plus, a lot of venture capital goes into tech companies, and tech companies know how to best treat their tech workers. If they don’t use a technology you already know, you might get hints on what you need to learn to work there.
Good: Engineering-focused job boards
Tech-focused job boards can be a great way to casually look through a list of job listings. Because they’re focused on software engineering, many allow you to filter by programming language or framework if they’re not already centered around a particular technology.
The downside is that it can be time-consuming and overwhelming to go through and compare dozens of job postings. Try keeping notes or making a spreadsheet so you can stay organized.
Acceptable: Freelancing platforms
If you’re contracting and you need to find work, one of the fastest ways is by using a freelancing platform. Once you create a profile and possibly pass a screening interview, employers will be connected to you after searching or posting job listings. If you have a skill set for a project that an employer needs, this can be very fruitful, and is a very common way for freelancers outside of software engineering to find work.
For software engineers, however, this approach isn’t ideal. You’ll never get paid as well as if you had found the clients on your own since the platforms take a cut of your pay to maintain the marketplace. It might be hard to stand out from your other contractors on the platform. And in many cases, it’s a “race to the bottom”—the platform is incentivized to have the lowest prices, and you might be outbid by people willing to do the same work for less money. However, a freelancing platform might be a great way to find consistent work, which can be important.
Acceptable: Recruiters and talent platforms
A recruiter’s job is to match candidates with jobs, and they receive a commission for doing so. Recruiters and recruiting agencies work with a variety of companies and candidates, and they can be a good way to get matched with an employer without having to do any searching yourself.
(Note: I’m referring specifically to external recruiters who work with multiple companies. Companies often employ in-house recruiters who are only responsible for that company and might have larger hiring-related responsibilities within the company.)
Talent platforms are similar, but are more automated and less personal. Once you submit a resume you’ll be added to their talent database, and either a human or an algorithm will try to match you with opportunities.
The downside to recruiters and platforms are that they aren’t fully aligned with finding you a great job; their primary goal is to get you placed and “off their desk” as fast as possible so that they can get paid. And if it looks like you’re not going to be placed at the companies they represent, they will be reluctant to spend time on you since they may have other promising candidates. Yes, this is cynical, but it’s important to understand that yours and your recruiters incentives aren’t completely aligned.
Avoid: Generic job boards
Avoid the big job boards which advertise jobs outside tech. The overall quality of job postings is low, and there’s simply too much noise for you to be able to find a good listing. The companies posting to these places don’t know how to differentiate software engineering from other professions, which means they probably aren’t companies you want to work for. Also, you’ll have no way to stand out from the hundreds of other people who are applying to jobs en masse.
These sites can be useful for many professions, and sometimes they are the only way for people to find jobs. But for software engineering they should be avoided.