When I finished college, I was incredibly naive when it came to finding a great job. I knew that I wanted to work at a small startup but didn't know how to find that great opportunity. I didn't know what questions to ask to evaluate a company, and I didn't know how I should present myself during the recruitment process.
Now I'm a few years out of college and I have that kick-ass job I was looking for. My dual experiences of looking for a job and being on the other side recruiting programmers have taught me quite a bit about what it takes to get a great job at a kick-ass startup.
Here are my tips, from preparing for the job search process to finding great startups to applying and getting the job. If you have any tips of your own, be sure to leave them in the comments!
Preparing for the job search
1. Make a list of the qualities you're looking for in a job. Be explicit and specific.
What are you looking for? Coworkers that are really smart that you can learn from? Coworkers that you can socialize with? Flexibility in how/when you work? Write these qualities down.
2. Prepare questions that will measure a company against each item in your list.
Stay away from bullshit questions like "What do you dislike about working here?" Bullshit questions will get bullshit answers. Your questions should be specific and help you gauge the company against the qualities you wrote on your list.
For example, if I was curious about how much flexibility employees have to work at home, I would ask:
How often do you work at home?
What's the company's policy on working from home?
What would happen if you worked from home for a week?
When I'm interviewing someone, I like it a lot when the candidate comes prepared with a list of questions. It shows the candidate is on top of things.
3. Maximize your personal brand.
Evaluating a programmer's skill is hard. You need to make it easy for the startup to see that you're a superstar. So make a website and list your side projects there. Link to your Twitter and GitHub accounts. Write some blog posts that showcase your technical ability. You need to develop a personal brand, and you need to do so long before you ever send in a resume. If you don't already have a personal website or blog, make one now. Frankly, developing your personal brand is something you should be doing on a regular basis anyway.
Finding interesting startups
1. Look at the portfolio companies of respected investors.
Let investors filter for you! Go to the website of investors to see their portfolio companies. Looking at the portfolio of seed stage investors like Y Combinator is a great way to find early-stage opportunities.
2. Look at the Hacker News threads that list who's hiring.
This is better than looking at a job board. The companies advertising on the Hacker News threads at least pay attention to the hacker community.
3. Let companies find you. Make a public presence. Interact on Hacker News and Twitter. Make or contribute to open source projects. Blog. Make it easy to contact you.
Hiring is one of the biggest problems at startups. Startups use every channel they can find to source good candidates, including reaching out directly to interesting people they come across. Most of the inbound messages you'll get will be from uninteresting companies, but every now and then an interesting opportunity will come your way.
4. Forget recruiters.
Recruiters tend to be annoying. Plus, a ton of high quality startups refuse to deal with them.
5. Invest in your network.
Your network will lead to interesting and unexpected opportunities. Interact with people on Twitter. Send cold emails to founders of companies and ask if they want to grab coffee. If you've made even a minimal investment into your personal brand, founders will be ecstatic to meet you and build a relationship with you.
Evaluating a startup
1. The people are much more important than what the company is working on currently.
An early-stage startup is likely to change the direction of the company at some point. That's the nature of startups. You should find what they're working on interesting, but I find that candidates obsess way too much with the product and market of a startup when asking questions.
It's much more important to focus on the people in the startup. Are they a strong team that executes well? Are they creative? How do they interact with each other? How are decisions made? Would you like to work with these people?
2. Observe the working conditions. They reveal a lot about the company's philosophies towards its employees.
You're looking for top notch monitors, chairs, desks, and computers. Look at how much space each programmer has and if the environment is quiet or not.
A top notch work environment is a good investment for maximizing the productivity of programmers and keeping them happy and healthy. Anything less than a top notch work environment is an indication that the company is overly focused on keeping costs low and is cheap with its employees.
3. Is the company founded by hackers or business guys?
Hackers are much more likely to understand what it takes to make a great environment for programmers. Not to say that business guys can't make a great work environment, it's just less likely.
4. Are they using pressure tactics on you?
If a company uses pressure tactics on you to get you to accept an offer, it's a huge red flag. Just imagine how the company will treat you as an employee if they're willing to manipulate you into accepting their offer.
5. Do they move the process forward quickly?
By "moving the process forward quickly", I mean answering emails within a few hours. Moving the process forward quickly is a sign that the startup is on top of things.
6. Is there heirarchy? Do people give themselves titles?
This is a big red flag. It's a sign that the company is filled with big egos or people who think startups are smaller versions of big companies. Startups should be very flat and anyone in the organization should be able to talk to the CEO.
7. Do your research on the company. Read the company's blog. Read the blogs of the employees.
Startups are a collection of personalities. Do your research and try to figure out if you'd like to work with the people there.
Getting the job
1. Don't describe yourself. Instead, describe amazing things you've done.
The biggest mistake you can make in a cover letter is using an empty phrase like "motivated self-starter." Believe it or not, everyone describes themself as an amazing person. Even if you're amazing, describing yourself as such is meaningless.
Instead, you need to describe amazing things you've done. Focus on problems you've solved as opposed to solutions you've built. You have to be concise and to the point as people have short attention spans when reading cover letters.
2. Links, links, links, links, links.
You'll only get the job if the company is convinced that you'll build amazing things for them. The best way to persuade them of this is to show them amazing things you've built in the past! Links are gold. Link to your open source and side projects.
Remember, it's hard for a startup to evaluate the skill of a programmer. Technical questions can be very inaccurate and incorrectly filter good programmers. So you need to make it easy for the startup to see that you're a superstar, and the best way to do this is to link them to amazing things you've built.
If you don't have any links to show off, you need to remedy that.
3. Be yourself.
Stay away from formal, cookie-cutter cover letters. Do not start off a cover letter with something like "Dear Hiring Manager". Formal cover letters make you sound like a drone, and startups don't hire drones. They hire creative people who get things done.
4. Examples are your friends in tech questions.
When you're stuck on a tech question, work through a few examples. More often than not this will guide you much closer to the solution. I'm shocked at how many people don't use this technique.
5. For tech questions, get a correct answer first. Then figure out how to make it faster or simpler.
A mistake I see a lot of people make is try to get a perfect answer on the first try. A lot of times they're searching for an O(1) solution where none exists. It's better to just get something working first, and then figure out how to optimize or refactor it.
When you get an offer
You have all the leverage when you get an offer. If a kick-ass startup gives you an offer, they consider you to be a rare individual. Negotiate with that in mind.
The best company will give you time to make the best decision for yourself, because they are confident they are a great place to work. They will be aggressive in selling you on the opportunity, but they won't pressure you.
When you accept an offer from that kick-ass startup, congratulations. Get ready for a fun ride.
You should follow me on Twitter here.