I'm starting to be a bit disillusioned with this whole "we can't find great people" spiel that a lot of startups put up.
I have friends who are extremely good engineers (i.e., a mix of: contributors to major open source projects used by a lot of SV startups, have given talks at large conferences, published papers at ACM conferences, great portfolio of side/student projects, have worked at great companies previously, frequently write high quality tech articles on their blog, have high reputations on sites like Stack Overflow, etc.) and who have been rejected at interviews from those same companies who say that they can't find talent. (it also certainly doesn't help that the standard answer is "we're sorry, we feel like there isn't a match right now" rather than something constructive. "No match" can mean anything on the spectrum that starts at "you're a terrible engineer and we don't want you" and ends at "one of our interviewers felt threatened by you because you're more knowledgeable so he veto'd you").
Seriously, if you're really desperate for engineering talent, I can give you contact info for a dozen or so of friends who are ready to work for you RIGHT NOW (provided your startup isn't an awful place with awful people, of course) and probably another dozen or two who would work for you given enough convincing.
I'm honestly starting to believe that it isn't hard to hire, but that there's some psychological effect at play that leads companies to make it harder on themselves out of misplaced pride or sense of elitism.
Unless everyone wants to hire Guido Van Rossum or Donald Knuth, but then a) statistically speaking, you're just setting yourself up for failure and b) you need to realize that those kind of people wouldn't want to do the glorified web dev/sys admin'ing that a lot of SV jobs are.
>"I'm honestly starting to believe that it isn't hard to hire, but that there's some psychological effect at play that leads companies to make it harder on themselves out of misplaced pride or sense of elitism."
I expect that a fair portion of "We can't find qualified people!" is actually "We can't find qualified people for what we're willing to pay."
Beyond that, I wouldn't say that it isn't hard to hire, but it certainly seems popular to make hiring as hard or perhaps more accurately - to make passing as easy as possible whether it's via veto, "culture fit" or something else.
I was hoping that the vote of confidence in "behavioral interviews" [0] from Google over the summer would help things a bit - I guess not.
If that was the problem, then they would complain not that they couldn't find people, but that candidates weren't accepting their offers.
(Of course it's possible they are implicitly or explicitly cutting all the people who cost too much money, leaving them with very few useful candidates.)
> I expect that a fair portion of "We can't find qualified people!" is actually "We can't find qualified people for what we're willing to pay."
Sure, but isn't that implied, since all companies have financial constraints? If you can somehow pay 10 million dollars a year for a software engineer, I'm sure you'll have a lot less trouble finding a great engineer.
It's funny at my first job a world leading fluids Rnd organization as a research assistant my instruction on joining was Kieth's going to give you quick hours run down on how to run the PDP 11's - then pop into the library there is a book on FORTRAN tech your self it :-)
Oh an that was direct from school I didn't even get any A levels :-)
At a previous job, we had a hell of a time finding candidates who were any good, and then of the ones we made offers to, we got a lot of "no thanks", I don't know why management couldn't close the deal but I have guesses (not gonna post them because people from that former job post on HN).
In my anecdotal experience, companies put far too much emphasis on finding unicorns that can solve problems on a whiteboard than they do on finding above-average developers that have a strong work ethic, can learn fast, and have shipped something.
As it stands, it seems the only people these companies hire are notable SV personalities, or people that excel at the formal interview format.
As a result, they are missing out on a lot of good talent.
I could upvote this all day. I was rejected by a company that posts about their need for developers constantly, and it irritates me to no end. I provided a big batch of sample code privately, on Github, demonstrated the apps I've shipped, showed great enthusiasm in their product (I was a happy user long before I attempted to join the company). They see all of this before interviews and then they reject me because of how I named a variable in a 15 minute pair-programming exercise and said I should read Code Complete (I have mostly), promptly ignoring the thousands of lines of code they could inspect. I'm sure there was more to it, but still, left a bad taste in my mouth.
Many interviewers simply can't get past the power-trip of interviews. This turns the interview into an awkward tightrope of appearing smart/dependable without being intimidating.
Remote is a non-starter for 99% of start-ups... and a lot of companies that are selling pants online are searching for PhD-level engineering talent to run their shopping cart.
I've noticed this, too, and been baffled by it. My working explanation is that people tend to hire clones of themselves. If the people making the hiring decisions in that online pants company have PhDs, they'll believe they need PhDs to work on that shopping cart.
Ask a company that is hiring "is X important?", where X is one of {open-source coding, algorithm design, Ivy league degree, master's degree, MIT degree, Facebook alum, Google alum, presence in Silicon Valley, under 25 years old, over 25 years old, has a github, has a blog}, and you will get a "yes" for each X that the founder has.
As someone hiring at a pants-selling company, I'd settle for somebody who can recognize a many-to-many relationship.
Our salaries aren't that uncompetitive, either. I think it's just that pants are un-sexy.
At the very least I'm trying to sex things up a bit by moving us to a semi-modern stack so we match the desires of the more ambitious talent in the marketplace...
Just checked pants-selling tech jobs; none of them (in the bay area, where the majority of them are, at least) have a requirement under 3 years. The majority of them are senior roles. Was your HR person flying by the seat of their pants when they wrote the job descriptions? If not, then I must be unaware that recognizing many-to-many relationships is a skill picked up after years of employment.
note: before my inbox overflows with resumes, you still need to have j2ee experience.
(As much as I'd prefer to hire bright people who can learn on-the-job (a category from which I emerged), our current delivery schedule means we don't have the bandwidth. The reasons behind this are beyond the scope of this comment :( )
But... that seems a bit of a wrong approach. If it takes you another 6 weeks to fill the role, that's 6 weeks someone could have been "learning on the job", no? And there's always a ramp up period - you're making an assumption that the person coming in without X years experience in tech Y will by definition not be able to learn fast enough on the job to be productive enough to hit target Z. But by not filling that role, you're definitely not hitting target Z. I do also get that there's time that's spent in onboarding any new hire, but that's possibly equivalent to spending more time hiring no?
I understand your main point, but I just think many companies hold fast to that position far too long, when the alternatives might be better than they think.
The startup I co-founded is exclusively remote, with almost everyone in a different USA state. I've found a lot of the talent in the area we're looking for (Minnesota) find remote to be either a new idea (I've done just a little remote before), and perhaps a somewhat strange concept (many are not sure if they could do it all day long).
Is there any good strategy to finding remote workers in a specific geographic location? Yes, that's kind of antithetical to remote working, but the state offers tax advantages to employing people from the state... and looking through the entire state of Minnesota should find someone who's fine working from a home office... right? Or do those types of people really primarily live in the SV area?
I can't speak to the Valley or any other "top tier" places but I live in a 2nd tier technology city, Orlando. We are the simulation capital of the world, two full sized Lockheed Martin campuses, really any defense contractor name you can think of, some household brand video game companies, etc. Lots of action going on here. The unemployment rate for developers is under 2%. This means that not only do "above-average" developers have jobs, lots of really awful developers also have jobs. It's INCREDIBLY difficult to find talent with under 3-4% unemployment.
There are a variety of reasons for that, in my experience. In the I-4 corridor the "shortage" is driven by two things, primarily: 1) it's just a crappy place to raise a family, what with the poor public services (parks, transportation, you name it) and school systems (gotta fund those prisons and blame the poor and old people for consuming state-subsidized health care and driving up those costs, y'know); 2) companies there are even more ridiculous than the valley with lowball compensation packages (this is especially true of the simulations and video game companies in the area).
People, especially educated and intelligent people, typically don't want to live in a place that values tourism, guns, and private religious school vouchers over parks, playgrounds, and public schools, and that also pay average (at best) industry wages.
I wonder if anyone in NY, SF, or any other 1st tier developer city can comment on the local unemployment rate for either software devs or IT in general. Here in Orlando/Tampa it's been around 2% for YEARS.
I don't know how First Tier Phoenix is... it's mostly business process development here, a lot of banking, and quite a bit of other financial process development, and business management dev.
We've been really low on unemployment for a number of years... the cost of living compared to dev wages (usually >= 80% of NYC/SF wages) is really great, that I would be hard pressed to consider moving to SF, Seattle or NYC. That said, it's a bit hard to find talent, but then I don't do it for a living... Also, I don't think the business people doing HR really "get" the mindset of a software developer in terms of actually recruiting.
I want to work with people who are good match for a job.
Most projects are not that difficult and uber-tech as founders like to think. Reliable average programmer that generates maintainable code in predictable speed might end up as useful and less annoying then bored genius.
That was annoying thing company I knew did. Candidates were selected for their love of algorithms and detailed knowledge of frameworks etc. Anyone else was labeled "weak".
It just so happened that the work required only surface knowledge. What they really needed was someone willing to do "boring" programming work responsibly and without supervision.
So, hired geniuses were running away faster then you can say bye and those who stayed half assed work.
> Most projects are not that difficult and uber-tech as founders like to think
This requires a certain amount of intellectual humility; as founders would have to acknowledge that it is likely they are not changing the world (they're coloring by number using last week's cool framework), and they don't need the best engineers.
Agreed. The subset of people who think they're great, and are great is vanishingly small IME. In fact after around 15 years of working as an engineer, I can think of maybe 2 people who fit that subset, and easily 50 who were legends in their own lunchtime.
It's gotten to the point where anyone who proclaims to be an expert in something is immediately suspect to me. The smartest guys I know never have to say it, and truly never brandish their skillset like some kind of gaudy prize. That kind of attitude makes it very easy to be undermined.
a) The smartest guys you know?
b) The average guys you know?
c) The average guys you know, but tell everyone how great they are?
d) The below average guys you know?
e) Other?
People who are great, do so not by telling other people they're great (although sometimes you need to have a little PR), but by demonstrating their great:
1. You want to work with them
2. Work diligently to make the team, product, and company better
3. Are smart
4. Are productive
A perfect blend of: talent, hardwork, and ambition.
I've noticed a trend of acceptable mediocrity here on HN. Any mention of wanting to work with people that are exceptional, results in near universally negative feedback.
As a startup, your first hires are CRITICAL. They set the tone of your company, and will carry a lot of the burden alongside the founders. You can't just settle for "good enough to get the job done." You're not just hiring for today, but for the next 2-5 years.
Seed your company with great people, and keep raising the bar.
Myself personally, I'm not great, so I want to work with people who are better than I am, not worse.
I have never found it difficult to hire for my dev shop in San Jose and I don't pay anywhere near what I'm told the "market" rate is. I hire engineers fresh out of no-name colleges, self-taught programmers, former freelancers who decided they wanted the stability of a salary and people over the age of 35.
Basically I will hire the people who won't get the time of day from a lot of the big tech companies and rocketship startups and who wouldn't make it through the interview process there if they get through the front door. And you know what? Most of my hires turn out to be entirely adequate and the duds are not nearly as difficult to deal with as everyone says they will be.
Granted my company is not building database engines or running social networks with a billion users but we do enterprise web apps for good clients and we are profitable. This idea that you have to give every employee 10% of the company and 130k a year to get people who can get the job done is a terrible, terrible myth and posts like this perpetuate it.
Your post is a bit baffling. You state flat-out that your "dev shop" does "enterprise web apps" (almost certainly of the most pedestrian and easily automated variety) and that you target groups filled with people who are either desperate or unlikely to understand just how much you depend on them in order to take advantage of them by paying much less than you should. There's nothing mythological about that.
First off, while I appreciate your attempt at criticising the type of apps we build for clients who collectively generate billions of dollars in revenue per year I must point out that most web apps could be called pedestrian. Go through a list of the latest batch of YCombinator startups and I think you'd have a hard time finding many whose apps couldn't be called pedestrian too. An app doesn't have to be complex to be incredibly useful and/or profitable and by the way a lot of the work done at companies like Google and Facebook is pretty pedestrian too. So what's your point?
As for paying my employees less than I should, that's quite a statement given that you don't know how much I pay them. All of my engineers make $65-95k a year. At the lowest end is a recent community college grad who is really talented but didn't have the grades or money to go to a 4 year school because he was taking care of his sick father. I was literally the only company he applied to that gave him the time of day.
I constantly hear (from people like you) that my wages are too low and that I'm going to find it hard to hire good engineers but I have yet to experience this. I can't pay $110k to a new college grad or $140k to an engineer with 3 years of experience but from what I see the number of those jobs is far lower than the number of engineers in SV. Should the engineers who aren't going to even get an interview at Google remain unemployed?
I mentioned on another thread that I have one employee who I know is unhappy with his salary. He has about 4 years of experience and makes close to $90k a year but apparently he got it in his mind that the streets of Mountain View are lined with 6 figure jobs. He's a decent engineer who writes adequate code but he's not the type of guy who is going to pass a white board algorithm test. I know he has been looking and interviewing for the past 8 months and he's still here. If I'm taking advantage of him please explain why apparently no other company has offered him the 6 figure salary he (and you!) thinks engineers are entitled to.
By the way when I started in this industry in the 90s my salary as a programmer was the equivalent of about $38k today. I didn't feel taken advantage of or desperate then and thankfully to this day never got a big enough head to feel entitled to a significant income just because I can write some code.
I won't argue with your point re: web apps being pedestrian. I'd be the first to agree, if it isn't obvious. I have multiple comments here on HN where I scarcely hide my negative view of the pervasive fad-hopping "rockstar" macbook wielding silliness that seems to suffuse certain segments of the Valley.
My point wasn't that you won't be able to hire developers adequate to the tasks you require. It was that your target labor pool doesn't intersect with the labor pool target of companies building "database engines" or scaling up to "billions" of users, and so to compare your compensation packages to companies who are looking for engineers capable of building those things is a bit daft.
Wait a minute. I thought your point was that I was praying on the desperate and taking advantage of people who didn't know what they're worth? I'm glad you changed your tune.
By the way I know plenty of people at startups who tell me they can't find decent engineers when they're offering 30-50% more in salary than I do. And 99% of these startups are NOT building database engines or running massive social networks. Most of them actually have web apps that are on par with the web apps we build for our clients if they are even that sophisticated.
The problem as I see it is that a lot of the management at these startups are deluded about the skill set they need and they lack the intellectual honesty to admit that their startup is not Google (yet). They can't find candidates because they are so in love with the idea of talent, too picky and don't want to invest in employee development. I mean it's not the end of the world if a candidate doesn't have experience with Git or unit testing. This stuff isn't that hard to learn and if your employees have nothing to learn from you they will probably be bored very quickly.
On the flip side all these ads for 6 figure positions and talk about salaries and talent shortages has given a lot of below average, average and good but not great engineers (which make up 99% of the labor pool by the way) the mistaken impression that anybody with a few years experience who can build a crud rails app can make a couple of phone calls and land in a 120k a year job. It's nothing but a mirage. For every 1 engineer who can get one of the $$$ jobs there are 50 who could do a dozen interviews and get no offers.
I didn't change my tune. I still think that you're preying on and taking advantage of the desperate and naive, just like the startups you mention in this comment want to do, but paradoxically expect to also be "rockstars." It's a different kind of naivete the startups are after--they're after bright, gifted engineers whom they can convince to take feel-good euphemisms ("change the way X is done" or "disrupt Y" and HAVE FUN doing it) in trade for reasonable compensation relative to the value the engineers provide.
Those startups should be hiring your developers at the rates they offer, and you should be paying those rates. But because the startups you mention think they need the CS equivalent of Einstein and Feynman to run their CRUD stack, your developers are ones they pass on (and then whine about a talent shortage), and allow you to pay the below-market rates you get away with, because in your segment of the market there is, apparently, an excess of labor available. Your description, in other words, isn't a counter to my point.
It's lovely that apparently you believe anybody who can build a crud app deserves a 6 figure job but reality is based on the supply and demand, not your utopian dream world.
The bay area is expensive but I am proud that I can provide salaries substantially above the median household income in the US with decent benefits. How many people do you provide $65-95k a year jobs to? When was the last time you hired people who had been rejected by every other company they applied to because nobody was willing to look at their potential and take a chance? What percentage of community college graduates do you think make $65k a year to start? Heck what percentage of 21 year olds you even think make $50k a year? It's easy to criticize me and tell people who don't have 6 figure jobs that they're selling themselves short but hey talk is real cheap.
By the way a ton of the startups offering those 6 figure salaries don't earn enough profit to pay those salaries. Their investors are paying those salaries. What do you think is going to happen when the money runs out and there are no more sinking ships to jump to? Will you suggest that the unemployed engineers cling to their tulips?
enterprise consulting teams face a perverse incentive to be less efficient than product teams - a consultancy can actually kill itself by being too efficient
That's not always true. Most of our projects are fixed price so efficiency is very important. If the scope doesn't change and we're inefficient I lose money.
> one of our interviewers felt threatened by you because you're more knowledgeable so he veto'd you
I interviewed at a place and turned them down (located in SF) for this very reason. I could immediately tell that one of the owners did not like me. After wrapping up my entire interview process one of the owners thanked me and told me that they would reach out to me with more information. I went to thank and shake the hand of the other owner (he had wandered off).
(They brought me in on a friday and they had a very open layout, engineers wandering about, beers in hand...etc)
I opened with a thank you and, "I spoke with XYZ and he said you guys would be following up with more information, i look forward to speaking with you again!"
He looked at me and said, in a very short and harsh tone, "Oh - I guess we will then..hm"
I was extended a job offer the next day and immediately began receiving terse calls that I needed to forward more information and get it to them NOW (from the one who was quite brash with me earlier).
Something to the effect of that - unfortunately when they extended the offer I was away at a conference and I had to do it over the phone in a loud hall. I was very unhappy with how the entire exchange went, but overall I am glad I did not take the job.
Companies often give generic responses like "we feel like there isn't a match" to cover themselves legally.
More helpful responses can accidentally open you up to discrimination suits, and given the option of (A) bulletproofing every helpful response to make sure it won't come back to bite you and (B) just giving a generic and safe response every time, you can see why they'd choose the latter.
I will add that people are also very uneven in how they receive feedback. As John Scalzi writes, "[...] there are a lot of people who, when they say, 'I’d love feedback,' actually mean 'I want a hug.'" [1]
Even those who actually want feedback are often unprepared to hear it. Thinking back, some of the biggest things I struggled with were things that were invisible to me. If I try to imagine explaining some thing to my younger self, my options are a) explain it politely but in a way that I wouldn't get, or b) being so blunt that I get upset or defensive. E.g., what I once saw as being passionate about getting at the truth is something I now see as me acting like an arrogant, argumentative, know-it-all jerk.
Plus, feedback is much harder when it isn't interactive. When I do give feedback, it's always at the interviewee's request, it's always right after the interview, and it's always in person. Then it's pretty easy to gauge their emotional state, give them the feedback that's useful to them, and refer to specific examples that are fresh in our minds. Doing that a couple weeks later in print would be a nightmare.
Giving vague feedback to disqualified candidates may be necessary to cover lawsuits against the hiring company, but does nothing to make the would-be candidates grow or improve.
Is weird. I have more than +17 years on this job, and when I have apply to some oportunities (online) for the kind of things I could be good some companies expect to hire me testing for the things that are not related to the job itself!. Like testing algorithmic stuff instead of database (I'm a database/crud/backend guy).
I could understand the use of some general test, but the weird thing is that nothing at all related to the job is used.
I remember from some big internet recruitment agency that use a lot of time with me, but at the end I fail at them because they use the final testing unrelated to all the things hours and hours before we talked about.
Is like hire a mechanic, and ask only algebra stuff.
Indeed. This article says "if you’re going to recruit outside of your network (usually a mistake, but sometimes there are truly no other options)" WTF? You think you know all the good people already? Such a narrow minded view.
I highly doubt they think they know all the good people. It's just a much better idea to hire someone you or someone you know and respect have had a good work experience with. Hiring someone off the street opens you up to a lot of unknown, most specifically if they're a good culture/team fit.
So you think you know all the people who are "a good culture/team fit", and they aren't even particularly good. And then you complain about how hard it is to hire people? Of course its hard to hire people if you limit yourself to the thirty you know.
Hiring people you don't know opens you up to opportunities to expand your horizons and go in new directions. If a good culture fit means people you already know then you are incredibly narrow minded about culture.
I find it ironic you're accusing either me or the author of narrow-mindedness but your responses clearly indicate you haven't comprehended either of our points.
I do agree that you or your (extended) network don't know all the people worth knowing as there are always gems in random pool of people, but I think the odds are a bit better, at least from my own experience, finding them through the people in your network. How it usually pans out is that you ask your network "we look someone to do X, does anyone know anyone" and they ask their network and the loop continues until a name or a lead to a name comes up.
That's true but a sloppy way to say it. A more precise way to characterize his argument is that extraordinary claims require extraordinary evidence.
Then: is it an extraordinary claim to suggest that the hiring processes used by most tech companies are doing a bad job of selecting candidates? Are engineers hired through these processes but then fired within the first 6-9 months a rarity? Is turnover generally low? Is hiring so risky that companies working in the middle of a "talent crunch" are demanding that candidates take temporary contracting roles so they can evaluate performance? Is the typical startup engineering team staffed by engineers uniformly capable of production? Are tech company hiring practices carefully designed and executed, or is it more the norm that they're delivered by whatever engineers happen to be available for candidates when they show up? If the latter is the case, isn't it instead an extraordinary claim to suggest that these processes could work at all, given that they're essentially stochastic?
> Is hiring so risky that companies working in the middle of a "talent crunch" are demanding that candidates take temporary contracting roles so they can evaluate performance
Heh. Somebody had to say this. I don't know what the difficulty is all about. In the SV I have been more to more than 1 interview where I solved all the questions(in a day long interview) and didn't get the job.
My observation has been that while average compensation isn't trending upward that much, variance is increasing a lot. I've seen market research which bears this out. Especially among top candidates straight out of school, salaries have gone up a lot in the last few years.
Are salaries actually rising so much ? From survey below, they've risen 2.3% last year, 2.1% the year before ... my memory of other surveys is similar ... doesn't even seem to be rising faster in SV ...
This is supposing that the all of the excess demand for good engineers is coming from companies that have gotten good at hiring and have moved passed these "we only hire the 0.1%" mentalities.
In a lot of places there might be extra, hard-to-satisfy demand because their processes for sifting through the supply of developers is poor or not working.
The Bay Area is a great place to be if you're an engineer. You get many job offers in your inbox every week. Your friends have long since stopped asking you if you want to work at their startups, but you know just how quickly that would change were you to signal that you wanted a new job.
I think the crunch is at least somewhat real. We've hired a couple great people we met through Hacker News -- I couldn't have imagined them working out any better. And recently I've been trying to hire more people at my startup and, frankly, it's tough to find good people.
We've worked hard to make our interview process quick, insightful, fun, and accurate. Do we do pair programming? Sure. Do we ask about data structures? Absolutely; any programmer worth anything knows something about data structures. Do we do whiteboarding? Yep. Programmers at our company, it turns out, need to be good at communicating with humans as well as with computers. Do we give people answers immediately, and tell them why we are rejecting them? Yes, we do. We are more humane and reasonable than so many other places.
(It drives me crazy how many bad interviewers there are out there. Some of my friends recently interviewed for entry-level positions and some shall-not-be-named companies in SF and were treated terribly: given the run-around by the recruiters, brought back in the office 4 separate times for interviews, and ultimately rejected by at least two companies when they decided they didn't want to sponsor H1Bs after all. Insane. In a war for talent, you'd think practices like this would cease.)
Anyway: this is all to say, I'd love to meet your friends or anyone else out there who's looking for a programming job. My colleagues and I are not awful people. We like to brew beer and write code and help make the world a better place. We have a book club and eat good food. Oh, and we pay well and sponsor visas and are generally, you know, warm and friendly folks.
I'm curious to know what kinds of problems you work on, then?
I find that I need to have a strong working knowledge of data structures every day. Hashes, lists, trees, and so on. Knowing how to apply data structures in production code matters a lot: the difference between a hash lookup and a linear scan, for example, can mean the difference between a reasonable response time for an application and an absolutely terrible response time.
In interviews, I have found that good understanding of these data structures (and the algorithms one uses to manipulate them) correlates strongly with ability to solve larger and more complex problems.
I wrote real-time signal processing code in C for 5 years. I used lists and arrays. Indirectly I used queues as well, but those were buried down in the mailbox code in the middleware. Also was not allowed to malloc and free during runtime or use recursive calls without a very good reason. No DFS or BFS to be had anywhere in the code. No sorting, except for a couple calls to the Standard Library qsort function. My algorithm text of choice was Skolnik[1], not CLRS.
Guess I wasn't writing software for a living. Plenty of SV companies sure got that impression.
I don't consider an array much of a data structure. Its just a contiguous block of memory with a shortcut for addressing inside. List is at least a "proper" data structure. If "data structure" is defined that broadly, then its nearly impossible to write a non-trivial program without data structures. Its like trying to write without sentences.
However, when people around here refer to "data structures" they mean a whole lot more than those two. All of the data structures listed in the post I was replying to are widely considered "standard" data structures that are used all the time. I was pointing out that I worked in a significant, operational codebase of >150,000 lines total that used only the most basic of data structures, and used those sparingly.
You have a point. What I meant was I haven't used theoretical knowledge of data structures. Arrays and hashes does not count :) That's just basic programming knowledge.
Whenever someone uses the term "data structures" I think about the inner workings of different types of B-tree's. And since I don't know the inner workings of the more advanced data structures, I would probably disqualify myself.
The things in that article that are today considered vastly out-of-fashion (probably too much, the same way they were too in-fashion in 2000) are numerous, but this "
I have got the "We are not going to go forward with you but we are not going to give any reason for that either" more than few times now.
Happens one time, you think it was chance. Happens couple of times, you think you think there might not have been a cultural fit.
But you can't help but start questioning your skills as a developer sometimes. Times like those I could really use a reason why I am not a good fit. That includes "We don't think you are a good developer" because knowing the problem, I could try and fix it.
> Seriously, if you're really desperate for engineering talent, I can give you contact info for a dozen or so of friends who are ready to work for you RIGHT NOW (provided your startup isn't an awful place with awful people, of course) and probably another dozen or two who would work for you given enough convincing.
How can I get in touch with you? My email is in my profile page.
Someone who scores pretty well objectively and is getting subjectively tanked by one person on the loop is something to explore more deeply.
3 out of 4, there's something legitimate there. It's possible to be coached through some of the objective parts of many interview processes, ours included. That's readily true for an internal referral (and could be innocuous rather than malicious), and even someone using glassdoor to prep could maybe skate by a couple questions, but someone will usually sniff it out subjectively.
1 out of 4 it's a "personality clash" which could be code for being threatened by someone's technical superiority, rather than simply being annoyed by someone's superior PITA-ness
If the same employee is constantly on the personality clash side of things, it's easy enough to remove them from future loops (and possibly the company, if their inferiority complex is rooted in actual inferiority).
I agree with this strongly. What I usually say is I'll believe there's a shortage of great engineers the day that in-house recruiters begin contacting me. My accomplishments are right there on LinkedIn, if you can assume I didn't lie, for one phone call. Until that happens, I have to conclude companies that allegedly can't hire are barely trying.
How do you list yourself on LinkedIn - as looking for a job?
For someone such as myself looking for a talented engineer, unless there is a strong indicator that someone is looking for a position, I've found LinkedIn has not provided too many responses.
I tried one of the more expensive LinkedIn accounts awhile back, contacted about 10 people that all had mobile experience (my company makes an iOS and Android app for higher education), and only got 1 response to my message.
I assume part of it is that my message was read by these people, but they looked at it as "spammy," even though I wrote it individually to each person and tailored the message for each person. I've gotten messages from random people on LinkedIn, and it's easy to feel messages on there to be spammy.
So having my time on LinkedIn essentially feel like a huge waste made me question LinkedIn. Is it that I used their email system, and I should have instead setup a phone call?
Perhaps I am communicating a job that is not particularly interesting? I think an iOS and Android app with web backend, using the tech we are using (native languages for the native apps, and NodeJS for web), would be fairly attractive to a variety of developers though.
My problem with LinkedIn is that I rarely get contacts about jobs I am interested in or truly qualified for.[1] I'm honored to have been contacted by all of the Big 4 via LinkedIn. I'm bummed that they always contact me about DevOps type jobs. Could be that I need to write up my experience better, but what I have down there should not be giving the impression that I am a DevOps guy.
[1] Note: I am not actively looking and do not have this indication set on my profile. All contacts I am referencing are purely passive pings.
I've been listed on linkedin as actively looking for a job for 4 months now. Granted, my profile could use some work, but the few replies I've received didn't mention anything listed on my profile other than my name.
The generosity strategy Sam Altman outlines is coupled to a "fire fast" (here, "before cliff") strategy that is hard to execute in practice; it takes a degree of ruthlessness to fire someone not because they're incompetent but because they're not performing at the level required for their equity grant, and it's not the same ruthlessness required to succeed in business. It seems especially risky for the kind of startup team where all the engineers are hired by being referred in by their friends.
I haven't heard of early hires being fired because their performance didn't match the amount of equity they got. All Sam's really saying is that if someone turns out to be so bad that you have to fire them, vesting means they won't have cost you any equity.
I think we read Altman two different ways. I read him as saying that engineers should be issued drastically more equity, and that firing before cliff should be used to ensure that middle-of-the-road developers don't end up eating too much of the equity.
It doesn't need to be coupled to "fire fast". It is only the first quarter (or even 6th in some vesting schemes) that vests after the cliff.
In my vastly more limited anecdotal experience than both of you guys', companies are not just stingy with equity, but they are also overly stingy with salaries.
That's especially true about the ongoing startup myth of underpaying because the equity is supposed to make up for it - and then being stingy with equity. Sheesh. 0.1% of a $50M buyout is $50k... how many years of salary loss is that worth at the risk? And that's assuming that 0.1% doesn't get diluted down to more like 0.05% by later funding rounds.
Another way I could say the same thing that sidesteps your argument is that the more generous you are with equity grants, the more ruthless you need to be about firing.
So then why take options at all? Statistically and economically there's little incentive to at that point, especially if management is going to create this toxic ruthless "fire fast" environment.
The fact that employees and company principles value startup equity very differently is another reason why some companies are stingy about granting equity.
To me this is crazy - it's the most obvious choice to be generous with equity, with so little downside and such immense upside. Who cares how much of the company you own if it's worth nothing? And surely there's nothing more risky to an early-stage startup than unhappiness; if the founders and early employees have disagreements, or harbour any resentment that will cascade out of control.
Generosity begets generosity; treat your team better than they expect and the rewards will come naturally.
I agree completely, but I'll add that equity feels weird to spend. You've got a fixed quantity of it, it has to last you forever, you're spending it on things with hard-to-predict values, everybody wants some, and an important aspect of the fundraising game is protecting equity from predators. At least for me, these things activated my scarcity-related cognitive biases. Suddenly the obvious choice gets a lot harder to see.
Don't think of it it as a % amount but a $ amount - this better matches the reality equity (as dollars) grows as the company grows, and thus isn't finite. Obviously i'm not saying equity is cash, but it IS a high risk investment worth a quantifiable amount of cash.
Depends on the situation. If you're a single founder and you've only been working on the company for a couple months and the person you're hiring is as competent and dedicated as you are, 50% could be reasonable.
Essentially, figure out what market rate is for their salary. Since you'll likely pay a discount rate, the equity should bring them at or above market.
So if Market is 105k, and I'm going to pay 55k, I will give you 50k in equity (based on a reasonable valuation--assuming you don't have an actual valuation).
Using a flat rate percent can get tricky, and you can easily end up unnecessarily diluting yourself.
I also think it's important to think of your first 1-3 hires as Key hires, the same way a new CEO or VP of Sales would be a key hire post Series-B. You want them to get a big chunk of money if there is a positive liquidation event.
If market rate is $105k and you're paying me $55k in cash, then I'd want $100k in equity, not $50k. This is something many startups get wrong. It isn't a one-to-one swap.
Even if you have some sort of reasonable valuation, equity is worthless until there's someone to sell it to. There needs to be an uncertainty/illiquidity multiple applied. Otherwise, I'll take the cash. That has literally always worked out to my benefit throughout my 15 year career in software development (even working for companies that got acquired for 9 digits).
I think another way to put it is you need to pay them for the risk they are taking. That's why you can't do a one-to-one swap. If they get the same total amount of money that they would in a more stable position, they have no reason to take the risk.
I never said I thought equity is worthless. I said I would choose cash over equity if the equity is not weighted heavier than cash to account for the risk and illiquidity inherent in startup equity.
I am engineer #1 at a startup right now. The equity was very generous and weighted appropriately vs cash.
50k is pretty low--I should have used a better number. Probably more like ~200k in equity.
From a pure wealth maximization standpoint, you should never work at an early stage start-up. The company will probably fail, and your equity won't be worth squat.
A couple reasons you would consider that deal:
1. Hopefully within 18 months you raise a sizable round and get bumped up closer to market rate.
2. In a year, thanks to your hard effort, your equity is increasing in value, in sizable amounts.
I guess that makes sense. It still seems like buying an (expensive) lotto ticket. Unless the company was doing something uniquely exciting, it doesn't seem attractive to me.
Aside from where the startup is, it is also hugely dependent on who that first engineering hire is. If it's a junior developer with a lot of potential but not much experience that they are taking a chance on because one or more of the founders are quite advanced technically themselves and are willing to mentor, train, etc, even 1% is quite generous. If the hire is either on par with the founders in terms of technical skills and experience or even the sole technical employee expected to be lead the effort and eventually build the team, even 5% can be considered quite low, depending on what the founders bring to the table.
I think the answer is all of the above. Are they pre funding? More risk = closer to 5%. Are they on their third startup with two successful exits and raised $1.5 - $3 mil in Angel already? 1 - 2%. But you're in the right range for sure. (this is the first true outside hire)
> if people are going to turn down the certainty of a huge salary at Google, they should get a reward for taking that risk.
I often see a disconnect between perceptions of expected success of founders and engineers. I've observed this is particularly pointed for non-technical founders. To generalize, a young entrepreneur with some success under his belt is starting a company. As far as he's concerned his company is all but guaranteed to succeed: he's got the experience and sophistication necessary to make this happen, the team he's hired to his point is top-notch, he's got the attention of some investors, the product is well thought out, etc. He approaches an exceptional engineer and extends an impassioned invitation and... the engineer balks.
What happened? Is he delusional about the company's prospects, thinking he's got a sure fire hit when he's actually in for a nasty surprise once his hubris collides with reality? Is the engineer a square who would rather work a boring job at a big company than live his life, and wouldn't be a good fit for the team anyway?
I propose a different resolution: our confident businessman is certain about the success of the company, not the success of the engineer as part of the company. He knows the company's success is going to rocket him into an elite circle of Startup Entrepreneurs. The engineer, on the other hand, doesn't see the correlation between the company's success and his own: even if the company takes off to the tune of eight to nine digits, his little dribble of equity is just barely breaking even over the comfortable stable position he's in now.
First, sf and the valley simply don't pay engineers well enough. This is the second, striving to become the first, most expensive housing market in the united states. $150k sounds great here until you look at that as a fraction of your housing cost and compare to anywhere else in the country, including manhattan (because unlike here, nyc isn't run by morons so they have functioning transportation systems). I don't want to just quote myself, but all this still applies: https://news.ycombinator.com/item?id=7195118
Second, immigration is a crutch to get around paying domestic employees enough. I see net emigration from the valley amongst experienced engineers in their 30s who start having families and can find better financial lives elsewhere. If companies paid well enough that moving to the bay area wasn't horrid financially, they'd find plenty of software engineering talent already in the united states. But consider my friend above: $165 total income in the midwest is (compared solely to housing cost) equivalent to approx $450k here, when holding (housing costs / post tax income) constant.
edit: not to mention, companies still don't want flexible employment arrangements or remote work. I'm a data scientist and I'm good at my job (proof: employment history, employers haven't wanted me to leave, track record of accomplishments.) I'd rather live elsewhere. 66 data scientist posts on craigslist (obv w/ some duplication, but just a quick count) [1]; jobs that mention machine learning fill search results with > 100 answers [2]. Now check either of the above for telecommute or part time. Zero responses for remote or part time workers. So again, employers want their perfect employee -- skilled at his or her job, wants to move to the valley enough to take a big hit to net life living standards, doesn't have kids, and doesn't want them (cause daycare or a nanny or an SO who doesn't work is all very expensive.)
> "$150k sounds great here until you look at that as a fraction of your housing cost and compare to anywhere else in the country, including manhattan (because unlike here, nyc isn't run by morons so they have functioning transportation systems)"
This really is it. I think employers are between a rock and a hard place. Engineering salaries are rising rapidly, but the engineers aren't really seeing the benefits of it - every raise is just as quickly swallowed by the ludicrous housing situation in the Bay Area. Nobody's getting rich except landlords.
And anecdotally as someone who moved from SF to NYC, $150K goes way further here than it does in San Francisco. SF housing is (nearly) just as expensive, and the lack of basic infrastructure means there are tons of little things bleeding you dry at every corner. Buses don't run where you need to go? Call for a Lyft or Uber - individually not very expensive, but it adds up. Death by a thousand paper cuts.
I liked his part where he said "you can find great engineers outside of Silicon Valley."
I didn't like where he said "get them to move to Silicon Valley."
Moving is stressful and costly, even if the company is 100% covering relocation. Moving to Silicon Valley would require a quite significant raise to cover the increased housing costs, which would still leave me with a much smaller house than I enjoy in a top 20 (but not top 5) market.
Living in a high cost of living area is a FANTASTIC way to get your retirement plans going. Putting 10% of your SF income into your 401k is way better than putting 10% of your Austin, TX salary into your 401k. So while you're young and single you bank away lots of cash. Then you move and start a family elsewhere and retire comfortably. The problem is that I don't think enough people life-hack in this way.
This is true, but 401K contributions are capped at around $17K. You can do that with the Austin salary just as well, usually. In Austin you have no state income tax, and the price of everything else is much lower (in general).
The absolute cheapest home near my work with 2 bedrooms is a condo at $700K (source: realtor.com). (edit: that is an outlier, most are considerably more expensive, and these days the 'ask' is the lowball figure - people will bid several hundred thousand over the ask to buy, because they are competing against other twitter millionaires buying for cash and nonchalant about the housing bubble because they can't be really hurt if it crashes)
To get a home equal to the home I moved from in CO (which I bought for $425K) would be, I don't know, nothing is listed to compare. Over $3M I would think. My friend recently sold his house north of that, and his yard was tiny and the house was smaller. My CO house is comparable to a $4-5M Tahoe mountain home - a few acres, awesome views, wooden beam interior, huge open space interior plan, full basement, multiple decks, and so on. (edit: okay, cabinets are Home Depot, not custom built, etc, but it's still a close comp otherwise)
So, yes, if you want to live in a cramped condo, see your money evaporate to taxes, driving to work, private schools, and so on, you can 'life hack' here. Or, you can live elsewhere, own a few acres, have a big garage, a rec room, work normal hours, have half the commute, and still save plenty of money.
> So, yes, if you want to live in a cramped condo, see your money evaporate to taxes, driving to work, private schools, and so on, you can 'life hack' here. Or, you can live elsewhere, own a few acres, have a big garage, a rec room, work normal hours, have half the commute, and still save plenty of money.
While you aren't going to be living on a few acres working at a tech job in the Bay Ara (barring long commutes), you are exaggerating a bit here.
- If you live in SF, you generally don't need to drive to work. Your commute will be short (<25 minutes). You can get quite livable single-family homes (3 bedrooms, 1400 square feet) for $750k. You may want to consider private schools.
- If you live in areas where you want to get good public schools, prices may surge to $900k for homes that size.
tl;dr If you want a huge home with huge lots, yes, very difficult in the Bay Area. But if you just want a typical suburban lfiestyle, it is pretty easy to do on a tech salary.
> - If you live in SF, you generally don't need to drive to work. Your commute will be short (<25 minutes). You can get quite livable single-family homes (3 bedrooms, 1400 square feet) for $750k. You may want to consider private schools.
I live in Dallas, have a driving commute well under 25 minutes, and have a 3 bedroom, 2300 sqft house I paid $175k for with the same stipulation on the schools. Your scenario would be a major cost increase for me. In fact, I could probably max out my 401k here with just the housing cost delta. Austin is more expensive than Dallas[1], but I wouldn't expect to pay more than about $250k - $300k for my house there (for reference, my house is worth about $190k now). I could downsize to your SF-sized house here for under $100k. Since I would realistically only get about a 70% pay raise max over my Dallas salary for moving to SF, it doesn't make any sense.
For savings, the only thing that matters is the delta between expenses and income. I live in rural Massachusetts and had no problem maxing 401k for 20 years. I used to live in NYC and the delta is way higher here even though the raw salary was higher in NYC.
I'll copy/pasta my response to someone else who made a similar response:
Let's say in SF you get $150k and put 10% away with a 5% match. That's $22,500 per year you're socking away into your 401k. If you live in Orlando and you're making $90k/yr and put 10% away with a 5% match that's $13,500, a net loss of $9k every year in early retirement savings. After compound growth over 40 years of maturity that's going to be a TON of cash. As long as you don't plan on RETIRING in SF, you're much better off working there.
You're talking past each other. The point is that in other places you can save a larger fraction of your income such that you're actually saving more money in dollar terms living in rural MA than living in SF. SF is hilariously expensive compared to any other major city in North America.
Why base your saving % on your salary? Again, delta is all that matters.
From my experience, that delta is higher in low expense areas. The assumption I'm making is that the typical HN'er is a top performer who can demand top percentile salary in any market, or work remotely.
The hack I recommend is getting SF salary in low-cost area.
No, because in his scenario, in SF you just made $54,000 more before taxes and after 401K contributions. I have no clue what Florida tax rates are, but there is no way that after taxes that is not at least $27k more earned in SF.
It is only correct if the random SF and Florida salaries are correct.
I work in rural MA and make considerably more than the given SF salary (non-remote). The SF salary is probably better on average (the 50 percentile), but I stand by my statement that top performers can command SF salaries in any market. Even if you can't find something local, there are a ton of remote options.
What you said makes sense to me on its own, but there's more to it than that. If your cost of living is much lower in Orlando, perhaps you can save 20% of your $90k income instead of 10% of the $150k income.
I really enjoy owning a house. I wouldn't be able to afford it in SF. I bought a nice 3/2 in Orlando for only $110k a couple years ago. My dog loves it too. :) So there's also that.
Or, you can work in an area where you can strike a balance, where the market/salaries for your field are good/higher compared to the cost of living. While I generally agree with your sentiment, I don't regret enjoying my life as I live it.
Except it doesn't really work that way? If they pay extra in SF than in Austin to make up for the difference in living expenses, your net income pool that you draw from to contribute to your 401k is going to be roughly the same.
Let's say in SF you get $150k and put 10% away with a 5% match. That's $22,500 per year you're socking away into your 401k. If you live in Orlando and you're making $90k/yr and put 10% away with a 5% match that's $13,500, a net loss of $9k every year in early retirement savings. After compound growth over 40 years of maturity that's going to be a TON of cash. As long as you don't plan on RETIRING in SF, you're much better off working there.
But what you have available to save is not a % of your total salary, it's a % of your total net income (salary - taxes - living expenses). If those jobs in SF pay higher wages purely to keep up with the inflated living expenses, then you don't really have more money to devote to your 401k.
Where in the world does that apply? NYC has some of the most tenant-friendly rent control laws I know of, and most rent-controlled units are fairly close to market rate, and the legends you hear about exist but are so rare they might as well not.
Urban centers have a pretty finite supply of housing, so you're looking at what amounts to a long-running auction for rents among residents. People are generally pretty willing to "bid" 25-35% of their income on rent (or more, depending on the area and demographic), so as average salary rises, rents are going to rise too, unless you're expecting a major urban retreat sometime soon.
“The only thing you need to do is fix immigration for founders and engineers. This will likely have far more of an impact than all of the government innovation programs put together.” - this is so darn true it's not even funny.
Conversely, and I know this is pretty out there, this is what I think will be the killer app of virtual reality. If I can ship a $5K "pod" to a developer somewhere in the world which allows us to work together 90% as well as we can in person, then you're damn right I'm going to do that.
I believe VR tech will get good enough (3-5 years) before immigration issues will be sorted out (10-20).
Immigration issues are easy to sort out. H1-B's automatically convert to Green Cards after 12 months if the person is still employed at the company. Company is responsible for the expense of the security check.
It solves both the H1-B limit and the engineering shortage in one fell swoop.
However, NO company lobbies for this because they like their 5+year indentured H1-B servants.
Broken record: startups are also probably rejecting a lot of engineering candidates that would perform as well or better than anyone on their existing team, because tech industry hiring processes are folkloric and irrational.
I co-manage a consultancy. We operate in the valley. We're in a very specialized niche that is especially demanding of software development skills. Our skills needs also track the market, because we have to play on our clients turf. Consultancies running in steady state have an especially direct relationship between recruiting and revenue.
A few years ago, we found ourselves crunched. We turned a lot of different knobs to try to solve the problem. For a while, Hacker News was our #1 recruiting vehicle. We ran ads. We went to events at schools. We shook down our networks and those of our team (by offering larger and larger recruiting bonuses, among other things).
We have since resolved this problem. My current perspective is that we have little trouble filling slots as we add them, in any market --- we operate in Chicago (where it is trivially easy to recruit), SFBA (harder), and NYC (hardest). We've been in a comfortable place with recruiting for almost a year now (ie, about half the lifetime of a typical startup).
I attribute our success to just a few things:
* We created long-running outreach events (the Watsi-pledging crypto challenges, the joint Square MSP CTF) that are graded so that large numbers of people can engage and get value from them, but people who are especially interested in them can self-select their way to talking to us about a job. Worth mentioning: the crypto challenges, which are currently by far our most successful recruiting vehicle (followed by Stripe's CTF #2) are just a series of emails we send; they're essentially a blog post that we weaponized instead of wasting on a blog.
* We totally overhauled our interview process, with three main goals: (1) we over-communicate and sell our roles before we ever get selective with candidates, (2) we use quantifiable work-sample tests as the most important weighted component in selecting candidates, and (3) we standardize interviews so we can track what is and isn't predictive of success.
Both of these approaches have paid off, but improving interviews has been the more important of the two. Compare the first 2/3rds of Matasano's lifetime to the last 1/3rd. The typical candidate we've hired lately would never have gotten hired at early Matasano, because (a) they wouldn't have had the resume for it, and (b) we over-weighted intangibles like how convincing candidates were in face-to-face interviews. But the candidates we've hired lately compare extremely well to our earlier teams! It's actually kind of magical: we interview people whose only prior work experience is "Line of Business .NET Developer", and they end up showing us how to write exploits for elliptic curve partial nonce bias attacks that involve Fourier transforms and BKZ lattice reduction steps that take 6 hours to run.
How? By running an outreach program that attracts people who are interested in crypto, and building an interview process that doesn't care what your resume says or how slick you are in an interview.
Call it the "Moneyball" strategy.
Later: if I've hijacked the thread here, let me know; I've said all this before and am happy to delete the comment.
> we use quantifiable work-sample tests as the most important weighted component in selecting candidates
Can you speak to that a little? I'm reading it as either programming challenges in a real environment, or analysis of previous code snippets submitted. In either case, I'm happy to see more companies doing this.
I'm always looking for ways to improve my interview skills, but I want to do it honestly. Studying to the test isn't fun for me, I would rather hack on something.
Most programming puzzles aren't real work-sample tests. A work-sample test has to be representative of the actual stuff you'd do on the job.
The trick is, to work in a recruiting context, you also want those tests to be standardized and repeatable. A lot of companies fall down on this. They have candidates do "real work", often in a pair-programming context. There a bunch of problems with this:
(1) "Real work" usually isn't standardizable, so you can't compare candidates
(2) Signal quality from the test is intensely dependent on who is doing the work with the candidate
(3) Two different candidates might end up getting "tests" that are wildly different in terms of predictive power
I have a bunch of ideas for pure software development work-sample tests, but I'm not ready to share them. The idea is simple, though:
* It's a realistic exercise that approximates actual day-to-day work as much as possible
* Every candidate gets the same exercises
* The exercises have objective (preferably gradable) outcomes
So accurate. I'm a grad student who studied security deeply during my time in school.
I want to keep my hands on a keyboard and I don't like airplanes (which rules out consulting) so I've applied at a lot of companies to be a ``security engineer''.
I can't tell you how many well-respected companies ask me to write min-heaps, depth-first searches, etc. I don't understand what they are asking me this for...It isn't even close to a realistic representation of what my day-to-day responsibilities would be. It is also an immediate turn-off....
I don't understand how there can be a good hacker that does not, at least on some intuitive level, get such basic data structures or algorithms. I don't mind if someone doesn't know what depth-first search is, but I should be able to explain it quickly and they should be able to come up with at least pseudo code. The relevance of this to software engineering roles just seems too great.
Cramming these questions online does not work. I don't know what Facebook/Google et al are doing but I can spot a candidate who studied interview questions from a mile away. They may bang out a DFS by rote but that's just warmup; they should be able to talk about details, deal with changing requirements, discuss the algorithm/efficiency/design of their solution, be able to talk about underlying data structure primitives, etc.
To be fair the grandparent was talking about a specialized position in security engineering for which the generic coding interviews could be a bad match.
>I don't understand how there can be a good hacker that does not, at least on some intuitive level, get such basic data structures or algorithms.
And I don't understand why someone who spends his time up to the eyes in crypto proofs, exploit code, and research articles should have to cram for an Algorithms 1 exam for each interview.
I've seen these questions used well (had a neat discussion with a start-up CEO in Boston once about reimplementing a toy Twitter in Scala), and really brilliantly (another start-up in Boston once asked me to describe my favorite algorithm and got a short, ad-hoc tutorial in lottery scheduling), and really, really badly (BigCos asking stuff you'd see on an undergrad-level exam from years and years ago).
Strangely enough, I'm praising the two startups that didn't offer me a job (though I'd really like to reapply to that second one), and condemning the BigCos (you know who I mean) that did offer me a job.
You're right it isn't well suited for security people.... But is it well suited for software engineering types? Most code people write is not a search sort insert etc. Most of the details of using these data structures are invisible in oop and the difference is only what class was instantiated.
I'm not saying it isn't important to know, but I think there are better indicators for someone who will perform well on the job
Sure, but these tests are necessary without being sufficient. I'd expect that performance in these tests is predictive up to a certain level but that being really good at them versus just performing decently is not nearly as predictive for actual job performance.
Similar story here. Now not only these "big" companies as Facebook, Google, Microsoft focus mainly on algorithms and data structure during interview, to my surprise some of the early startups ask heavily for whiteboard coding...
It's no surprise these companies rejects many really good hackers (at least from people I know... yes, I admit the small sample size) and accepts these just optimize for algorithm preparations by doing a set of online coding problems.
They're asking you that because there are lots and lots of candidates who look great on paper but don't actually know anything. I have personally met several.
I wouldn't ask a candidate to implement a min-heap (mostly because it's kind of obscure and I'd have to think about it) but a depth (or breadth) first search is something I'd expect any competent candidate to rattle off in a heartbeat, just because it's such a fundamental cs principle that gets used in lots of places and, unlike things like sorts, doesn't really have a good library to fall back on in practice.
Believe me, I can and do implement them, but I always do so backhandedly. ``I am a security engineer, what does this have to do with security''.
In reality, I have not accepted an offer from any companies who ask me these questions because most of the positions are not exactly what I am looking for.
Also, I tend to disagree. Some of the best security guys out there never went to college. It's hard to expect these guys to know algorithms and datastructures even if they are really gifted exploit developers, or the like.
edit: To clarify. What this really shows is that I am not being interviewed by a security person...ie there is no special interview process for my position compared to a regular software engineer.
I really doubt that it's possible to be a top exploit developer and yet be unable to implement BFS/DFS in under fifteen minutes. Some things really are just the absolute basics. If it never goes further, then that's a problem, but there are enough people out there who can't write ten lines of code that you have to weed them out.
My cousin's employer has started using Javascript Under Pressure [1] as the first round of technical interviews - it lightens the mood, and fully half of the people applying for a front-end development position at his company can't finish the first one, which is literally to write a function that returns the argument multiplied by two.
Relaxing with a few beers at home, this was fun. "12 minutes, 19 seconds for all 5 levels. Well done!" Don't care that I'll be blasted for being a slow old man. Come on, you know you want to! Stallman, babbage, lovelace and torvalds await.
That was great fun for non webdev Javascript coder, and I was about 3 mins in and finishing 4th problem.
However, getting one of the tests wrong in 4th problem because of two chinese UTF-8 symbol having more length than "tiny" kind of irked me and reminded me why I do not do webdev.
I suppose this is actually a good kind of test, because real webdevs would actually have learned not to use s.length but use something else.
What is it though? This seems like a Javascript fail more than anything else.
I had to check typeof (apparently those two chinese characters are not a string) to fix this, again this is actually useful, but was not expected given the ease of first 3 problems.
I doubt "the best security guys" end up with the same interview experience. If you are widely known in the industry as an expert or the best at something I think the process to obtaining a job is significantly different from someone applying for jobs.
I would imagine with someone like Bruce Schneier, you'd be paying them for the name and not their output. Google did it with a bunch of legendary computer scientists. Their role is mainly to get top notch junior people to come work there.
Really, that's surprising to me. Would people of Bruce Schneier/Fyodor/et al stature go through the same interview process that everyone else goes through? I'm pretty sure they wouldn't at a big company but you guys do things differently (for the better it seems) so maybe?
For all I know Fyodor is a collective of cheap developers and designers from far-far-away coordinated through an outsourcing agency with a single front figure reading from a teleprompter.
That would still be a notable effort, but I'd like to know who I'm hiring and for which qualifications (cat herding or design and implementation).
Do you also feel that Bruce Schneier could be a collective of cheap developers? That seems like a pretty odd position to take give Fydor's identity is widely known. (http://insecure.org/fyodor/)
"For all I know Fyodor is a collective of cheap developers and designers from far-far-away coordinated through an outsourcing agency with a single front figure reading from a teleprompter."
We apply a "peer" interview model, where candidates before being offered a job have to sit down with two of their future peers. This takes care of the phoneys as their (already successful) peers see through the posing.
Interview Process is: HR filter -> Manager interview -> Grandfather (Manager's Mgr) interview -> Peer meeting
The peer meeting isn't conducted in an interview setting. It's more informal, adapted to the needs of the applicant. It could be a lunch or a dinner and once it was even participating together at a hackathon.
We carefully select peers against "buddy bias" and encourage diversity in the workplace.
Our company is over a period of several years very successful in recruiting and have very little turnover. The biggest drawback could be that we are "too picky" and thus (at times) have problems growing fast enough.
Exactly. A false positive in the interviewing process (hiring a dud) is much more likely than a false negative (turning off a great candidate).
The secondary reason to ask these easy basic dev questions is an attitude check. Someone who gets personally offended at being asked to do something that is easy for them has a risk factor for being a poor teammate.
The most famous example I know of is the guy who implemented a FizzBuzz test and thereby eliminated the vast majority of programmers who otherwise appeared qualified on paper and in person. I don't have the link handy but I think it was covered in codinghorror.com.
I have been very interested in running a similar experiment myself, but alas I am not a hiring manager. As I recall from that example, there were no details of what counted as "qualified" on paper and in person.
We actually took a few things that we wrote in the infancy of the company and turned them into work-sample tests. We use the same test for everyone so that we can grade effectively while still ensuring that it's a good sample of what they'd be working on (because it's something we actually did!).
We have a front-end and back-end test. I'm sure that at some point we'll grow large enough that solutions to our test will be posted online but I'm not going to worry about it right now.
Was going to answer this but then saw the child comment say this:
"but only because a) he was really hungry at the time b) he really went out of his way to build up a lot of contacts with a lot of top-notch talent."
And that was really the essence of what I was going to say. I think after a while anyone who is busy and being paid in the manner that a recruiter (or real estate salesman) is is going to go for the easy route and the low hanging fruit. Especially as they get busier. Because back and forth is time consuming.
It's kind of like a satisficing model. You need to keep the client happy enough to keep sending you projects and no more than that. [1]
Consequently in theory a new and hungry recruiter is really the one that will give you the best results but that assumes they have a file full of candidates and that kind of contradicts being new.
[1] There is truth to that book that stated that real estate salespeople get more when they sell their own house than your house. 3% of $10,000 is not $10,000 and it pays to move on to the next deal in your book.
I've never understood paying 3 recent to sell a house, especially in these times(Internet), and some markets
sell themselfs(Bay Area). Plus, the full commissions usually go to the best salesperson, or Cheerleader.
It's eight courses! Two years for a broker--who most likely
got their brokers license with any four year college degree.
(Yea--most of these guys partied through a bachler's degree
before this year and got their broker's license. They
lobbied Gov. Moonbeam to make it harder for anyone else
to do what they did--The Terminator saw right through the
ploy, and vetoed the bill--ironic?)
Success is moving Realestate. The average homeowner
only realizes they could have got more after they do
their homework, but that never really happens--they go into
denial after the sale. It's done.
I've never seen a industry that needs a fresh, iron clad
Application, but it has to be top notch. A hungry, smart developer could revolutionize the Realeste market
with the right code, and eliminate Realtors to a history
wiki. Plus--I would never need to look at their stupid
smiling faces everywhere. And yes, I know a house is the
biggest thing you will ever own--you need hand holding?
That's all your full commission will get. Smart Realtors
always cover their asses legally if you buy a Lemmon. This
is just my rant on Realtor's--especially full commission
brokers. The above post reminded me of how arcane buying
a house is.
We've had some good luck with a single one, but only because a) he was really hungry at the time b) he really went out of his way to build up a lot of contacts with a lot of top-notch talent. In a lot of ways, he was a lot more like an executive placement consultant, only placing software developers.
The large bodyshops, OTOH, seem like a colossal waste of time to me. I don't trust them, and the candidates they offer have been almost uniformly disappointing.
I've hired a number of engineers through agencies. It's a PITA because our incentives aren't aligned but I've found a few things to help. One is to be firm with recruiters and not to care about your relationship with them. In a place like NYC where there are hundreds of firms constantly trying to work with me I make it very clear what I expect of the recruiters. If they don't give it to me I move on.
Perhaps coincidentally, companies say there is an engineer shortage while at least 80% of the Rails jobs on LinkedIn & Craigslist are posted by recruiters. Recruiters may simply be ruining the employment market, probably as a gold rush.
I have exactly one that I think is good in 21 years in the field. He actually understands his candidates at a moderately deep level and I can get on the phone with him, describe what I'm looking for, answer his questions, and a week later get a handful of resumes with his notes attached after speaking with the candidates.
His "secret" is that process, which also allows him higher than average access to passive job seekers. Let's face it, many (not all, but many) of the "best" candidates already have a sweet gig and aren't pounding the pavement looking and mindlessly applying to every job posting. This recruiter calls them and they take the call, because he's not just matching asses and seats like it was a musical chairs problem.
Candidates like him (he placed me once 17 years ago) because he's not perceived to be a time-waster, and hiring managers like him because I get better candidates through him (albeit at a lower volume and I "can't afford" him for every role).
That's responsive to your first sentence; to your second sentence, I generally agree. I have the luxury of having a strong in-house recruiting team, who are willing to selectively and smartly use outside agencies when it makes sense. As a result, I get to direct the flow of nonsense from outside agencies at my in-house team. ;)
Anecdotally, I know of an experienced and competent engineer who actively sought out a recruiter, hoping to find a job in Silicon Valley (which he did). Some people just can't be bothered with the interview grind, and if you know you're good, why not have a recruiter do a bit of the grunt work for you? But I suppose this could be an edge case, where a legitimately good candidate actually works with a recruiter.
I tried that route to no success. My problem, back when I actually wanted to work in SV, was I found it to be an impenetrable bubble. There seems to be a serious delusion that any engineer worth a damn will move to SV of their own volition, so the only reason to look outside is to try to snatch the top talent from the top schools elsewhere.
We've had success with this approach with outside recruiters. Generally the recruiters aren't skilled enough to coach a candidate on the tasks. But in the case that they are, one of the components of the onsite interview is a code review of the code the candidate wrote. This usually includes me challenging design decisions and then changing up requirements and asking how the code would change. So even if a candidate WERE to be coached by an recruiter, the candidate would have to really understand the code they wrote and why they wrote it.
Before Matasano, if you don't count clients interviewing us.
Who asks programming puzzles? Read interview postmortems. The answer appears to be "everyone". We are probably just talking past each other: asking someone how to sanitize an input or parse an HTML document during a face-to-face interview is a "programming puzzle".
It's hard to imagine that Facebook, Twitter, Dropbox, Google, Amazon, Apple, and all the rest of the companies that hire software developers, who have more or less the same type of interview, have gotten things wrong, yet have been so successful in hiring good people and building good products.
Perhaps the real problem is that those companies have taken all the people who perform well at whiteboard interviews, and what's left are people who struggle.
Still, I wouldn't say the system is flawed because it selects a certain type of people. Clearly those people do well.
It's not at all hard to imagine that the best known company in the industry, the one that spends the most on direct outreach to clients, whose compensation system more or less sets the standard for the industry, a company that is essentially rolling in money, is able to make a conventional recruiting process viable for itself.
Having said that, if you talk to Google people who are close to hiring, especially about the process that connects "interviewers" to "recruiters", I don't think you're going to hear consistently good things about how the system works in practice.
Note the word programming. If a brainteaser puzzle has nothing to do with the job you'll be performing then of course it won't indicate real-world performance as well as one that's related to the opening at hand.
It's easy to imagine that smart people's thought processes are imprisoned by their own egos. It is an easy trap for a smart person to fall into.
Algorithmic testing has real practical implication if the role requires it, which a subset of the engineers at the aforementioned companies will use.
The other practical implication is standardization of the interview process, rooted around an academic background in computer science. It's easy to test whether someone knows a "fundamental" (whether it's actually fundamental to the job is another question) cs data structure or algorithm.
The idea is, interview for square pegs, since it is easier to measure the quality of that particular shape at scale. If there is a high-quality peg that happens not to be a square, it is a loss that the system is willing to accept, provided that a large enough % of the good candidates are squares.
Though I believe algorithmic knowledge is a lot more practical than people give it credit for. I'm not talking about crazy graph searches, or implementing A* in ASM.
Are you going to be efficiently searching strings, or reordering arrays, full time? Probably not, but you will likely come across a time where you will need to think about the consequences of your design, even in a simple crud web-app. And that stuff is important.
> It's hard to imagine that Facebook, Twitter, Dropbox, Google, Amazon, Apple, and all the rest of the companies that hire software developers, who have more or less the same type of interview, have gotten things wrong, yet have been so successful in hiring good people and building good products.
It could be also cargo cult.
If you are a startup, how you will add a technical founder or a first technical hire? Just by his/her ability to write O(log n) searchs in a whiteboard or you will dig deeper and make sure is the perfect match?
The point you are grazing is that this approach results in many false negatives, and few false positives. This is workable for companies that are consistently able to attract large numbers of candidates, such as the ones you listed. (And yes, there are false positives. I personally witnessed someone at a large company who was very adept at whiteboard coding, and a very lazy employee.)
You've said it more eloquently than I can, but I want to bring up that:
"results in many false negatives..." is not some universal truth.
Is there evidence that shows current software interviews turn down way too many great candidates?
There should exist a large enough group of developers who have been rejected a number of times[0], who have gone on to be very successful[1] in their careers. Does this data exist?
I agree that the current process isn't perfect, and it does produce some false negatives and some false positives. The amount which, has yet to deter me from beliving that the system works, as intended. Certainly there are some fringe candidates, who are turned away, but I don't think it's as onerous as people are making it out to be.
Also, most companies didn't start out with unlimited piles of cash, nor could they have their pick of employees. They had to work at it, and I don't believe the culture of their hiring has changed significantly.
For the record, I struggle with traditional coding puzzle interviews. But I also know coding on the whiteboard is a skill, which can be practiced, and with time, improved upon, such that if you are a really good developer, but struggle with passing interviews, you can deal with that problem by becoming better at interviewing.
Or you know, create something awesome, and never have to worry about interviewing again.
[0] Failing one or two interviews isn't really indicative of anything. So this group would require consistently failing multiple standard coding interviews.
[1] How to measure success? I say gone to be a major contributor to the success of a company, or built their own company that is considered "successful."
We turn down candidates all the time. No doubt that many of those go on to find success elsewhere, especially the ones that we turn down for fit (cultural or candidate expectations).
It's an open question whether a negative for fit is a false negative or not. If someone wants to be a foo and the need that I have is for a bar, it's a true negative for us, but when that persons goes and finds success as a foo somewhere else, I'm not sure where to put them your data set.
Even for the false negative, how would I possibly know what career path they took after that? I certainly hope it turned out well for all of them, but I have no practical way, not to mention no incentive, to find out.
I'd add to this that either way, whether interviews work or not, the problem is more complex than that: is the potential hire at the right point in his or her life to work for you? Are current open positions a good fit? Will the team get along? This may speak more about less mature candidates, or for smaller companies with more specific skill requirements, but my ultimate point is that rejection shouldn't be forever but few companies take that route...
I'm asking for evidence that shows candidates who have routinely fail traditional software interviews, have gone on to be above_average -> exceptional in their careers.
My hypothesis is that if traditional software interviews have systemic and endemic flaws--that is interviews produce there are a lot of false negatives, there would exist a large group of people who have failed continuously, but have yet gone on to be good-to-great elsewhere.
Getting a no hire from one or two companies, would not classify a person as a "false negative", it could be (as others have mentioned) an issue with fit.
I've had to do a bit of sanitizing input and parsing HTML documents "for real" at my job. It's not a primary duty, of course, but it comes up now and then. It seems like a reasonable test for "can they actually write some code to a well-defined spec," although probably not a great test for "are they good at working on a team and architecting bigger projects."
I was about to simply repost this sentence as its the HEAVY substantial bit of the post.
What does it mean? Throw engineering problems your CURRENT team has solved in the past at new candidates. I have seen only ONE startup ( even among the nastiest of hard problem seekers ) GET how substantial this is. So many of these companies are too busy to think about smart sourcing, at their own peril.
Test new engineers off past solved problems. End of story.
I wonder if some companies are accidentally scaring away potential candidates even earlier in the process. I've personally shied away from many job postings that are asking for "rockstars" or "only the best", since they don't generally seem to be interested in "intelligent problem-solvers who don't know every intimate detail of the latest JavaScript framework or nosql database, but could learn quickly if needed".
we interview people whose only prior work experience is
"Line of Business .NET Developer", and they end up
showing us how to write exploits
I am surprised you sound surprised. Do you label people by the kind of technologies or jobs they held? I mean, you argue against it, which I think is a positive argument, but somehow it seems that the labels people place on technologies and business domains are somehow rubbing off on the people who were using them. Feels myopic to me.
Zero prior cryptography experience. Zero work history in software security. Hired through a resume-blind work-sample process. Goes on to successfully implement a crypto attack that fewer than 10 people in the world have probably ever implemented before, one that requires debugging a lattice reduction step that takes 6 hours to run before you get to the part where you use a Fourier transform to postprocess the result.
Or: Zero prior software security experience. Zero prior Rails experience. Zero prior Ruby experience. Hired through a resume-blind work-sample process. Looks at Rails for the first time, 30 minutes later reports a vulnerability that results in a CVE and a Rails patch. Repeats. Now runs Rails internal review board.
I have other examples. Worth knowing: we aren't Rails neophytes (for instance, we're one of the firms that reported the YAML code execution bug) or for that matter crypto neophytes.
It's not about what technologies you use; I don't so much care whether someone writes .NET code. It's the "absolutely no prior work experience doing this and no flashy resume to get them in the door" that stick out to me.
Some of the best software engineers are .NET and Java software developers. These are the guys running massive systems, but no one ever hears about because its boring government/corporate work. But that work is infact the most challenging. Imagine the amount of transactions a bank has to handle every day, without fail!
It's just that Hacker News biased to a certain section of society.
At my last company, we did a traditional interview plus a pair programming interview. Eventually, we moved the pairing interview up in sequence, because it gave us far more information than the traditional stuff. It let us see what they could really do, and told us a lot about how they worked as part of a team. Mere questions don't get at that.
We also paired most of the time in the course of our work, which gave us a lot more room to take hiring risks. If somebody was bad, the amount of damage they could do was limited. If somebody was just uneven in skill profile, pairing let us take advantage of their strong points while mentoring them in their weak points.
I'd love to hear what else people using a Moneyball approach are doing to reduce risk and increase yield after hiring.
> startups are also probably rejecting a lot of engineering candidates that would perform as well or better than anyone on their existing team, because tech industry hiring processes are folkloric and irrational.
That sounds right to me, but I'm wondering if there's any evidence to support the claim.
To me, the smoking gun is the fact that there is near-universal agreement that we're in a talent crunch, but at the same time successful startups are demanding that candidates accept temp contracting roles to mitigate the risks of bad decisions.
Couldn't that be because startups have to "lower their standard" for engineering interviews, since there's a shortage of people who will perform up to their standard in an interview? In other words, if there is a shortage of experienced candidates who can nail the interview, startups might be willing to go for people with less experience who they believe will be able to learn quickly and end up being valuable team members.
Of course, this assumes that a trial (say, 30 days) can give a lot more information about the long-term potential of the candidate than a day-long interview, which feels like a reasonable assumption to me.
For some companies the standards are not entirely meaningful. Must have 3.9 GPA from an Ivy League school, know [obscure library] in detail, have experience in Scala and Lua and OCaml and Julia, as well as a deep passion for cricket. Then, once this person is found, they put them to work building a Rails CRUD app... There is some hyperbole here, but not too much.
I think I lost one job because I used emacs and they used vi.
I'm not wholly disappointed, because 1) I finally got around to using vi, spending a solid week using it and only it, as my homework[1] for the company, and 2) you don't want to work someone that only hires clones of themselves.
[1] They didn't assign it to me, but I'm always looking for something interesting to do, and since I was serious about wanting to work for them I did it to ease my eventual on-boarding.
Sounds like one of those 'boutique' consulting agencies that likes to build 100% mandatory pairing into their costs when billing clients for their sake.
Are you sure you didn't get the job because you used emacs? I can't see why that's a reason for not hiring you. As markrages says, if this is true, it's some inconceivable degree of micromanagement.
The question as I read it is, is there evidence that conventional hiring practices are ineffective?
I didn't provide evidence, but did point out what I see as a smoking gun, which is the trend of temp-to-perm hiring.
Temp-to-perm is not conventional hiring; if you do it, you are not hiring the way AmaGooBookSoft hires. That you would do it at all suggests that the conventional hiring process isn't effective.
At the same time, temp-to-perm makes it harder to find people; it (almost) has to, since asking a candidate to accept a monthlong (or even weeklong) contract is onerous. People forget that candidates often interview at multiple companies; a week off work seems reasonable when you don't consider that it's a process that might repeat 2, 3, or 4 times for a given candidate.
> The question as I read it is, is there evidence that conventional hiring practices are ineffective?
There is clearly evidence that the entire hiring process leaves much to be desired. Temp-to-perm is obviously not ideal. I'm just wondering whether the problem is that companies are relying on the temp-to-perm pattern in lieu of better available alternatives, or if the temp-to-perm pattern is simply the best option because there is genuinely a short supply of experienced, easily recognizable talent.
In the last 10 years, I've never interviewed anywhere on the east coast that wasn't 3-month contract-to-hire. Then again, that was all through recruiters. I don't work as an employee anymore, and I don't deal with recruiters, so I'm not sure what it's like now. However, there doesn't seem to have been any sea-changes in the market around here, so I suspect everyone is still doing it.
Really? I'm in the Boston market, and we don't use contract to hire as a strategy, and to my knowledge, none of our primary direct competitors for engineering talent do either.
(We will occasionally hire an ex-contractor, but that's the exception and they were genuinely a contactor first. No one comes through the front do applying for a full-time position and gets offered a contract-to-hire.)
Well, to be fair, I hadn't ever applied for anything in Boston. Also, I acknowledge that not all places may do this, just that I've never encountered one that didn't. Which could say more about the quality of the recruiters I was using than anything else.
Basically, in a 300 mile radius around Washington D.C. there is apparently a shit ton of little, bullshit consulting agencies. There are at least two in even the small towns. Bullshit consulting agencies are the type I'd expect to do contract-for-hire.
It's also, for no reason I understand, the only types of places that would ever look at my resume. Perhaps that is because the alternatives to the consultoware places are health insurance companies (which I patently refused to apply to) and financial services companies (also not terribly appealing). Those sorts of places always looked like they were exactly the same sort of poorly managed shit-show as the consultoware places, just that the client was in-house. Not much consumer-facing software being made out here, I guess.
Mitigating risk by contract-to-hire might be reasonable in some European countries where firing is rather complicated. But, what's the problem in US? I thought it was extremely easy to fire people there.
You are qualifying this with the word "successful", but is it really the case that high-quality candidates are putting up with temp contracting roles in lieu of an immediate "permanent" position? That seems like prima facie evidence that there is not, in fact, a shortage of high-quality candidates.
The point isn't that bad hires have become less tolerable; it's that conventional interview practices are so unreliable that startups have taken to doing things that actually make it harder to attract candidates in order to mitigate their risks.
Excellent information. You gave some thought to the process and stopped going for the legacy solution to the problem.
Would like to point out to anyone that you can actually do a version of this even when the company isn't doing the last 1/3 and being the one that is creative. That is you find a way to separate yourself from the crowd in a way that removes the resume, interview and credentials from the evaluation process.
My example of this is to go for the job that isn't being advertised or that the company isn't even hiring for so you aren't competing with the other person with a better resume.
I did this when after I sold my first company I landed a sales job at a tech company never having sold that type of product and really having very little experience (in that) at all. They weren't hiring so I wasn't being compared to anyone else just to whether I could do what I proposed to them. For that matter anytime I sold a product (for something for two different new companies I founded) at the start by cold calling I was doing a version of the same thing. They just evaluated whether they needed the product/service not whether I had something better than the other people who visited.
I guess the bottom line is whether you are looking or "looking for" you need to do outreach which is really just selling in a creative fashion.
From my brush with Matasano recruiting, I have one main thought.
When I got the first phone screen, I mentioned that your hiring page said to expect about a month-long hiring process. The response was that that was for someone with experience in the field. OK.
Since I had no relevant knowledge/experience, you (I'll use "you" to refer to Matasano) sent me WAHH, and said to read it, and contact you when I thought I was ready. I wrote back, asking how I'd know when I was ready (remember: no knowledge or experience). No response, ever.
I hope the prerequisite to interviewing at "entry level" in Matasano isn't full mastery of everything covered in WAHH. The last of my textbooks that I've looked at and thought "I know everything in here" was my middle-school algebra text (this one: http://www.amazon.com/Algebra-Structure-Method-Book-1/dp/039... ). And there could easily be something mentioned in there that I don't know; I made the determination by looking through the table of contents. Every one of my later textbooks mentions something I don't know in the table of contents.
I don't think I've just failed to accomplish anything at all since taking middle school algebra, and even restricting discussion to school math classes I have some accomplishments beyond that point. So the impression I got was of a ridiculously unachievable standard for interviewing, that maybe I'd be ready to interview after several years of work in the field. Or maybe not.
1. you didn't tell them you were ready. instead, you asked irrelevant questions. how are they supposed to tell you when to feel ready?
2. you sat around and waited for them to contact you. they have other, better shit to be doing, i assure you of this.
3. being aggressive and having initiative and believing in yourself is a big part of getting hired. if you don't have those things, you probably won't get hired in a competitive environment.
That's hardly an irrelevant question; it's impossible to know that you're ready without knowing what being ready entails. Are you trying to select for people who are confident they can already do anything no matter what it is?
Well, the definition of "ready" you offer seems to be something like "desirous of concluding the interview process quickly". I want to know about the useful sense of "ready", "likely to conclude the interview process successfully". Quickly getting a rejection is of very little benefit. Obviously, when I first contacted them I wasn't hoping to prolong the interviews as long as possible; they told me that I wasn't ready to continue at that time. But they also told me that I should be the judge, based on no criteria, of when I was "ready" to continue.
I'm not sure why you think what I said means "desirous of concluding the interview process quickly", because I didn't use most of those words and you appear to have pulled them from thin air; frankly, that's weird.
They gave you plenty of criteria; they gave you a book, and the understanding that they wanted you to be able to talk intelligently about the material that the book covers. If you're so incapable of self-introspection that you can't accurately judge how well you understand material without external validation, then you should probably work on developing some self-awareness before getting upset that a company doesn't respond to arbitrary requests for meaningless information.
> I'm not sure why you think what I said means "desirous of concluding the interview process quickly", because I didn't use most of those words and you appear to have pulled them from thin air; frankly, that's weird.
I rephrased you because, if I just quote you, there's no indication that I understand what you mean by the words. You seem to indicate that I in fact didn't. I'm going to call that a success for rephrasing. If I get you wrong, I hope that you'll tell me what you actually meant, which you didn't do here.
Let me try saying things another way. If I ask, "what does 'ready' mean?" and you reply "it means 'ready to move forward in the process'" (my emphasis), you've defined "ready" by reference to itself, which is obviously incapable of being helpful. So I did my best to determine what you might have meant. The entirety of my complaint is that, lacking domain knowledge, and faced with a job ad saying "no knowledge is necessary to apply", I was told "you're not ready to apply, come back when that's no longer the case" and then, upon asking, was not given any guidance as to how to determine whether I was or wasn't ready. So, in answering the question "am I ready to move forward in the process?", all I can do is devolve it into the question "do I want this process to go forward regardless of the outcome (which I can't predict), or would I rather remain paused?". That's purely a question of, in the words I used before, how quickly I want to conclude the process. I can't refer to any other variables or goals, because I can't evaluate those.
> If you're so incapable of self-introspection that you can't accurately judge how well you understand material without external validation [...]
Nobody can do that. Try evaluating yourself without external validation sometime. If you score e.g. a "good", ask yourself "good in terms of what?" External validation is the only thing giving any meaning at all to evaluations.
I didn't define "ready" in terms of itself (unless you're unclear on the literal definition of the word "ready", in which case you'd be better served looking in a dictionary than applying for jobs); I gave an expanded context for the term.
This is not a hard concept here; I would rate it as slightly more complicated than walking and talking at the same time, and slightly less complicated than walking and texting at the same time. So, uh, you probably shouldn't walk and text because you'll hit a tree or fall into a pit. Just some free advice there.
If you're capable of forming memories, you're capable of self-evaluation without external validation, you goofball. "Good in terms of what"? Most people choose "how good [I was] before [I] started studying" and it seems to work pretty okay for them.
The tendency of people to troll by acting like a complete moron baffles me. I can't help but think "Congratulations, you've successfully managed to be a moron".
"the crypto challenges, which are currently by far our most successful recruiting vehicle (followed by Stripe's CTF #2) are just a series of emails we send; they're essentially a blog post that we weaponized instead of wasting on a blog."
I kind of hoped you are at least looking on our answers or something :)
What surprises me is that plenty of engineers have remarked how a basic knowledge of algorithms and data structures has been the key to getting hired, rather than the ability to write good code or solve problems that are similar to the ones a candidate would actually have to solve. Those are not tested in interviews.
Given that background, given that people are trying to improve the recruiting of engineers, given the penalty applied to people who recruit for the standard package, given the rewards for those who recruit accurately to their needs, .... why does the "irrationality" persist?
I don't know if Matasano is a nice place to work at (well, friends there have been happy, so I guess I do have some information), but it sounds like a wonderful place to interview for. Enjoyable instead of actively painful and stress-inducing.
If someone doesn't make the cut, what does Matasano say? Do you say what didn't work out, or is it the industry standard and horribly antiseptic "we have decided not to move forward at this time"? I'd understand the latter, but if there's a place breaking that mold, I think it might be you guys.
That sounds fantastic. The few times I didn't get an offer from an interview (early in my career), the "we can't tell you more in case you sue us" answers to why I didn't get the job were as crushing as the actual rejection. I always felt terrible having to give that answer when I worked for a big company, particularly for the marginal candidates. The terrible candidates aren't going to be able to improve enough to game the system, so there's no real risk to giving them the information as well.
we interview people whose only prior work experience is "Line of Business .NET Developer"
I'm assuming you are not interviewing every or even most.NET developers and trying your luck to find the one who can write that great exploit. So, from all the candidates with resumes that would be considered subpar before the process overhaul, how do you determine which ones have potential to write that great exploit?
That's what a work-sample test is. Candidates here do a series of challenges that are quantifiable (scored), and calibrated to match the day-to-day of working here. We don't ever wonder whether a .NET developer is capable of reverse-engineering a protocol and finding security bugs in it, because we invented a series of protocols and a series of security bugs, and we make candidates try to do that.
Ah, I thought the test was given during the in-person interview.
We recently started putting sales candidates on the phone to cold call. The most critical thing we measure is how many minutes they spend on the phone. It's been a pretty strong signal of how they would perform if we were to hire them.
That's a BIT of an overstatement depending upon the particulars. Outside sales for complex products can require a quarter or two ramp-up so you want to be somewhat selective. If you're hiring someone for that sort of position though they probably have some sort of track record.
For an inside sales position, you're not all that far off though.
As I've seen it put in another discussion, "sales managers don't have any trouble firing people."
This might be obvious to those with more sales experience, but can you explain what exactly you're looking for in regards to "how many minutes they spend on the phone"?
In other words, is the success of the sales people about spending more time on the phone in total? Or is it about spending more or less time per call?
This might be obvious to those with more sales experience, but can you explain what exactly you're looking for in regards to "how many minutes they spend on the phone"?
Our sales process is based on our reps cold calling businesses. We learned after a couple of mishirings that the most difficult part of the job is being able to manage emotion and taking rejection. For example, as a rep it is completely normal to be rejected in some manner 50 times a day. So if you get discouraged or upset after your third rejection, it is unlikely that you would have the motivation or drive to make more calls and therefore, you're likely not the right fit. All of this is usually summed up in the metric time spent talking across all calls.
While ultimately the time on the phone translates into revenue, we like to emphasize factors that is in our control. We can't control whether someone ultimately signs up or not but we do control how much break we take in between calls.
Our public challenges are part of outreach, not qualification. We are very worried about drawing conclusions from them in our hiring process, because those challenges are public and people often work together on them.
Don't stop, thanks to the two public programs you've run so far I've:
* Got into Ruby and Go (trying to get a feel for what language felt most comfortable for bit manip.)
* Got into assembly (for fun so far)
* Got a good appreciation for bit-level operations
* A bazillion more little facts and insights that help in daily work life
I bet if you polled how it's helped other people there'd be all kinds of great examples. For work, I'd say the best impact has been a personal drive to pentest our own product, resulting in a lot of bugs found and fixed. That included managing to root our servers via a product flaw, which was scary and amazingly fun.
So yeah, thumbs up, don't stop now (please).
As for the above catering to newcomers, sure but it ramps up incredibly and pushes some boundaries if you've never touched that stuff before.
The public challenges seem to embrace newcomers. Assuming someone does well on their own - should that person expect to do well in the hiring process? Or is there a significant difference in skill set / level between the public an private tests?
> we over-communicate and sell our roles before we ever get selective with candidates
Sorry, I'm a bit confused about this sentence. The roles your selling are the roles you're hiring for? I guess even if that's true I don't understand what you mean by selling roles before getting selective. Would love some clarification!
The typical candidate at Matasano spends ~45 minutes talking to me or Jeremiah (the two of us are very senior and currently co-manage recruiting) before they ever get teched out. In that phone call, we try to answer every question the candidate might have about the role, and do our best on the phone 1:1 to sell our firm to the candidate.
What kind of experience does the average applicant have? As a 27 year old dev the process you've described sounds as terrifying as it does exciting.
For instance on the challenges I liked that you put (largely paraphrased here) 'If you breeze through these we might want to talk to you.'. Having ploughed/struggledto set 5 now it's almost daunting to think people DO breeze through that. Granted, the stats you've published so far indicate those people are far and few between. It kind of puts you in your place, but the exciting part comes from knowing there's so damn much to learn still.
Software security. We take products that 4-8 person dev teams spend 9-18 months building, and, in 2-3 weeks with 2-3 people, essentially compete with those teams to find clever vulnerabilities they left in their code. Particularly on non-web projects, this often involves reverse-engineering from binary and quickly tooling up for bizarro undocumented proprietary protocols and APIs. If you're a startup, you hire for Rails, or low-level C database stuff, or iOS, or distributed systems. For us, switch those or's to and's.
I know the company and I know about tptacek from HN, even a friend worked there a few years ago. I just wanted to understand if they were in some new specialized niche.
Sure. I'm just explaining how someone could conclude that hiring for a software security team is actually harder than hiring for a typical startup; the skills requirements are close to a superset.
Could it be that the specialization you are working with ends up actually be a benefit with regards to finding new hires?
From my perspective, I'm probably not going to go out of my way to apply to a typical startup unless there is some reason to believe the renumeration is remarkable. However, I might be interested in applying to a company like yours as a challenge to myself.
That happens. For example, to be a low level 3d engine programmer is a quite specific skill, yet because of the nature of the games industry, such people don't get paid as much as your average full stack web developer.
If a candidate doesn't have "several hours" to engage in a process intended to lead to both sides investing thousands of hours over the coming several years, they're welcome to apply elsewhere.
For every time I've interviewed, I've done several hours of homework on the company, understanding their competitive position, reading their financials (if a public company), founder bios (if a startup), bios of the people I'll be meeting with, etc.
I'm not doing this out of desperation; I'm doing it because I'm picking the company just as much as the company is picking me. Conversely, I'm willing to "jump through hoops" provided I believe that the company believes that hoop is helpful in selecting strong employees, because ultimately, I want to work at a company with strong colleagues and the hoop is a signal that the company wants the same thing.
Fair disclaimer: I haven't applied anywhere in the last <long time> and in my 20s, I enjoyed the take-home programming challenges. To this day, I recall enjoying Acclaim (game company)'s take home test that was rudimentary AI for a turn-based very simple game. I crushed it, flew out to interview, and got an absolutely laughably low offer (par for the industry), but I still think fondly of "doing that homework".
I've also been asked head-scratchers before. I had a recruiter ask my GPA and SAT scores for a role in my late 20s. Wait, WTF did you just ask me?! I answered, and that firm (D. E. Shaw & Co.) was the most-talent dense firm over 5 employees that I've ever experienced. If I'd have indignantly replied that my SAT scores were irrelevant to the position and none of their damn business (both are arguably true), I'd have missed out on one of the best work experiences of my life (and two handfuls of those colleagues are still working with me today, 3 firms and 17 years later).
Anyway, sorry for the long response.
Shorter version:
You're picking the company. Do your homework.
They're picking you. Do their (reasonable) homework if you believe they're assigning it for the purpose of giving you great future colleagues.
All reasonable points that I agree with. It presumes, though, that the companies you are interested in turn out to be as respectful of candidates as you are of selecting them and complying with their hoops. This thread is full of anecdotes about (predominantly SV) companies who disrespect candidates by misrepresenting their hiring process, setting up meaningless hoops, rejecting candidates after hours or days of work for nebulous "culture fit" reasons, or simply going silent in the middle of the process. If you are a candidate who has invested multiple hours multiple times for disrespectful companies like these, you would probably develop the attitude fsk posted about. Its a bad place to get into, and unfair to both the candidate and the companies who do respect their candidates. Unfortunately, aside from the rumor mill I don't know how to tell which companies are respectful and which aren't until after investing multiple hours into the process.
Ah yes. All fair points as well. This is probably another reason why network hiring is so effective. I'd never pull someone from my network into a crappy experience.
Unfortunately, I don't have any useful contacts, so I'm blindly sending out resumes. There's no point carefully researching the company first, because 90% of them never respond, and many companies don't mention their name in the ad. (Some are posted by headhunters, some anonymously by a company.) Even when I research companies and apply directly on their website, it goes nowhere. Even if I did research them, it's hard to evaluate someone until you meet them in person or talk with them over the phone.
I'm currently employed, so I'm only spending 1-3 hours per week on my search.
I have enough experience, education, and honors in school that you shouldn't waste my time with pointless homework. I've never seen a job programming test that was a more accurate measure of ability than the homework and tests I took in school.
Look at it from the candidate's view. I send out a bunch of resumes. About 5-8 of them want me to take a technical test before they call me or before I meet them. 1-2 of them are willing to proceed directly to an interview without insulting me and wasting my time first. So, I focus my energy on the people who take me seriously and treat me like a professional.
It's physically impossible for me to do a technical test for everyone who demands it. I don't have the time.
If Google or Yahoo asked me for a several hour pre-interview screening test, I'd probably do it. If your no-name startup is wasting my time before an interview, I'll just look elsewhere.
Also, in my experience, a pre-interview screening test is anti-correlated with good work environments. Of course, they'll say I'm "not a team player" for refusing the test.
After I did a bunch of pre-interview screening tests, and only rarely progressed to the interview stage after doing the test, now I don't bother. I know my solution is correct, but still not even an interview after I do the test. For the handful that did interview me, I wasn't impressed by them. Why am I wasting my time with people who don't respect me? Why should I waste a couple of hours for the privilege of maybe getting a chance to talk with the hiring manager, who's already pre-qualified himself as a twit by making me take his stupid test?
I'm even reluctant for post-interview programming tests. Once, someone asked me to do an assignment after the interview, and implied I'd get an offer if I passed. I did it, I know it was a good solution, but no offer. There's even people who try to put free consulting in the test, like the guy who asked me to write a program that connected to Interactive Brokers and executed VWAP trades.
I'm even reluctant for on-site tests now. Just a couple weeks ago, someone asked me to do a test, said I could use whatever language I wanted, I picked C/C++, and then they laughed at me for using pointers. Why bother?
If you know your stuff, you should be able to evaluate someone by talking with them for 15-30 minutes. If you aren't willing to spend 15-30 minutes evaluating me, based on my experience and education, then I'm not wasting a couple hours on your stupid pre-interview test.
Yes, I may be missing out on good jobs, but they are missing out on a good candidate.
Given the offers I've heard people getting from early stage startups (engineer 2-5), I don't really get why someone would join them. Below market rate salary? 0.1% of a company that's going to exit at $80M with a 10% chance and $0 with a 90% chance? That comes out to $80k over four years of work, before taxes, in the typical successful case, which is itself atypical. And for what amounts to a relatively small bonus, I'd be expected to work 50-70 hour weeks? Sign me up!
Thanks for the correction, but I did not forget it. I explicitly called out that the $80k total was only in the successful case, which is atypical, and had not been divided by time yet. That could have been worded better, I admit, but you and I are in violent agreement.
"37 of the 511 companies that have gone through the Y Combinator program over the past 5 years have either sold for, or are now worth, more than $40 million."
This is the most insightful thing I've read about the engineer crunch in a while. The market needs to realize that good engineers have lots of options and that 0.1% is just not a meaningful amount. I'd like to see 5-8% for key engineering hires, even as companies approach Series A.
Does the founder really want to get greedy and keep that extra few percent when so much depends upon solid engineering execution? Also, don't forget that 4 year vesting with a 1 year cliff is standard, so it's not as if the worth of a meaningful equity offer isn't fully obvious before the shares are "spent" on a key hire (also, before vesting, the risk is totally borne by the employee).
I think the ideal situation for engineers would be to earn a solid equity offer and then have a secondary market to use to trade some of it (once it's vested) for fractional ISOs of other promising startups.
> Does the founder really want to get greedy and keep that extra few percent when so much depends upon solid engineering execution?
Yes, some of them do. I got forced out of a startup here in London - I was the _only_ full time engineer in the IT dept. (basically was acting CTO) and one part time guy in Russia for some period of time. The company had two sales guys as well, not sure of their compensation but they were making more than me... We all quit within a period of two months due to A) the CEO flat out lying to a customer about the nature of the data they were being sold, in order to secure the sale - the customer later made threats to sue after their patience had been exhausted due to one founder trying for a month to gaslight their board about the technical nature of the data B) lies about the "cash flow problem" which I was told was preventing another person to be hired to help me (the founders were skimming profit before paying everyone, months late) The CEO's wife, who liked to play lawyer, then dragged out paying us for what they owed, trying to arbitrarily reinterpret the language of the contracts, claiming utter nonsense as logic and being over the top abusive in contract negotiations. It was all too much for everyone.
Later I found out a $5 mil offer had been made to buy the company from a 3rd party - not much but enough to show the company was certainly going to be viable. So it made perfect economic sense to these sociopaths to drive out everyone who might have some moral claim to profiting from the company's success (i.e. promises were made early about "equity"). The founders deemed I was completely unnecessary at this point due to having built something that could be maintained well enough by cheap labor from India and eLance - to heck with looking into the future and seeing how an experienced engineer might open up new markets, etc. This company lost every bit of technical knowledge they had when I left.
But that's sociopaths for you and how business is done anymore. I'm sure SF is full of amateur sociopaths these days.
Wait, I thought we all agreed that there isn't an engineering crunch?
I am not sure what immigration has to do with this, we make plenty of STEM graduates each year, and we'd make more if the professions didn't look like they were under attack by every employer and politician. The smart kids you want to hire are smart enough to go into more protected professions, if they knew their jobs wouldn't be shipped over seas or their market flooded with foreign competition, then maybe we'd be able to attract them and keep them.
I worry that focusing on equity will just exacerbate the problem, because I think that a lot of people are becoming wise to the equity lottery and just don't see a difference between 0.1% and 5% of nothing. The problem will most certainly be solved by $$, but no doubt it is tough pill to swallow for a business to pay 150k now what was 100k a few years ago...
Keep in mind I am a software developer and self interested.
One person can only play that particular lottery maybe half a dozen times (more likely 2-3). That isn't nearly enough for the law of averages to even things out, so if you don't have a lot of room for risk, the rational thing is to value the equity at 0 (in terms of long-term planning) and be pleasantly surprised if things turn out better than that.
The other thing that is interesting to me is the ludicrously highbar, and "weed out" interview techniques that some these companies have for recruiting engineers.
They're looking for someone to work on a rails app but they won't hire them unless they have demonstrated Linus-Torvalds like ability and knowledge. But the question is, why would someone with that kind of skill level want to work for you?
What if you were able to grab smart engineers on their way to becoming engineering stars? Why not aim for getting a solid lead/architect and adding midlevel guys who you know are going to turn into superstars? Why not develop talent instead of competing all the way at the top of the market for the most expensive ones? Why not figure out an interview technique that can let you identify exactly these kinds of people?
Its all about being resourceful and nimble enough to adjust, after all, isn't that what a startup is all about?
I'm not sure if that qualifies as "regret", or if it's just greed, but it's one very public example of a company deciding they've given too many options to early employees.
>There are great hackers all over the country, and many of them can be talked into moving to the valley.
For all this "we work remote" stuff that is flying around this seems to be a direct contradiction. Is moving to the valley really necessary? I can postulate coming for a face-to-face interview, but I would never want to move to California.
It's all about communication bandwidth. How well can I communicate with you face-to-face, via voice, or via text? Standard numbers are that 7% of the communication is in the words, 38% is in the tone of voice, and 55% is in the body language. If you're not face-to-face, your communication bandwidth drops dramatically.
But if you're both online at the same time, and you have videoconferencing or some equivalent, you can talk "face-to-face" without being on the same continent. I don't know how efficient that is compared to being in the same room, but I suspect it's somewhat less (you have to activate the app before you can have the conversation, and you never have a useful but accidental conversation because you ran into each other in the lunchroom).
>Standard numbers are that 7% of the communication is in the words, 38% is in the tone of voice, and 55% is in the body language.
Source? I'm pretty skeptical of these kinds of numbers. If you say 100 bits worth of words face-to-face, what is exactly the content of the remaining 1428 bits?
The claim (ascribed to Albert Mehrabian) is much more limited than that. Those are the alleged percentage influences on how much we like a person on the basis of a conversation with them. See, e.g., http://www.kaaj.com/psych/smorder.html (which I think is Mehrabian's own site) which says "Total Liking = 7% Verbal Liking + 38% Vocal Liking + 55% Facial Liking" and adds: "Unless a communicator is talking about their feelings or attitudes, these equations are not applicable".
I'm frankly doubtful even about that much, but Mehrabian certainly never claimed that any such equation holds for more "contentful" communication.
I work with a 90% remote, 10% local team, and due to the nature of engineering work, I find that the daily standup and and hour of shared development time while on a Hangout shares as much information as I share locally. This matches up with the amount (and quality) of interaction I had with a 100% local team as well.
You don't need face-to-face for everything. A lot of communications would be better off being rerouted to asynchronous, low-fidelity mediums like chat. When you try to jam everything into face-to-face + email, you create a lot of flow-destroying side effects, like meeting hell and frequent "do you have a minute?" drivebys.
For remote to work, the company should be remote native or majority remote. If 95% of the people and conversations are onsite, the remote team is going to end up being second class citizens.
The Bay Area tech community has a widely-held dogmatic bias against remote teams due to a widespread belief that remote teams make it difficult to communicate and create a company culture.
Outside of the Bay Area remote work is more acceptable for startups and small companies, and most of the advocates for remote teams are in cities like Chicago and New York.
The Bay Area tech community has a widely-held dogmatic bias against remote teams due to a widespread belief that remote teams make it difficult to communicate and create a company culture.
To be sure, this could also be seen as an acknowledgement of their own weaknesses. In modern business, shouldn't a contingency to reduce burn rate by hiring from lower cost-of-living areas be a valid option? If so, then why shouldn't management be able to communicate well enough to execute on that? Are they so vain to think that not only should the company be viable and successful, but that they should succeed at the highest cost possible?
Agreed, I understand the reasoning for basing so many start ups on the west coast, but not everyone wants to live there. It would be nice to have some more focus on the east coast...
What's up with the cliff anyway? You're already asking me to take a much higher level of risk and a much lower level of liquidity than I'd like in my compensation, by giving me stock options. In addition to that you want me to take on 100% of the risk of our working arrangement not working out, and in fact you insist on giving yourself a strong incentive to fire me before the first year is out? It seems ridiculously exploitative.
I'm not sure of the details, but I think it's rooted in tax law -- that the options are classified differently if they're exercised within a year of their creation.
This implies a somewhat one-way relationship between companies and their engineers: engineers give their time and talents, and in return companies give their money and equity. Under this system, why not be selective about who you hire? If you want great work, you need to hire a great engineer.
In actuality, the truth is great people aren't found, they're made. The role of a good leader isn't to squeeze great work out of his employees, but rather to develop within them the capability to do great work. Applied to hiring, this means having an understanding of the support and growth capabilities within your organization, and finding candidates who have the most potential to gain from it, rather than hiring those who are already well-developed. Applied to hiring rockstars, this makes them even more valuable: not only would they be producing outstanding work on their own, they would actually be improving the quality of the work their peers produce.
There isn't so much a shortage of engineers as a shortage of people willing to relocate to a stupidly expensive area and gamble what they have in the process. From the outside, but as a reasonably regular visitor, the Bay Area has lost the plot completely.
The one part of the problem that the author missed is salary. Offering a small amount of equity is fine if you are offering an above-market salary, but it's the combination of below-market salary and minimal equity that causes the perceived crunch.
Agreed, unless you have some extremely appealing concept going you're not going to get interest with below-market salary offers even with average equity offering. I'd put it more brusquely: "You pay peanuts, you get monkeys".
When we have jobs - infrequently mind you - at slightly below-market salary we always offered a phased increase to slightly-above market salary over the 6 month trial period.
That being said, I'm seeing a lot of mentions of single week or single month trials. Is this a US trend? Across the pond here, in the UK, I've certainly not seen them.
Crazy, we're used to probation periods here with a short notice time, that protects both sides. I assume you have to negotiate any notice period for being fired, or do you simply get no statutory notice period?
Usually, there is no notice required from either side except in the case of mass layoffs (two weeks are expected out of politeness, but aren't legally required). That can be changed by a contract, but that usually doesn't happen for anyone but high-level executives.
If you don't have a seat in the board room, assume you have a giant target on your back. As soon as the company has a reason, you can be diluted to nothing.
You can get a lawyer, but the proceeds are so uncertain, especially if you successfully sue. What do you get, 1% more of a company that has just lost an expensive lawsuit?
(Request: court records for a normal middle-class equity-owner in a small company fighting his rapid dilution, successfully or not.)
In my experience non-engineering roles are just as difficult to fill.
You can easily find a non-technical hire if you don't know what you want or don't care about quality. If you care about quality, you'll be stuck in the same crunch. For example, the skill of being able to write without run-on sentences eliminates 99.9% of the candidates in the pool, for any role. Want candidates who can write reasonably well? Hiring just got 100x more difficult. In a modern environment, if you're non-technical and can't write well, what can you do?
I'm surprised that "get out of the valley" isn't an option for that. I mean, there are a lot of cities that produce lots of talented developers that cost a lot less than Silicon Valley rates.
And if you really need to have "an office," then build a remote office in a second-tier city and grab up all the candidates there. Fly people back and forth occasionally.
"Finally, most founders are not willing to spend the time it takes to source engineering candidates and convince them to come interview. You can't outsource this to a recruiter until the company is fairly well-established--you have to do it yourself."
This is very important. It needs to percolate into their immediate reports too. I've seen high tech companies lose great candidates because the first line managers were too busy to interview them right away. If the right talent is available, you have to maket he time.
The interview process is still something that hasn't been solved. A lot of companies make hiring decisions based almost entirely on how well someone does non-coding work under extreme social pressure, which is about the worst possible way to measure the prospects of a developer!
Personally I really like the interview process a previous empoyer used: shortly before the interview starts we had them look over a roughly CS 102-level programming project, then we ask them to design the architecture on a whiteboard while the interviewers ask questions/give guidance. What we're really looking for here is:
a.) how do they handle the social aspect of working with a superior who will often (gently) criticize your work and/or ask you to thoroughly explain why you're doing what.
b.) that they have enough chops to architect a simple program.
If they can pass those test I'm confident they'll be an effective team member, because at the end of the day all you really want is someone who is competent enough to be useful, and fits into your culture/team. Everything else will shake itself out. You don't need some "superstar/rockstar/ninja" (unless you're solving a particularly hard domain-specific problem) so stop looking for them and excluding everyone else.
Talent crunch debate is an elusive one. No credible data is available and we interpret to make ourselves feel good- sour grapes. One thing I would say (in my capacity as having gone to high school in India) is that there are thousands of great engineers (I'm talking about my friends from IIT and IIT) who would die to work for a Dropbox or an Airbnb. I'm guessing its a similar situation in S.America, Europe, China (?) etc.
Now, as far as I know, these companies don't hire in most of these countries. But why don't they? I don't understand. Visa stuff is less of a concern actually.. its been thrashed more than it deserves. Indian consulting companies got like 30K H1Bs last year. 30,000 engineers moved from India to the US. Surely, Dropbox can get 20 good ones. And your startup could probably get a handful too.
These engineers grew up on hacker news - so culture is not the problem. They are moving seven seas - so they work hard and aren't dicks. Their options in India are limited - so the salary negotiation is less of a nightmare.
Not sure if there are any republicans here, so I'll not defend the "Indian developer taking away American job" phenomenon. Hopefully, HNers get why immigration makes sense.
We are trying at VenturePact.com to build a vetted international talent marketplace. We launched a couple of weeks ago in Delhi and a few tech hubs in India and got hundreds of apps from developers wanting to work in the valley or NY. Well, many applications were not suitable BUT many were.
Would love to read what people think of hiring internationally. And what would the preference be between getting them to work remotely vs relocate.
My approach to equity was to offer a range. We'd offer base equity and salary numbers, and then give them an ability to trade salary for equity. If I recall rightly, they got a modestly better deal than investors did.
In doing that, it became clear that not everybody even wants more equity. That was a little hard for us as founders to take, because we of course thought the equity was awesome, and wanted engineers to feel a real sense of ownership. But from the numbers, it was clear that some people would rather we sold more equity to investors and just gave them the cash.
I get that. If you've been around the industry for a while, you can accumulate quite a collection of expired startup lottery tickets. Landlords, mortgage-holders, and kids' orthodontists don't take options; they take cash.
Wouldn't it make more sense if I chose 0 equity and all salary, but then bought equity with my excess salary? Now there's no vesting period. I get it all now just like an investor.
You'd be paying with post-tax dollars rather than pre-tax dollars, and you have to be an accredited investor [1] for it to be legal.
If somebody really had said, "I want to bet my whole salary on the company," I'm sure we would have be happy to accommodate them with a deal that was fair. There'd still be a vesting period, of course, for the same reason you don't get your annual salary up front on the first day. The tricky question would be the cliff, but I'm sure something could be worked out.
As a teenager, I came to the conclusion that I would never get a job as a result of an interview. I'd be even less likely to get past HR and get an interview.
So I haven't interviewed for a single job for the last 18 years. Sometimes people ask me for my resume; I don't have one.
What I did instead is take a problem I was interested in, solve it on paper, and then approach a company to pay me to implement that solution for them (along with an estimate of the cost). That has worked out really, really well for me.
If you find that interviewers or HR aren't sizing you up correctly, this approach might be an option. Businesses, when it comes to tech, mostly just want problems solved. If you can do that, you'll get hired. Nothing shows you can do something like bringing them the (on paper) solution, and offering to built it.
Also, a cliff is very unattractive because we know you're motivated to fire us before the cliff - probably even if we do a good job. Indeed, you openly admit it.
I frequently hear startups say [...] can't find
a single great candidate for an engineering role
no matter how hard they look.
While I agree that offering better compensation is a wise move for individual companies, if the market has 10 job openings and 9 engineers, regardless of how much pay they offer one of the companies won't be able to fill the opening.
Offering more money might fix hiring problems for one company, stopping one person complaining, but to stop all people complaining the only solution is to increase the supply or reduce the demand.
(Increasing the supply doesn't have to mean immigration reform - it could mean training or lowering hiring standards or a bunch of other things)
If the market has 10 openings and 9 engineers the companies should fight over the 9 by increasing overall compensation, soon another intelligent hard working individual will be sufficiently incentivised to join the industry workforce.
What's stopping the market from bidding up the compensation of a small subset of programmers who have been coding since 12 the same way a small subset of lawyers have in corporate law and lobbying?
As someone who has been coding since my teenage years; I just don't buy that this trait is absolutely essential to being a successful engineer. If it is why doesn't the market reflect this?
Sure, but if you want to hire someone with nonzero industry experience, your options are more limited :) this is what I mean when I say companies will have to lower their standards - inexperienced people into experienced-person positions, people who've been coding since they were 18 instead of people who've been coding since they were 10, people without university degrees instead of with them, and so on.
No amount of demand can create people with two years of experience in less than two years, or people with four-year degrees in less than four years.
"the market has 10 job openings and 9 engineers" is an assumption that doesn't seem to be true - if it would be, we'd observe a significant growth in salaries as companies would be competing to avoid being the one left out, since (as you say) that would fix hiring problems for that one company. If there was a true shortage, it would be impossible to hide or not notice the effect on pure 'price' of developers.
However, the evidence that we are seeing indicates that it simply isn't true - if the market has 10 job openings, then somehow there are 10+ engineers available, including employee migration, H1Bs, and all that. Somehow the supply is stable and in pace with demand - of course, all the companies would like the supply to be even higher, but that's to be expected.
> In fact, probably less than 5% of the best hackers are even in the United States.
Startups clearly need to be basing more of their decisions on unfounded conjectures. I have to say that startups seem to have unreasonable expectations of what kinds of programmers they can hire. We have plenty of viable hackers in the US, but startups don't want to hire them because they're not the next Knuth or they're "not a good cultural fit".
I would state that MAster with no time limit is not the same as those who cod under time limits..not knocking Knuth contributions but the requirements are somewhat different.
This is a thousand monkeys working at a thousand typewriters. Soon, they'll have written the greatest novel known to mankind. (reads one of the typewriters) "It was the best of times, it was the blurst of times"?! you stupid monkey! (monkey screeches)
"Third, if you’re going to recruit outside of your network (usually a mistake, but sometimes there are truly no other options), focus on recruiting outside of the valley. There are great hackers all over the country, and many of them can be talked into moving to the valley."
UPVOTE!! I'm shocked at how many companies are unwilling to pay for a $500 Southwest ticket to fly someone in for a day to interview from Texas or Georgia... relocation costs are easily offset by a slightly lower salary, and the person you're interviewing is unlikely to have 4 or 5 paper offers in hand.
"Great hackers also want the opportunity to work with really smart people and the opportunity to work on interesting problems, and the nature of mission-oriented companies is such that they usually end up offering these as well."
Uh, I don't care if it's "saving the world and the whales" or "enhancing legal resolution outcomes through analytics". I care that I am granted enough latitude to design and implement a good solution, instead of being handed a software toolbox and told to "bang on nails" all day.
We find it moderately difficult, but definitely possible to find great people. The secret is NOT looking in Silicon valley and the bay area where thousands of extremely well funded companies are looking for talented developers.
Totally agree with the last sentiments that if you're in the bay area why should you ONLY considering hiring in the same area? It shocks me that technology companies can be so parochial.
You can hire across the entire US, Canada is just nearby and then there is ... the rest of the planet!
I want to emphasize how strong this point is. In most ways, the computer programming industry is a shrinking industry in the USA. There are less computer programming jobs in the USA than there were 20 years ago.
There is a tiny subset of the industry that is growing, and we associate these with the startups in San Francisco and New York. But so far these startups have not created enough jobs to offset the jobs lost due to other factors.
This suggests that there must be a vast reservoir or programmers who would like programming jobs, but they can't work as programmers because the jobs have disappeared.
If the numbers were smaller, you could argue that the loss of jobs was due to inaccuracies in the way Bureau of Labor gathers statistics. But the drop from 565,000 jobs to 343,700 is too large to be a spurious blip.
This is a shrinking industry. Computer programming jobs are tied to manufacturing so as manufacturing leaves the USA, so to do the computer programming jobs. Don't get caught up in the hype about startups: look at the actual numbers. The government tracks these jobs. The numbers are shrinking.
"In its 1990 Occupational Outlook Handbook, the U.S. Department of Labor was especially bullish: “The need for programmers will increase as businesses, government, schools and scientific organizations seek new applications for computers and improvements to the software already in use [and] further automation . . . will drive the growth of programmer employment.” The report predicted that the greatest demand would be for programmers with four years of college who would earn above-average salaries.
When Labor made these projections in 1990, there were 565,000 computer programmers. With computer usage expanding, the department predicted that “employment of programmers is expected to grow much faster than the average for all occupations through the year 2005 . . .”
It didn’t. Employment fluctuated in the years following the report, then settled into a slow downward pattern after 2000. By 2002, the number of programmers had slipped to 499,000. That was down 12 percent–not up–from 1990. Nonetheless, the Labor Department was still optimistic that the field would create jobs–not at the robust rate the agency had predicted, but at least at the same rate as the economy as a whole.
Wrong again. By 2006, with the actual number of programming jobs continuing to decline, even that illusion couldn’t be maintained. With the number of jobs falling to 435,000, or 130,000 fewer than in 1990, Labor finally acknowledged that jobs in computer programming were “expected to decline slowly.” "
Note the addition of the Software Developers (Applications), Software Developers (Systems), and Web Programmers. This resulted from a recategorization of programmers and Computer System Engineers. Also, web programmers was simply disaggregated from Programmers generally.
I'll save you looking up the numbers: from memory, there are about 2 million of them. You can treat some portion of them as being "poached" from the computer programming category. Most are new to the field since 1990. Net employment across the previous and successor categories is up, by several hundred thousand jobs.
Your contention that the US has lost programming jobs flies in the face of material reality.
I think that's because less people writing computer programs are calling themselves "programmers". There were one million "Software Developers" in 2012, according to the same source:
Well said! If this doesn't convey the message I don't know what will.
Most of the "Founders" are nothing but facades that just want to make money in the Tech world. They don't give a damn about technology or improving the world.
Recruiting good web developers is tough, no question, but I remember trying to recruit good analog IC design engineers at my previous startup. That made hiring developers look like a cakewalk in comparison. There were maybe 100-200 worldwide who fit the bill, all of whom were already happily employed at very comfortable jobs.
If nobody in your network has a track record of results, become a sycophant? What if all the hackers in your network are US as well? You got less than a 5% chance of a hope to do anything according to Altman.
I would like to share how inhuman a lot of the interview processes are. Some examples:
* recruiter says a startup is interested, introduces me to the HR person via email. I get a 2 sentence email from HR, telling me that I have to schedule a phone technical interview in the next day or two, they need to onboard FAST.
Okay, I don't know what the job is, who the client is, and the last thing I want to do is be grilled over the phone. I'm certainly uninterested in your time crunch and am not going to rearrange my life to meet your schedule requirements (there were narrow stipulations on acceptable times).
* Talk with a company, and explain that I don't do whiteboard interviewing. Oh, a session is no problem, but the interview has to be as much letting me interview and question you. 'No problem, we just want to talk and see where you'll fit in'.
Come the day, and I barely get a 'hi', just nonstop whiteboard coding in an intense environment. Took the whole day off for that time waste. Two of the sessions had me solve essentially the identical problem - I waste my day, they don't take 5 minutes to plan out what I'll be asked. Then they call me back, and tell me I have to come in for another series a day later, which was entirely unexpected, and not communicated to me prior to agreeing to interview. And if my requests for how the interview is conducted can't be honored, fine, tell me, and either I'll change my mind or decide not to waste a day taken from work. The cap to all of that was the 'shoot the messenger' emails when I said I was not accepting due to how this all went down (and oh, I didn't respond quickly enough to that email, meaning it took me a few hours, so more grief for that).
* Just general, insistent demands as if I have nothing to do but interview with your company. If you have your resume out there, all you do is field phone calls and emails. I'm not going to pursue anything without knowing quite a bit about the job because I don't have to. There is always going to be better, low hanging fruit - cold emails with very accurate, detailed descriptions of a wickedly cool start up, recruiters that actually get to know your skill sets and desires, and so on.
* No exposure to what the work will be like. It's so secret they can't tell you, or there is a 'variety of work', or whatever. No work environment tour. No discussion of compensation, work hours, and so on until you've wasted a day or more in interviews.
* 'Go and study this book for a month, and then apply'. Um, I'm 47 and have a very successful career of inventions and products. Surely you don't have to quiz me on red-black tree implementation to access my abilities. If I need to know that, I'll open the book and learn it.
It was, by and large, very unpleasant. Perhaps it is not the best proxy, but I go in assuming the interview process is the time you are trying to impress and woo me the most, and judge you on that.
"If someone performs and earns their grant over four years, they are likely to increase the value of the company far more than the 1% or whatever you give them."
This argument seems flawed. If I think someone is going to double the value of my company, should I be comfortable giving them up to 100% equity? Put another way: percentage growth of your company from an early stage to some point in the future most often exceeds 100%.
You need to add a factor for risk in there. If there is a 10% chance that they will double the value of your company, you can give them 5%. If there is a 100% chance that they will double the value of your company, you can give them 50% and make them a co-founder. Think in terms of marginal utility. Keep giving equity until it no longer raises your expected value.
There are two unmentioned issues in regards to stock grants and hiring:
1) Information asymmetry or just plain symmetric lack of information in regards to stock grants.
2) The price of a home in a decent school district within a "reasonable" (< 1 hour each way, i.e., no more than 2 hours a day total) commute to any cluster of software companies in Bay Area (whether SOMA, Peninsula, or South Bay).
The two are closely related. When startups are competing for people against Google or any of the young public (or pre-IPO) technology companies, the issue at stake isn't salary (post series-A, startups may pay a slightly below market salary, but not an egregiously low one) but RSUs ("restricted stock units" or essentially outright stock grants: while these are treated as income for the purpose of taxation, there's also no strike price and AMT trap to worry about).
The reasons why these grants (which are generally very far from the "retire on a yacht category") matter is that their ball-park value is known, they're often refreshed as part of the performance review cycle (as opposed to fixed during offer negotiation time), and if you plan on staying in Bay Area and having kids, you're relying upon them to either afford a house in a decent school district and with a reasonable commute, or to afford private school tuition.
Changing grant tactics can help with information asymmetry problem (transparency about finances and valuation is nowadays the rule rather than exception in early stage companies), but they can't help with mutual lack of information: neither the founders nor the investors know with certainty a general ballpark figure of what the value of the company price will be at a liquidity event, or if there will be a liquidity event in the first place.
What this means is that unless housing problems in Bay Area are addressed, in addition to the already well discussed negative externalities, startups will have an increasingly harder time hiring engineers that haven't yet experienced a liquidity event or spent four or more years at bigger companies. They would love to join a start-up, but not at the cost of their (future or existing) children's education.
---
Unrelated to the above points, this paragraph is also as important as it should be obvious:
"Finally, most founders are not willing to spend the time it takes to source engineering candidates and convince them to come interview. You can't outsource this to a recruiter until the company is fairly well-established--you have to do it yourself."
If I receive a message from an external recruiter, it's hard to tell whether they really reasonably believe there's a good match between my skills and interest and the company, or if they're just employing a shotgun approach. I usually disregard these messages, even when I may be open to a new opportunity. On the other hand, if I receive a message from a founder or a tech lead, I try to reply even if (as, e.g., now) I'm not interested in interviewing: at the very least, it's likely they did actually mean to approach me specifically (not just anyone who has "Hadoop" in their profile), and I've an obligation to let them know that I'm not available at the moment as not to string them along.
---
Finally, to underscore something else said in the article, in general, best way to hire good people, is to work on something good people enjoy working on, whether it's a greater mission or a good technical challenge. If neither of the two is there, the most straight forward startup recruiting pitch -- "come work on something cool with other smart people" -- fails.
Excellent essay. This really nails what I'd want in a dream job; knowing my effort influences my payout (via legitimately sized equity grants) and working on a mission I empathize with. Best article I've read in a while on hiring.
Why not use oDesk and overseas developers? Today's teams communicate using remote tools even when in cubicles next door. Why severely limit yourself geographically in your search?
There's an overproduction of lawyers in USA, as evidenced by falling entry-level wages in that area and growing rate of law school graduates who are unpaid interns, unemployed or work less-than-their-education jobs.
I am paying a lawyer in SV $600 /hr.
Show me a link where I can get one for $65?
I'll also argue that software engineers train harder and maintain more than lawyers. If the market worked, the wages would raise till the supply catches up. But the market appears to be manipulated.
For most guys in the bay area, the beautiful girl crunch is a bigger problem than the Series A crunch (this somewhat applies to designers as well). The difference in difficulty between dating a beautiful girl and an unattractive one is remarkable--I frequently hear guys say that for unattractive girls they can find multiple great candidates without really looking but can't find a single beautiful girl for a dating role no matter how hard they look.
First, of all the canonical terrible advice advisors give, being cheap is among the worst. I have never seen a hardup guy regret being generous.
For most beautiful girls, this is as much about fairness and feeling valued as it is about the money. And of course, if girls are going to turn down the certainty of dating a handsome, confident sales guy, they should get a reward for taking that risk.
If you’re going to look outside of your network of friends from your Defense of the Ancients guild (usually a mistake, but sometimes there are truly no other options), focus on recruiting girls outside of the valley.
Finally, most engineers are not willing to spend the time it takes to develop a normal social life with regular non-technical people whereas they might develop normal personality traits and meet someone nice. You can't outsource this though--you have to do it yourself.
Footnote: * Every time someone from the government asks me what they can do to help hard-up engineers, I always say a version of "The only thing you need to do is fix immigration for beautiful girls." We need more beautiful, financially desperate girls from third world countries whose standards are not as high as American ones.
I once (sarcastically) argued in a student newspaper that attractive people should be favored in college admissions, since students would much rather share a campus with more attractive people. To me it made more sense in terms of promoting the desirability of attending the school than a whole lot of existing practices, such as favoring athletes or the children of alumni.
And sometimes when you interview at a place you get the feeling it's full of creeps and fedoras and you moonwalk on out of there as soon as you possibly can.
I have friends who are extremely good engineers (i.e., a mix of: contributors to major open source projects used by a lot of SV startups, have given talks at large conferences, published papers at ACM conferences, great portfolio of side/student projects, have worked at great companies previously, frequently write high quality tech articles on their blog, have high reputations on sites like Stack Overflow, etc.) and who have been rejected at interviews from those same companies who say that they can't find talent. (it also certainly doesn't help that the standard answer is "we're sorry, we feel like there isn't a match right now" rather than something constructive. "No match" can mean anything on the spectrum that starts at "you're a terrible engineer and we don't want you" and ends at "one of our interviewers felt threatened by you because you're more knowledgeable so he veto'd you").
Seriously, if you're really desperate for engineering talent, I can give you contact info for a dozen or so of friends who are ready to work for you RIGHT NOW (provided your startup isn't an awful place with awful people, of course) and probably another dozen or two who would work for you given enough convincing.
I'm honestly starting to believe that it isn't hard to hire, but that there's some psychological effect at play that leads companies to make it harder on themselves out of misplaced pride or sense of elitism.
Unless everyone wants to hire Guido Van Rossum or Donald Knuth, but then a) statistically speaking, you're just setting yourself up for failure and b) you need to realize that those kind of people wouldn't want to do the glorified web dev/sys admin'ing that a lot of SV jobs are.