Applying for jobs

There’s no magic trick that will get you a job quickly. Often times, it’s a bunch of little things that will help you find and land a good job. You’ll need to find reasonable open positions to apply to, and then you’ll need to work your way through the application process. Here are a few things to keep in mind as you work your way through this process.

« Building a portfolio Am I too old? »

Finding open positions

There are a number of ways you can learn about open positions that might be relevant for you. You can’t know ahead of time which of these is going to work out for you, but if you’re aware of all the possibilities you’ll have a better chance of success.

Researching individual companies

Many people wait for companies to post open jobs, but you can also actively look at the companies you’re interested in, and find open positions before they’re widely advertised.

  • Company websites

    Most companies have a number of helpful links at the bottom of their home pages. There are a couple that are helpful for job-seekers. First, you can look for links like “Jobs” or “Careers”. These will usually lead to information about the overall working climate of the company, and you’ll usually see a listing of open positions. For example if you go to your Twitter home page, you can’t scroll to the bottom. But if you click on the More link in the sidebar and click on Developers, then scroll to the bottom, you’ll see a bunch of links that would be useful for people who are interested in Twitter the company, not Twitter the timeline.

    These kinds of listings are not always fully up to date; it’s quite reasonable to email a company and describe your skillset, and ask if they have any current openings that you might be a good fit for.

  • Visiting companies

    Every time I visited my in-laws, we’d drive by a mysterious-looking multicolored office building when we got off the highway. I was always curious about it, so one day I drove there to ask about it in person. It turned out to be one of the regional headquarters of, which I didn’t even know was still in existence at that point. They couldn’t show me around when I stopped by, but they were happy to arrange a short tour for later that week. (I was not an author at that point; they would have been happy to show anyone around who had a sincere interest in the company.) The tour was fascinating, and if I was living in that area and in the job market I would have seriously considered applying for a job there. If there are companies in your area that you’re interested in, it’s perfectly reasonable to stop by and ask about the company in person.

Job posting sites

There are many job-listing aggregators around. Some have a geographical focus, some are focused on specific skills, and some are community-based. The quality of these listings varies greatly, so find a couple sites that seem accurate and relevant, and keep your eye out for new listings.

  • GitHub Jobs

    GitHub has its own Careers page for people interested in working at GitHub, but it also has a section called GitHub Jobs that any company can post to. You can search their listings in a variety of ways.


    Monster was one of the first well-known job listing sites, and they’re still around. Try entering a term like python and your location, and see if there’s anything near you. You won’t get the same results here that you will from a more targeted search, but you might find something worth following up on.

  • HN Who’s Hiring threads

    If you spend any time on Hacker News, you’ve probably seen the monthly Who’s Hiring threads. If you see something relevant and appealing on one of these threads, it’s worth following up on. These kinds of threads are usually pretty current, so anything you see advertised on a thread like this is probably still open. Here’s the February 2020 Who’s Hiring thread, and here’s a listing of all the Who’s Hiring threads, with the most recent ones listed first.

    There’s also a series of Who wants to be hired? posts as well, that you might find interesting to look through. People do tend to look at your posting history before reaching out, though. Even though HN has a reputation for being a toxic culture at times, a history of thoughtful and respectful participation will go a long way when you’re looking for a job. The same holds true for most online communities.

    Many other online communities have their own job-focused threads as well. These are much more likely to be helpful if you’re already an active member of that community, so be thoughtful if you join a community primarily for its job-posting threads.

Email newsletters

There are some really good email newsletters in the Python community. One that I’ve subscribed to for a while now is PyCoder’s Weekly, and each week they include a number of job listings.

Conferences and meetups

Programming conferences are excellent places to look for a job. Bigger conferences, like the major PyCon events, almost always have a signficant job fair as part of the conference. Many people also actively recruit throughout conferences. Make sure to let yourself develop simple, personal connections that aren’t job-focused as well. Sincere friendships and professional connections often lead to good opportunities later on.

