You are here

The key to finding the

8 steps to finding the perfect software engineering job

public://pictures/Steven-Lowe-Principal-Consultant-Developer-ThoughtWorks.jpg
Steven A. Lowe, Product Technology Manager, Google

If you're a software engineer looking for work, your challenge isn't finding a job. It's finding the right one among the hundreds of thousands of software development jobs posted online. Adding to the confusion, a torrent of new postings pop up every day. A quick search for "developer jobs" posted within the last 24 hours on Indeed.com, for example, returned over 2,800 results, and that was on a Sunday. Which one of those jobs, if any, is the "perfect" one for you? Would you even know it if you saw it?

Software engineers aren't commodities. You're as exceptional as anyone else, and only you can decide whether a job is a good fit for you. Here are eight steps you can take to find and ride that rare unicorn down your chosen career path.

1. Know your strengths and weaknesses

First, know thyself. You can't get what you want if you don't know what you want. Make a list of all the qualities you possess as a software engineer that make you a valuable addition to a business. Include all your technical skills, domain expertise, unique experience, and perspectives, then go beyond that into the aspects of your personality that amplify your ability to use these things to your advantage. Be honest with yourself. No one but you will ever see this list—a little self-examination is good for the soul.

Separate the list you made into strengths and weaknesses. Then decide if what you listed is "common" or "exceptional." For example, suppose you listed Java programming as a strength. For Java development jobs, Java programming is common, as is knowledge of some popular libraries and frameworks. What is it about your knowledge, experience, and/or approach to this skill that makes your strength in this area exceptional? It might be your mastery of Lambda expressions, your intricate knowledge of NHibernate optimization, or your ability to refactor rapidly. Whatever it is, add it to the list. "I've been programming in Java for five years" is common, but "I've been programming in Java for five years, and I know how to optimize NHibernate" is exceptional. Amplify your strengths to set yourself apart from the competition.

Now go back to your list and look at your weaknesses. You might decide to focus only on your strengths and downplay your weaknesses, but that's a mistake. Weaknesses can be overcome, especially in areas where a company can teach you what you need to know. In other cases, you may have a weakness in some area that makes the job a poor fit for you. If you excel at Embedded C programming but know nothing about high-energy physics, don't apply for jobs at a particle accelerator. If you love to program in Logo but don't like children, don't apply to be a grade school computer instructor.

2. Know what you want and where you want to go

Think about the qualities of the kind of job you want, including location, responsibilities, technology, travel, coworkers, benefits, vacation days, company culture, etc. Make a list and keep it in mind when scouring the job ads, but don't overlook jobs that may not be a complete match. Some aspects of certain jobs may be more flexible than advertised. Keep in mind that it's not just a job, it's a step along your career path.

Knowing where you want to go in the future will help you gauge what type of job you should seek now. Should you specialize? Should you immerse yourself in a single technology stack, or should you go "full stack?" Should you focus only on front-end or back-end development? Or even a single product? Should you chase the highest-paying programming languages or companies? As they say in consulting, "it depends."

If you absolutely love coding in BASIC and never want to learn anything else, you've eliminated about 99 percent of software development jobs from consideration, as well as the vast majority of career-advancement paths. There are strategic advantages to being a specialist, but there are also pitfalls. Today's hot specialist may be tomorrow's dinosaur. As technologies come and go, careers that are wedded to them fade. Specializing can be lucrative, but you also don't want to be seen as a one-trick pony.

3. Create a resume and cover letter that sells

Your resume is a sales pitch. Like any product, your resume must offer a reasonable fit with the prospective employer's needs. Tailor your cover letter and resume not only to the position you're applying for but also to the person who will review it. By presenting a compelling case for why you're the perfect candidate, you can change mild interest into enthusiasm. Doing this right depends on knowing who the hiring manager is and what they want.

Managers want to get a sense of what your responsibilities are, what challenges you have overcome, what problems you solved, what initiatives you championed or accomplished, and how these things benefited your company, project, users, etc. Quantify your achievements whenever possible. If you improved the e-commerce platform's efficiency by 75 percent by deleting 15 percent of the code, say so.

At minimum, list your role, the challenges you faced, how you overcame those challenges, and the impact you had on the company. For example, "Used Java and Python to write text file processing applications" is boring. On the other hand, "Used Java and Python with gensim to create topic maps for customer complaints, enabling support technicians to resolve issues 25 percent faster" will get attention.

For each position you're targeting, highlight, delete, reword, and add information as appropriate to tailor your resume to the job description. The fact that you wrote device drivers in Assembly Language for the Apple II may be historically interesting, but it's irrelevant if you're applying for a job as an HTML5/JavaScript front-end developer.

Just as your resume is a sales pitch, your cover letter is a headline and lead-in to encourage people to actually read your resume. Some companies only look at resumes if the cover letter stands out, while others look at everything. As with your resume, you should customize your cover letter for each position you apply for. Try to include one standout reason why you would be the best choice for each position, such as your open source experience with similar systems or your clever insight into a particular problem area.

4. Build (and clean up) your social media presence

According to a survey by ExecuNet, seventy-seven percent of recruiters said they search the Internet for information about job candidates, so it's critical for your online and social media presence to be favorable. Google your name to see what comes up on page one of the search results. Is it favorable? Is it you? Go through all your social media profiles, update as necessary, and remove anything that could be perceived as negative. From seemingly harmless photos to a misguided 2:00 a.m. Facebook rant, your social media profiles can eliminite your chances of landing the perfect job. Clean up the profiles you use for fun, and then focus your efforts on the site that will bring the most value to your job search: LinkedIn.

