Please note: This page is currently stuck in an editing-but-not-done state (I edit right on the live page, usually), so the narrative doesn’t flow as lock-step as I would prefer. With any luck, I’ll finish cleaning it up by the end of the year, but for now, thanks for your patience.
The opinions stated here are my own, not those of my company.
This page contains information that should be useful for recruiters. Last updated May 2019.
Right now, I am not looking for a new role, at my current employer or elsewhere.
- I’m happy with my current role and manager chain (my manager, their manager, etc). However, I am only marginally in control of this happiness; it is similar to the concept of unstable equilibrium in Physics.
- Personal reasons.
- The macroeconomic environment. The US is in the longest bull run in market history (see CNN Aug ’18, CNBC Feb ’19, etc.). I know “market timing” is anyone’s guess, but my simplistic prediction is that the bull run could end in 2019-2021, so “winter is coming“.
- There is a nontrivial, multivariate opportunity cost in switching roles and companies. It’s not something I would do flippantly. The opportunity would have to be extremely compelling.
- Interviewing prep is an enormous time sink. My day-to-day work is negatively correlated with the skills needed for doing whiteboard interviews and take-home exercises, so I need to bridge the gap by studying at home. I would only start this prep if I am really serious about switching.
Specialists vs Generalists
Being a software developer generally means participating in the labor market for software developers. It sounds so obvious, but is easy to lose sight of. It is important to understand where you stand in this market relative to the other participants. To this end, I define specialists and generalists as follows:
- A specialist is someone with bona fide industry-shaping skills. Some examples:
- A generalist is anyone who is not a specialist
These definitions are probably more strict than the colloquial ones. And it’s not strictly binary, but the spectrum is not as continuous as most people believe. Specialists usually hold Ph.Ds or got lucky with equivalent “on the job” experiences that had commensurate depth, intensity, accomplishment, and subsequent recognition (even if just intra-company).
By these definitions, I am a generalist, but so are > 95% of the software developers in the labor market.
Now consider this pessimism-inducing quote from Gian-Carlo Rota:
The future belongs to the computer-literate-squared… A large fraction of MIT undergraduates major in computer science… they catch on to the fact that their required courses in computer science do not provide the whole story… side by side with required courses there is another, hidden curriculum consisting of new ideas just coming into use, new techniques and that spread like wildfire, opening up unsuspected applications…Gian-Carlo Rota in 10 Lessons of an MIT Education
Keeping up with this hidden curriculum is what will enable a computer scientist to stay ahead in the field. Those who do not become computer scientists to the second degree risk turning into programmers who will only implement the ideas of others [emphasis added].
Ouch! Who wants to be called a mere programmer who just implements the ideas of others? While his statement may sound harsh, there is a kernel of tough-love truth in there. Once you get past your bruised ego, there is a lot of wisdom to imbibe.
I thus posit the following viewpoint: if you are a generalist, your goal should be to find a role that offers you a foothold into some meaningful level of specialization. That is, the chance to work on a focused topic, on projects with sufficient depth and intensity, and a chance to not just reimplement the status quo but to do new things in the hopes of being better, even in small or partial ways.
So there you have it, dear recruiter. I have done 90% of your work for you. If you want to sell me on an opportunity I can’t ignore, make sure it has a credible path to specialization that I would be crazy to not inquire about.
The irony is that specializing roles are generally only offered to those who are already on that particular specialist track. That is the inductive trap of the labor market. How to outwit that trap is a topic for another time.
How I Segment the Software Developer Labor Market
I segment the software developer labor market somewhat simplistically into:
- Cash-flow-rich companies. These are generally the FAANG companies or equivalents (e.g. NYC finance), or later-stage huge startups that are close to IPO and are basically making FAANG-competitive offers (e.g. AirBnb, Uber).
- Cash-flow-conservative companies. These are generally startups, and are either strictly cash-flow-poor (i.e. limited runway) or cash-flow-conservative (i.e. have strong cash flow positions, but are spending it shrewdly).
Both segments have a section below, so read on!
Info for Recruiters From Cash-Flow-Rich Companies
I currently work at a FAANG company. As long as I do, here is my guidance to other cash-flow-rich companies that are trying to recruit me:
It’s highly unlikely (i.e. ~90% of the time) you will offer me a markedly better compensation story than what I have currently. Chances are, your level of spend is based on the market rate, plus a few quantiles, so I can predict with some accuracy what these numbers can be.
Thus, if you are trying to recruit me, the most attractive situations for me to consider are opportunities that are strictly better than the one I have now. Since I work in “Cloud AI” currently, which is a pretty hot space, the only thing that’s strictly better at the moment is a chance to move into an immediate position of management of a team size >= 7 in a growth area (cloud, ML, etc).
Info for Recruiters from Cash-Flow-Conservative Companies
I further segment cash-flow-conservative companies into:
- Early stage startups (< 10 employees and < 3 years old)
- Everything else
I generally don’t hear about early stage opportunities. If you are one and reach out to me, please just have a clear “Why me?” story.
The “Why me?” story from the vast majority of recruiters is basically that “you work at Google”. That rationale is highly incomplete. Google announced in their 2018Q4 earnings call that they now had > 98k employees. So in 2019, being Google or ex-Google without further qualification is insufficient. In 2005, this mattered; in 2019, not so much. It does not take a recruiting genius to spam the thousands of engineers at companies like Google and then point out the obvious.
For the cash-flow-conservative, non-early-stage startups, the situation is really unclear. What’s the narrative? Are you just hiring bodies to scale out? Are you starting a bold new product initiative? Etc.
If this is your segment, please focus not only on a strong “Why me?” story, but also clearly identify the “X-Factor”. Here are some examples:
- Located somewhere I’d like to live that’s not the Bay Area (NYC area, for example)
- Or, is a thriving remote-friendly team (e.g. Buffer, GitLab, WordPress, etc)
- Or can offer me a radical career change (i.e. into machine learning)
And, a strong stock options grant. A startup job without a strong options grant is more often than not just an economically inferior job.
Since I am fairly happy now, I am not engaging extensively with recruiters unless I:
- Suddenly need to (i.e. because I’ve been laid off, which I hope never happens, but I have no control over “reduction in force” actions by any employer, current or otherwise)
- Or really, really want to (i.e. you’ve clearly identified an X-Factor that makes sense for both me and my family)