Depending on where you live, you don’t have to wait for major conferences to happen. There are thousands of smaller local meetups and user group events happening every week around the world. Do some research, and see if you can attend some events in your area. Again, don’t just go looking for a job. Make yourself part of a community, and be open to any job opportunities that might come up.


Making sense of listed job requirements

There’s a famous parody of tech job postings that says something along the lines of, “We’re looking for a candidate with X years of experience in Y technology”, where X is more years than technology Y has existed. HR departments are famous for listing way more qualifications than any candidate can honestly claim.

If you see a posting that you’re interested in, feel free to submit an application package. If you’re contacted for an interview, you can clarify in the interview process whether you’re indeed a good fit for the position.


Writing a resume

There are many resume templates available online, and plenty of actual examples of people’s resumes as well. If you’re unsure about how to write a good resume focus on keeping it simple, clear, and to the point.

Your resume should tell people who you are, what kind of work you’re interested in, and what your relevant experience is. It should list your skills, and any formal educational levels you have achieved. You can list non-technical experiences, if you’d be comfortable discussing them in an interview. For example I’ve been an active member of a mountain rescue team for a number of years now. I include this on my resume because it demonstrates the ability to think and act calmly in stressful situations, and it’s always something interesting to talk about.

It’s important to view your resume as a living document. You should have a base resume that’s mainly for you to keep track of your employment history and qualifications. When you’re applying for a specific position, especially one that you really hope to get, you should customize your resume for that application. Tweak your objective and the order in which you list your qualifications, in a way that targets this particular job opportunity. It’s a really good idea to have a few peers read over your resume; if you can find people who already work in the field who are willing to look at your resume, they should be able to give you a really clear sense of whether your resume will look good to a hiring team at their company, or a company similar to theirs.

Keep in mind there are two main ways your resume is likely to be used. The HR people will look at it to make sure you meet the minimum qualifications for the job, and the interviewers will (hopefully) skim it before starting the interview. Make sure your resume clearly shows the HR people your qualifications, and be sure to give the interviewers some interesting technical and non-technical things to ask you about.


Writing a cover letter

Many jobs don’t require a cover letter, but including one is almost always a good idea. Your cover letter should say what interests you about this particular job, at this particular company. You want to show that you’ve done your own research, and that you have a specific reason to want to work at this company.

The cover letter is a brief opportunity to speak openly and personally about why you’re applying for this job. A cover letter can’t make up for a weak or underqualified resume, but it can make your application stand out in a pile of more generic applications.


Interviewing for tech jobs is a huge topic, and I’m not going to go into too much detail here. Some interviews are well run, by qualified people with a professional, respectful approach to the interviewing process. Some are conducted by overworked engineers who don’t want to be doing it in the first place. It’s good to recognize this, and understand that not all bad or awkward interviews are your fault - sometimes applicants are effectively set up to fail.

What can you expect in an interview?

Reasonable interviewers will want to validate what they see on your resume. People lie and overrepresent themselves all the time on resumes, so they’re trying to see that you are as qualified as you say you are. They shouldn’t be looking for a “perfect” candidate, because perfect candidates don’t exist. They should be looking for someone who will do the job well, and who will be good to work with profesionally. Be honest about your skills and experience, including what you don’t know. You shouldn’t be expected to know every single thing they ask about; good interviewers want to see how you discuss topics at the edge of your experience and understanding.