Your LinkedIn profile should be complete with a summary that captures attention and describes your software development experience, interests, and passions. If you don't have recommendations, ask for them. Include links to relevant publications and projects, and add any awards or certifications you've earned. Use LinkedIn to connect with software engineers and hiring managers who work at the companies you're targeting, especially those with positions similar to the one you want. Look at their experience—how does it compare to yours? If they've been with the company for a while, have they been promoted? If so, how often? You have to look at several people's profiles to get a sense of the company's actual practices in hiring and promotion (as opposed to what they claim on their website). That doesn't mean you should rule out companies that don't promote often or that don't appear to have clear advancement paths, it's just something to be aware of. It's information, not a deal-breaker.

Use LinkedIn to get noticed. Join groups devoted to software development and engineering or any other group relevant to your career. Participate in debates, comment on articles, and kick-start discussions. Any participation with your peers invites attention from recruiters and hiring managers.

5. Do your research

Now that you know who you are, what you want, and where you want to go, you have a good foundational context to evaluate the thousands of software development jobs available. So where do you find them? A quick Google search for "IT jobs USA" yields an estimated 45.8 million results. Be specific in your search, or you'll have to wade through thousands of irrelevant results.

Keep the following in mind when conducting your search:

  • Many of the best jobs aren't advertised—they're filled by internal referrals via the friend-of-a-friend network. Before you do anything else, reach out to your friends and acquaintances and let them know what you're looking for.
  • Some jobs are only listed on company websites, not on public job-search sites. If there are some companies you'd like to work for, check their websites (or call their HR departments) to see what's open.
  • Some companies are always looking for talented developers, even if they don't currently have open positions. Don't hesitate to reach out to the companies that interest you to see if they'd like to take a look at your resume and perhaps find or create a position for you.

There are hundreds of job-search sites, including aggregation sites that list jobs from other sites. Focus on more than one and decide which sites make sense for the type of software development job you're looking for.

Take advantage of advanced search features on each site. For example, the career sites Dice.com and Careers.stackoverflow.com have excellent advanced search features. If you want to work from home, for example, click the checkbox for "full telecommute." If you really want to work with cloud services, use keywords for the specific kinds of services you're interested in (AWS, for example). Many job sites will let you save a search as an "agent" and email you new listings every day. This can save a great deal of time in your daily slog through the listings.

LinkedIn's job section is also a great resource for finding job opportunities. The site also lets you filter results by job region, functions, salary, industry, and experience level, making your job search more targeted. And don't overlook Craigslist, especially for geographical searches and niche specialties. When you first start searching, expect to spend several hours per day on multiple sites to figure out what kinds of jobs are out there and where they're located.

6. Bypass HR whenever possible

This is easier to do with small companies, but with large organizations it can make the difference between being considered for a software engineer position you want and being rejected out of hand by an automated resume-processing system or an overworked HR staff member with no technical context. This is especially important if the job you're interested in has an irrelevant or impossible requirement.

Go to the company website and find out who the position would report to. Search for the name of the IT director or other hiring manager who can make an informed decision and reach out, perhaps through LinkedIn.

Suppose you submit a resume for a position but don't hear back within a few days, and you have no idea to whom you should send a follow-up email. Find the CIO or the CEO of the company (LinkedIn is an excellent resource for this kind of information) and contact them directly.

7. How to respond when they call

It's OK to let recruiters know that you're looking elsewhere for jobs—a little competition is a good thing (for you). You can then refer to your list to see why you applied for that job, which can help you come up with a leading question to drill into exactly what the job is about and to suss out anything about the company that you may have found interesting or concerning. The fact that you have a list may also work in your favor; it shows a level of organization that other candidates may not have demonstrated.

Your first conversation should serve two purposes:

  1. Establish a connection with the recruiter. Internal recruiters talk to a lot of candidates on a daily basis. Making a personal connection makes you more memorable and makes them more inclined to help you along the process in the event that there are any hiccups or miscommunication.

  2. Get a general idea of the process and time line. Every company has its own process for recruiting and interviewing, and some are more organized than others. It's better to know what to expect than to expect them all to be the same.

Most likely, the first call is just a "hello" call, and the outcome will be to set up the next, more serious interview. While it's good to be flexible, make sure the interview is scheduled at a time that is also good for you. If you're not a morning person, don't schedule technical interviews at the crack of dawn.

8. What to do if they don't call

You applied for your dream software development job (or five), but it's been several days and you haven't heard back from anyone. What should you do? You could continue to wait; it may take some time for the recipient to slog through all the boring resumes to get to yours. But that's not much fun, is it? If you know who's reviewing your resume, there's no harm in a polite note, such as "Hi, just wanted to make sure you received my application— I've attached another copy of my resume for your convenience." More than once, this has resulted in an immediate reply along the lines of "I sent you an email last week to set up an interview, didn't you receive it?" Email isn't perfect, and things do get lost. Don't get frustrated or impatient, just get the facts. If they're not interested, they're not interested, and there's little you can do to change that, but it's better to know.

Even if you aren't currently looking for a job, it's good practice to conduct the occasional job search to see what else is out there and be prepared to act. Follow these steps and you'll be well on your way to finding—and landing—your next career unicorn.