When it comes to negotiating contracts, professional athletes hire agents who are experts at understanding the complex nature of sports contracts. Software engineers however, engage directly with employers when negotiating offers. This needs to change. While many different professions would benefit from using negotiation specialists during the hiring process, this post focuses on why software engineers are particularly in need of such a service.
Getting an interview is hard
Is your inbox frequently the target of recruitment emails soliciting a startup in “hyper growth” mode working with “innovative technology”? Maybe this startup even has backing from a “top tier” VC and an incredible team of ex-googlers and facebook-ers. Emails like this are commonplace and demonstrate the high demand for software engineers, but what about landing an interview at the company you are interested in joining? Landing an initial interview almost always requires a connection. Sending a resumé into the ether of an online jobs portal rarely works unless someone is expecting it on the other end. Yet being able to land a job at your dream company should be more a product of your merits as a programmer rather than how well you’ve networked with recruiters and other engineers. Agents in Hollywood or professional sports develop relationships over years with producers or general managers so that potential matches are never missed. Similarly, software engineers should always have the ability to be connected with any company, through their agent, who will have the ability to make those connections from the natural relationships that are formed from the process of being a full-time networker and negotiator.
Software engineers are in high demand
Demand for top notch engineers is not slowing down. When considering changing companies, engineers often field multiple offers to increase negotiating power. Being able to successfully leverage offers against one another is a skill that can mean the difference in tens of thousands in annual salary, yet it's a skill that takes time and repetition to master. Yet, . In addition to handling the delicate back and forth of leveraging competing offers, an agent would also handle the coordination required to schedule interviews, such that offers would come in at the most optimal time.
Offers are complicated
The last time I went through the hiring process, each article I read about successfully negotiating an offer listed ‘Understanding The Offer’ as the first and most important step. This seems obvious, but evidence suggests a lot of candidates accept offers without fully understanding their compensation package. Offers for software engineers can be particularly complicated because they typically include an equity component. Equity is a great tool for companies to align incentives with their employees, however understanding the capital structure of a company and how it’s distributed to employees can seem overwhelming. Knowing the differences between ISOs NQSOs and RSUs aren’t taught in most undergraduate Computer Science programs, yet can mean more to your income than knowing the time and space tradeoffs between data structures. Throw in concepts like vesting schedules, strike price, early exercise, dilution, common stock vs preferred stock price, employee stock purchase plan and you can see how offers become so difficult to value. In addition, if a company is privately held, they may not be forthcoming with details relating to the cap-table that make it near impossible to assess the value of an offer even after you’ve mastered all these concepts. What is the latest valuation? How big is the employee pool? How many outstanding shares are there? Are these questions even allowed to be asked? If your head is spinning, you’re not alone. The number of websites dedicated to explaining startup equity is staggering and highlights how offers are hard to understand. In the same way NFL players shouldn’t have to master the ins-and-outs of salary caps, player options, and the rookie wage scale, a software engineer shouldn’t need to master corporate finance just to understand their offer. The need for this knowledge should be offloaded to agents.
Companies know more than you
Once you fully understanding the nuances of an offer, the question is not whether it could be better, but rather, how much better could this offer get. This is a tough question to answer due to the information asymmetry in the dynamic between candidate and employer. Rarely are companies transparent when it comes to salary or equity of its employees and this is to prevent using other employees’ compensation as leverage. If you already knew what other similarly experienced employees were making at a prospective company, you would know the floor for what to expect in an offer. That is not in the companies favor. Although salary related information is available for software engineers, ranges depend a lot on geographic location, specific skills/languages required, experience and of course the company, so it can be tough to know how much more could be negotiated for. Here’s a calculator that does a pretty good job. Other sites like Glassdoor also attempt to shift this balance back in favor of employees, but it’s difficult to audit the accuracy of this data. Also, job categories on Glassdoor rarely are specific enough to relate 1-to-1 with the job description you might be interested. Moving on from salary, knowing how much more equity could be negotiated for is even tougher. At startups, it’s easy for employers to present an equity figure and use fanciful exit scenarios to make an offer seem extremely generous. Or perhaps the company is responsible and doesn’t try to sway you by talking about hypothetical exits and instead tells you the value of your stock grant based on a recent 409a valuation - it’s still too easy to look at that dollar amount and think it’s real money. Similar to how real estate agents know how much a home will sell for without considering the list price, an agent for a software engineer would know how much their clients were worth without seeing any offers. This knowledge is what’s required to maximize potential offers and right now there’s no convenient way to understand at any given moment, at any given company, what an offer should look like before receiving it.
Engineers are not expert negotiators
In a perfect world where information asymmetry didn’t exist, the employer would still be at an advantage. Software engineers are experts at writing code, not negotiating. Yet the person on the other side of the negotiation likely does this every day, or at the very least, is much more practiced at negotiations than the average engineer. There are advantages and disadvantages to labor unions in other industries, but one advantage of unions is that negotiations are left to experts. An engineer negotiating on his/her own behalf is susceptible to having normal human emotions interfere with what would yield the biggest package. For instance, negotiations will typically happen with someone you’ll be working closely with if you accept the offer. Negotiating with a used-car salesman might not be fun, but at least you aren’t going to spend your next road trip with the salesman in the passenger seat. Sure you’ve already gotten an offer, but you still want these people to like you in the case you end up working together. It’s too easy to not ask for more in fear of seeming greedy or giving off a bad first impression.
Where to go from here
We should have agents for our careers. We already have them when transacting on a home, why not when transacting on a job. Call them negotiators, offer advisors, or whatever terms sounds most normal, because this role should be exactly that. This is hardly a new idea, but despite all the reasons illustrated above, this service is still, doesn't exist. Until you’re able to hire someone in an agent-like capacity, feel free to email me at email@example.com if you have any questions about understanding or negotiating an offer. Just in the last 3 years, I’ve negotiated offers from Facebook, Snapchat, Adobe, Intuit as well as several startups at all stages and I’m happy to pass on what I’ve learned.