Your interview will probably have some kind of technical component. It may be a whiteboard session where you’ll sketch out a solution to a problem that’s presented; it may be a pair programming session with a current employee; or it may be a mini-project that you’re asked to complete. You might be allowed to use external libraries, or they might ask you to just use what’s in the standard library. Whatever you’re asked to do, give it your best and be honest about your progress. If it’s above your skill level, you may still be offered a job; people may appreciate how you approached the problem, and they may want to work with you and help you grow as a programmer. Maybe they won’t hire you for that position, but they’ll want you for another position in the company. If you aren’t offered a position because of the technical part of the interview, the real-world interviewing experience will guide your subsequent learning tremendously. I once failed miserably in an interview for a statistics job that required way more expertise than I originally thought. I wanted to run out of the interview, but I finished the process and learned a great deal from it, even though I didn’t come close to getting the job. Some companies ask candidates to complete take-home projects as part of the hiring process. In the best case, these are good attempts to alleviate the anxiety that many people experience in face-to-face interviews. In the worst case, these are exploitative attempts to get work done for free. If a company asks you to do too much actual work at any point in the hiring process, remember you are free to walk away at any time.

Remember, interviewing is a mutual process. The interviewer team is trying to see if you’re a good fit for the company and the position, and you’re trying to see if this job is a good fit for you. If you feel respected by the interviewers and the process makes you want to work at this company, then you’ve probably found a good fit. If it feels like a hostile process and you don’t want to work at this company, then it’s really good to know that up front and not end up in a possibly toxic workplace. They’ll ask you a bunch of questions; make sure you ask any questions you need to help you decide whether this company and position really is a good fit for you as well.

Practicing for interviews

If you know people who are already working in the field, they might be willing to do a mock interview with you. It can feel silly at first, but people who practice tend to become comfortable more quickly in actual interviews. Your mock interviewer doesn’t always need to be someone in the field. Being able to explain your technical skills to someone who isn’t a developer is a valuable skill in itself, and is better than no practice at all. You might be able to find other people in your area who are doing a job search, and interview each other. There are also online communities where you can share your job search experience in general, and your interviewing experiences specifically.

Reflecting on your interview

I highly recommend writing some notes after each interview, no matter how well or how poorly it went. Include some or all of the following:

  • What happened in the interview? (Describe the process, from beginning to end, even if it’s just a bulleted list.)
  • What questions did they ask you?
    • How did you respond to each question?
    • Which questions were easiest?
    • Which were most challenging?
    • If you could do it over, would you change any of your answers?
  • What questions did you ask?
    • If you have the chance, what questions will you ask next time you speak with someone from this company?
    • What questions do you want to ask in your next interview with a different company?
  • What do you want to learn more about, to be better prepared for your next interview?

An interview can be a tremendous learning experience, especially if you are new to the process. If your interview went well, you’ll want to remember what made it go well next time. Even if you are offered a job and don’t interview again for a couple years, you are almost certainly going to want to change jobs at some point. If your interview went poorly, you’re probably going to need to interview again soon, and these notes can help you focus your subsequent learning and interview preparation.


Being realistic about pay

The tech world has a reputation for paying really well, and there are certainly many people in higher-paying programming-focused jobs. But there are also lots of people in low or moderately paying entry-level programming jobs. Be careful not to undervalue your skills, but also keep in mind you’re not likely to walk in the door as a new programmer and make $100k right away. Once you’ve held a programming-focused job for a while and show you can hold your own, you can go on another round of applying and interviewing, and make a stronger case for a higher compensation package. There’s nothing wrong with shopping around and making sure you know your current value in the market. You have no obligation to stay for a long time at the first company that hires you. Stay long enough to make meaningful contributions and complete some projects, but make sure to reevalute your value as an employee. People earn much more significant salary increases by moving between companies than they do by getting raises from one company. Do all of this with tact and professionalism, and you’ll be more likely to find a series of jobs that are professionally and financially satisfying to you, and beneficial to your employers as well.

You should also be aware that many developers are underpaid. A great person to follow around this topic is Patrick McKenzie (@patio11). He is famous for telling developers running their own businesses to charge more, and for telling employees to know their market value and switch jobs often early in your career until you start to hit industry-wide pay ceilings. Both of these perspectives are good to keep in mind; don’t expect sky-high salaries in your very first job as a developer, but also remember that good developers are in high demand, and your pay should rise quickly as you gain experience in the field.