Senior year in college can be overwhelming, especially with that impending sense of dread about what the hell you should be doing with your life after school. Unfortunately, I can't help you with any of that existential stuff. However, if you're committed to working as a software engineer at a startup, and especially if you have job offers on the table you're considering, I will do my best to share information about important questions to ask and things to consider.
As a recent college CS major graduate, I've been through my share of recruiting processes in my life, so I figured I'd write down some notes on things I verbally tell people who ask for advice. This document is intended to be a collaborative, living document, so please contribute and suggest changes/resources!
The goal of this guide is specifically to help you gather all the information you need to make a decision about where to work and warn you about any potential red flags. It's tailored to startup jobs since it's fairly easy to gather information about large public companies (recruiters will tell you outright, you're more likely to have friends that already work there, or you can research online) and since you're not as likely to encounter glaring issues, sketchy conversations, underpriced compensation packages, etc. Also, note that it's not my goal here to tell you how to decide where to work and what to work on—only what information you can arm yourself with and potentially use in your decision.
The first thing I tell people is to try and think carefully about how you're going to narrow down your space of possibilities. Software engineering is still a huge space, and it's best to have as clear as possible an idea about what kind of company you want to work for, what kind of role you want to have, what kind of location/lifestyle you're looking for, etc. In my opinion, one really important thing is to figure out is what stage company you'd like to be at, since there's a huge difference in your day-to-day experience working for a huge, multinational public company versus a 1000-person unicorn versus a tiny 5-person startup. Note that when I say "stage", I don't necessarily mean fundraising stage but rather a more general sense of where the company is at in its growth cycle: Are they raising their first round? Developing a MVP? Productionizing? Growing past more than a handful of users? Scaling to meet large-scale demand? Closing in on an IPO? The answers to these questions matter more than the specific fundraising round (e.g. Series A/B/C/...) they're at, since they'll have the most practical impact on your experience as an employee and the types of contributions you make to the company.
When you're finally at the deciding phase, it's best to try decide first what dimensions of a software job matter most to you, then bucket your considerations into a few main categories. It can be overwhelming to look at all these factors, so at the end of the day, go with whatever feels the most right to you :) Your first job is just one step in your long career, and there's always room to change paths (especially if you have CS skills).
Here are some pieces of information you should gather (and questions you can ask to get them) at various phases of your interview/offer process. Use your best judgment about who would be best positioned to answer your questions and when it would be appropriate to ask them. You certainly don't need to ask all of these, but it's good to have a general sense of the answers to the ones that are important to you.
A startup's fundraising history offers some good heuristics for a ton of other factors, like company size, experience working there, even your compensation. If a company is early-stage/in stealth, note that they might not be comfortable putting answers to these questions in writing.
- What stage are they at in their fundraising? (seed or series A, B, C+)
- How much money have they raised so far? What were they valued in previous rounds?
- Who are the investors? Are they people you trust to have done diligence on this business?
- If you're an early hire, try and talk to at least one main investor in the last round to help get a sense of why they believe in the business and product.
- Also, you can look at the investors' past experiences: Have they invested in other successful companies in this space? Do the partners themselves have experience with the industry?
- Who are the company's advisors and board members? Are they people with experience supporting fast-growing companies in your industry?
Put on your VC hat and try to think about the potential for what they're working on. Keep in mind that if you're talking to them in the fall (i.e. almost a whole year before your start date), things might (hopefully) look different by the time you join the team, since ideally the company will have grown over the course of the year. Also, if the company is early stage, don't expect completely accurate answers to these questions, but do expect the company to be thinking about these things.
- How do they plan on making money? Does their business model check out?
- What do you think the total addressable market is for what they're building? How would the product have to expand to grow exponentially?
- What other competitors are in the market? What do the general market dynamics look like?
- What are their strategic views? If they're pre-product-market-fit, what's their plan for achieving that? If they're growing past that, what's their distribution/sales strategy? If they're trending towards going public, what metrics are they trying to hit before IPOing?
- What are examples of target customers? Are they enthusiastic users of the product?
- Do you have faith in the business idea/product/market? Does the future they're building align with your own vision of how you want to contribute to the world?
Finally, try and think generally about the health of the business.
- What experience does the executive team have? Are there any red flags (e.g. infighting, scandals, fast turnover)?
- How quickly is the business growing? By what factor have revenue, customer metrics, headcount, etc. grown over the last quarter/year?
- Keep in mind that companies with different business models might grow differently--for example, B2B companies might grow faster in revenue than in people, while B2C companies might be the opposite.
- How much cash do they have on hand? How close are they to profitability?
- What is their burn rate? At their current spending rate, how much longer would the company live?
- How does the executive team seem to generally think about funding and spending? When would they potentially raise another round?
- What is the distribution of employee roles? What size is the engineering team relative to the sales team? (having a large sales team hopefully implies having a lot of customers to sell to)
Figure out if you'd like the technical work you'd most likely be doing, the day-to-day experience of doing that work, and how much you'd be able to learn.
- Who would you potentially be working with? What would you be working on? (if it's growing quickly, they might not be able to plan that far ahead since priorities change so quickly)
- What are examples of projects junior devs have taken on before, if any? How were they initiated?
- How much influence from academia does the team have? Are there many PhD's/professors/etc.? If so, do you find their research compelling?
- What concrete practices/processes do they believe are valuable for technical mentorship? (they likely won't have too many of these in place if they are still small, but you're looking for reasonable answers perhaps guided by previous experience)
- How is curiosity valued? Do engineers feel like they have people they can always turn to with technical questions?
Establish how experienced the technical people you'll be working with are. Try to ask them questions about their software development best practices, but keep in mind that there's higher variance in skill at larger companies.
- How are tasks prioritized, and who prioritizes them? How often do engineers get to suggest their own projects and work on them?
- What technologies/frameworks do engineers use? How much do they value using the latest/flashiest new things?
- What best practices do they follow for writing code? Do they have style guides?
- How do engineers give and receive feedback? How is code review done?
- What version control/code review/issue tracking systems do they use?
- How are technical disagreements communicated and resolved? What's an example of their technical decision-making process?
- What are engineers' biggest annoyances/roadblocks to being productive? Are there headaches with deployment, legacy code, testing, etc.?
- What's an example of an older system that required a redesign, and how did that process go?
- Do employees regularly give "lunch-and-learn" presentations? Are there avenues through which engineers can propagate knowledge and lessons learned?
- How do they address the tension between technical debt and feature development?
If it's past the early stage and they have more than a handful of engineers:
- What is the rough distribution of seniority at the company? How many junior vs. senior devs are there?
- Are teams divided horizontally or vertically (or both)? What does that org structure look like?
- How easy is it to change teams?
If they don't have too many engineers now:
- What are the hiring plans for engineers? How many junior vs. senior people are they trying to bring on?
- What specifically would be your technical niche? What unique skills do you bring to the team? (since that's likely what you'll have ownership over when you start working)
Try to figure out how quickly employees can grow their careers and take on more responsibilities. If it's a more established company:
- What does the engineering level structure look like, if there's one?
- How do performance reviews work, and when would you first be eligible for a promotion?
- What's an example of an engineer who's been at the company for a while, and how has their role changed over that time?
- Do they fund employee trips to academic or industry conferences?
- Would they support you if you wanted to continue your education?
If it's a less established company:
- What processes would they like have to establish fair leveling/performance reviews?
- How do they see your role potentially evolving in the company after a few months/a year? If you wanted to transition into product or management, would you have a path for doing that?
It's a bit harder to offer guidelines for company culture since so much of this is up to individual preference, but there are perhaps a few red flags to watch out for.
- How does the company treat mistakes? Are engineers punished e.g. for breaking the build? How are postmortems done?
- What's the turnover rate? Were there ever periods of time of mass exodus?
You can also try to gauge attitudes towards some things that tend to vary widely from company to company.
- What are the company values, if they're codified somewhere?
- How engineering-driven vs. product-driven vs. business-driven are they?
- Is the company a consumer or enterprise business? (this affects things like product cycle, public perception, growth progression)
- What are the founders' backgrounds, and why did they start this company? What motivates people to work there?
- How much time do employees spend working? How flexible are they about working remotely/from home?
- How does the company facilitate socializing & team building? What do employees do for fun after work?
Obviously, ask whatever other questions you need to so you can evaluate whether you'd enjoy your lifestyle and everyday experience working at the company.
Finally, perhaps the most non-obvious section! Evaluating startup compensation is certainly a very personal decision, but it's important to understand fully what you're being offered before you can fully assign a value to it. Instead of phrasing this section as a list of questions, I figured it'd be helpful to just walk through features of a typical comp package.
An important disclaimer: I am not an accountant or lawyer or anything close to an expert on this topic, so make sure you do your own research!
As a working adult (!!) you'll finally get paid a salary. But there are other tangible and non-tangible ways you benefit from having a job, ranging from:
- Signing bonuses & relocation
- Annual bonuses (performance-based and non-performance based)
- Medical/dental/vision/life insurance
- 401(k) matching
- Fitness stipends (e.g. paying for your gym membership)
- Vacation policies
Bigger companies might offer some tantalizing benefits like onsite gyms, haircuts, laundry services, food from Michelin-Star chefs, and more. You probably won't get all that working at a scrappy startup, but it's still important to understand how valuable your non-salary perks are to you.
Compensating employees with equity is usually a win-win. For cash-strapped startups, it provides an alternative to burning cash to compete with offers from the likes of Google and Facebook. And if you can shoulder the risk, it offers huge potential upsides, and it also more closely aligns your personal prosperity with the company's success. Of course, there is that risk: if the company ends up shutting down, your equity will be worth nothing. The proportion of equity you're offered inversely varies with the company's stage, since the likelihood of that equity being worth more than zero increases as the company grows.
At earlier stage companies, you'll likely be offered some fraction of the company's stock in the form of options.
- Options are exactly what they sound like: the option to buy your shares at a specific strike price. Your strike price will be set by the board after your start date, but it's still a good idea to ask what the current strike price is to use as a benchmark. You might also want to know when the last appraisal (i.e. 409a valuation) was, so you can estimate how much the company's value has grown since then.
- There are two main types of options: incentive stock options (ISOs) and non-qualifying stock options (NSOs). In my limited experience, ISOs are probably more common; NSOs have less favorable tax implications but usually allow for a longer post-departure exercise period.
- If the company tells you only the number of shares you're granted, ask for their number of total shares outstanding. It's more important to calculate your ownership share at earlier stage companies, since there's such high potential for (and variance in) growth.
- This video @ 12:56 has some potentially out-of-date estimates to expect for equity packages.
At roughly Series C+ companies, it makes sense to start offering RSUs (aka stock grants) instead of options, usually at the point at which options and their tax burden become too expensive to reasonably afford.
- These are often expressed in dollar amounts, since at that point it's likely a tiny percentage of the company's stock (but still valuable if the company is worth a lot).
- You'll still have to pay taxes on these, but you might have the option to pay in your RSUs instead of dollars (so you'll just end up getting less stock, but you won't have to pay in cash).
Your equity usually vests over a period of time—typically it's over 4 years with a 1 year cliff (meaning that you mostly accrue stock linearly over a 4-year period, except that you don't get any until you've worked there a year). Also, note that your equity will get diluted as the company has more fundraising rounds. You can try asking about their general perspectives on this, but don't expect anything concrete since they probably won't want to make promises about the future. Still, it's prudent to have a good sense of the company's plans for later fundraising.
Since the company is still private, you can't just turn to the public markets to get an estimate of your equity's value. Instead, you can estimate this (very roughly) using the company's valuation in its last funding round (or those of its peer companies). You might also try and apply some growth multipliers on those numbers, but don't get too carried away! ;)
There are more complicated details about equity that you mostly shouldn't worry about until you actually start working—things like alternative minimum tax (AMT), 83(b) election, and early exercise. Here's a pretty good resource from my friend Katie and on the Wealthfront blog about all that.
Even if you're afraid to do it, it doesn't hurt to try and ask for better compensation. Advocating for yourself is a skill you need to develop in the workplace anyway, and now's a good time to practice. If you're working with a tiny team especially, my opinion is that your negotation experience will also give you valuable insight into how your team members handle disagreement/conflict—hopefully, your conversation doesn't get heated.
I won't go into too much detail here, but I'll offer some high-level advice:
- Be informed. Do your research, try to understand what the market rate is, take factors like cost of living into account, know what your equity is worth.
- Only negotiate if you're close to committing to a company and you just want that final push. Don't do the thing where you negotiate higher offers just to get higher counteroffers.
- If you're nervous, you can totally try and prepare a rough outline of what you're going to say ahead of time. If you're really really nervous, you can try and just put in an ask over email, but generally if you have a more personal connection it's best to navigate these kinds of discussions over the phone or in person.
- Be excited! Phrase your hesitation in a way that makes the company want to work out a mutual agreement to help you out (i.e. improve your offer).
- Be open to value-creating solutions that work better for everyone—for example, if the company can't afford to pay you a higher salary now, maybe it can promise a refresh after the next round is raised.
- Also, read Haseeb's excellent guide to negotiating your job offer.
- Of course, don't be greedy or go over the top; most software engineering salaries are more than enough to make a comfortable living. Make sure not to damage any relationships: even if you don't end up working at the company, it's entirely possible you cross career paths with people you talked with in the process later on.
That was a lot of information! I hope these notes are helpful to you in some way, and I'm always happy to chat directly about whatever specific situation you're in.
Some last pieces of advice:
- If you're talking to a founder especially, try to be contrarian/play devil's advocate in your conversations about the business (but obviously be tactful). It's not a bad idea to see how the company's leadership responds to challenging viewpoints and disagreements.
- After you receive an offer, your recruiter/point of contact should offer to introduce you to a few people to talk to. Try and talk to as many people you can in various roles, and if you have other friends who've worked at the company, ask them too!
- If you're feeling lost, it's always fun to remember what's exciting about the new job search. Don't be afraid to ask why they are enthusiastic about bringing you on the team and what they think you could add.
I'm certainly not an authority on this subject, and I notably haven't been through this process on the other (hiring) end. These notes are mostly informed by my personal experiences (I've been through 20+ internship/full-time offer processes) and what I've seen in my peers' experiences; I used the framework I outlined to choose a tiny company whose team I had never met in person (and I've been happy so far!). Take everything I say with a grain of salt, obviously, and of course there's plenty of people who would disagree with things I've said above.
A lot of these notes were influenced by Julia Evans's excellent list of questions to ask, Brian Krausz's Demystifying Startup Offers talk, Dan Luu's contrarian advice on joining a startup, and many similar guides I've read on the internet.
Thank you to Vahid, Katie, and Yasyf for reading this over and giving feedback and for your always helpful support :)