Hiring and the Market for Lemons (2016)
danluu.com
danluu.com
A lot of companies chase highly skilled, creative, motivated developers and then stick them with routine, grindy jobs until they quit or lose the will to live. It doesn't matter how sharp your scalpel is if they're being wasted maintaining some enterprise CRUD app.
Case in point, I have a nice Japanese knife set. My chef's knife (your scalpel) sucks at cutting bread compared to the set's serrated bread slicing knife.
Both of those knives such at spreading peanut butter and jelly to make a sandwich.
The right tool (or person) for the job is what matters.
For example, I know someone who insists on having the exact same chair, screen, keyboard, mouse, and IDE at every job. I believe he's been called arrogant for that. But his explanation was that all of that is necessary to make past muscle memory translate. Like this, he can type fully blind at an impressive speed and navigate every project purely with shortcuts.
If thinking is not your bottleneck, then it makes a lot of sense to optimize for typing speed.
You might be right. But I spent 23 years in industry and can think of just a couple people who I might consider to be 10xers... and that's not enough to build all the software that has to be built in the world.
>To the outside, them enforcing a productive environment might look like diva behavior.
Your examples of chairs, screens, etc - I don't have any beef with that; that's not what I mean by prima donna behavior. What I've tended to see are people who definitely are not 10xers who have somehow got the organization in a stranglehold of toxicity.
Try arguing at FAANG that you'll need your own quiet office for your stuff plus a window and some potted plants to help you stay awake and concentrate. I think you'd be thrown out for "refusing to be a team player".
And yes, in my 18 years in IT I have also met toxic hostage keepers. But my impression was that those were people who were highly skilled and have in-depth knowledge of the system. And then somewhere along the way they had a fallout with management and wanted to leave, but the company couldn't hire any suitable replacement. So now both company and employee are stuck in an abusive relationship, for fear of being alone otherwise.
Somewhere over the past few years, I came to peace with this point. Because production software tends to be really gross, for complicated but legitimate reasons. In fact, I think the beauty is in keeping something that looks really mangled operating with any degree of success - that is in fact the mark of a successful and functional team, if they are able to keep it all working with any degree of sanity.
This is not to say that your second point, about bare minimum level of skill necessary, isn't also incredibly valid. But, I don't blame this on individual workers, but rather on the system (IE: don't hate the player, hate the game). Incentives are to make your money in a phase of the moon and move on. Incentives are to move up or out. Incentives are not to build quality, but to build good enough. So long as that's how the incentives are structured, it's how the game is going to go.
...and that's not a 10x developer, because if your limiting factor is how fast you can type and how often you can navigate shortcuts, you're a keyboard monkey, not a software developer.
Just think of the ongoing operational headache from all the code someone would generate if they were typing non-stop, as fast as they could, all day. Even if it is really good code, if you need that much code, you're already screwed.
The 10x doesn't come from typing more and generating more code. It comes from all the typing you don't do.
If typing is your bottleneck, then it makes sense you aren't putting a lot of thought in to what you are doing.
I have also met people who write overly complicated and lengthy code, but that doesn't mean everyone does.
The rails app that he built for my employer is still in production use 5 years later and it has turned out to be well organized and easy to maintain.
If typing is your bottleneck, then you're either careless and overly verbose... or you are insanely knowledgeable about what you do.
But really most people are working for a business not research. And in such cases the productivity could be measured in affect say revenue or profit. That's hard to measure for a lot of things.
And it takes teamwork, and a lot of human factors.
I doubt typing speed really comes into it. If you can do 40wpm or more it's fine IMO. Hunt and peck is OK.
An "idiot" using NodeJS writing it all in one big ugly index.js file might make the company a million with an idea or subtle change that the Linux Kernel genius missed.
Not really sure how you measure 10x.
The only way to do it is to confine what it means. "Can they implement this given problem in 1 hour? Then they are 10x"
But... software by it's nature is about implementing problems that are even hard to define in the first place and spotting opportunities. The right decisions - what NOT to develop, or what tech to use could make such a big difference. It might be hidden in an inane looking decision to use C# for example, that doesn't make you "look" like a 10xer.
I "10x" was originally intended as a hypothetical talking point.
There probably are 10x people in a team. The 10x status could change rapidly as circumstances change, team dynamics and company goals change. Someone else might take the invisible 10x crown once they get to work on a project that aligns with their strengths.
At any time you don't know who to 10x is. You need some system to decide what is a fair salary and who you want to try hard to keep. A good manager should have a feel for who that is in their team. If that person moves into another company they may not be that person anymore in the new team.
So 10x probably exists (as defined as ratio of best to worse). If it didn't exist it means that most people are pretty much performing the same, which I don't believe. But I doubt anyone is permanently a 10x contributor, and I doubt many people (include the 10x-er themselves) can tell who it is.
There are unique individuals like this, but I've noticed that the ones I've seen in the wild... this wasn't their first time building such a system. In another thread today someone was talking about building video conferencing systems and someone said "it's only easy for you because you've been doing it for years!" If it's the third time you've built that particular kind of subsystem, chances are you've made a lot of mistakes and know what you are doing, and now you can make it look easy.
This is not to say that there aren't some who are more talented than others, but as another poster in this thread noted - it's more like a 90/10 or 80/20 split, where we could get rid of a big chunk of people who just aren't qualified.
I believe that's due to being curious and slightly introverted when young, so these people just have lots and lots of experience. Such people could be manufactured by training them on many different programming disciplines over many years. It's just that for almost any company, investing so much into training is not feasible. That employee might leave once training is over.
On the other hand, if you don't have the organizational support - which often isn't about budget so much as actual verbal, emotional, political, psychological kinds of support - then your productivity will likely be very low. When I've been in places with management or clients that were repressive in their behaviors, well... they reaped what they sowed and out the door I went asap. Normally someone will pop up and say something about the risks or the security or something driving that kind of behavior or process - yes, I've worked in some high-risk environments, but there is a difference between a process designed to minimize faults and one that is just repressive because of ignorance, egos, etc. If you treat people badly, they will not produce at a high level.
There are mechanics that can build a car from scratch, and even forge the spanners they use from iron ore, all without reading a manual. But do you need that person to service your car.
I don't disagree with this, but I also came to the conclusion that it is just raging against the machine to think that it is fixable. So long as there is money to be made, no barriers to entry, and no economic incentive to improve the situation, it will only continue to get worse. I'm of the same opinion now that I was in the 90s - the fix is to mature the discipline to a true profession of licensed, qualified, software engineers. But, it's a pipe dream to think that will ever happen in a meaningful way.
1) Great devs want to work with other great devs. If you want to blast forward you don't want to spend days debugging really crappy code someone else wrote, or explaining ideas to someone who's significantly slower than you. (We've all been on both sides of that particular situation - the good ones put in the work to get faster.)
2) People don't quit jobs, they quit managers. Also, at least for everyone I know, people generally quit jobs first, and look for jobs later, meaning that if they have a good team to work with and a good manager, you're never going to get them.
This means that the great developer is not a standalone creature; great developers will cluster under a great manager, and then that unit will be immensely productive and inseparable. Building that should be a tech CEO's goal.
Bad managers which are set in their ways from 10 years ago and unable to change are really bad for business.
> 1. Do you know of any companies that aren't highly dysfunctional?
> 2. Do you know of any particular teams that are great and are hiring?
> Not one single person told me that their company meets the criteria in (1).
Reminded me a lot of Ribbonfarm on the Gervais Principle:
"Hugh MacLeod’s cartoon is a pitch-perfect symbol of an unorthodox school of management based on the axiom that organizations don’t suffer pathologies; they are intrinsically pathological constructs."
https://www.ribbonfarm.com/2009/10/07/the-gervais-principle-...
If you're at a conference where no one knows of a functional company with good teams that are hiring... maybe you're at the conference that attracts all the people stuck in a world of terrible teams and dysfunctional companies? I mean, doesn't it make sense that if you can't identify good teams or good companies, you'd also suck at identifying good conferences? ;-)
This is flat out wrong. It's not true. It's false.
I've recruited hundreds and hundreds of people and they were ALL on the market and I know for an absolute fact that many of them turned out to be really really outstanding developers.
So it's wrong.
In my experience as a tech recruiter and some-time searcher for employment in development - the real lemons are the recruiting processes of many companies. Vast numbers of people/companies simply do a flat out bad job of assessing and interviewing and selecting developers.
I can get some interviews and get through some rounds. But no one here is talking about LeetCode which is all that really matters.
Using a throwaway because obviously I'm mediocre and I don't want to end up woefully hopeless like those horrible people applying to every open job in Palo Alto.
So I'd assume that by applying to lots of normal jobs and doing normal job, you'll still be able to have a good normal life. I mean IT is well paid, even in the more junior positions.
It just won't be enough for a yacht ;) which is what the 10x crowd is aiming for.
1. Who says that companies don't try. We can only observe that they are not too successful at it. But that might also just mean that there's many companies competing for few employees. And if you can get the same salary somewhere else, who would still go to Facebook?
2. Great at work doesn't mean great character. I'm pretty sure that the original team building Android was highly skilled. But their personalities also appear highly controversial. Not every company can stomach the fallout from hiring someone like that.
3. There is an incentive to keep quiet if you succeed. Once you publicly announce that you succeeded in hiring a truly outstanding employee, you are pretty much guaranteed to have recruiters try to steal your employee away from you.
4. The best jobs for these people are research and prototypes for future products. As such, you can be sure that companies will have draconian NDAs in place to prevent their top employees from taking about what they do. So they'll be mostly invisible on the internet.
5. If you look around in indie circles, you'll find many companies where one person does legal, marketing, and all product development. I'd guess those are the 10x-ers who value freedom higher than money.
This point and to some degree your #4 point are really key: Being a potentially great worker* is relative to the company, product, project, IE: the environment. An indie may not have been a very successful developer at BigCo, but when faced with sink or swim, will strive to find ways to be ultra productive.
* I didn't write developer, because I've seen this phenomenon with testers, with technical consultants, with project managers...
This is an easy trap to fall into when you’re online a lot. Everyone around you is always doing something fantastic something you wish you thought of something new and amazing and innovative.
But remember: most people are normal, just about average. You’re just surrounded by outliers online because average doesn’t spread.
Not necessarily. Suppose you can identify good developers after you have worked with them. Then, as in the used car model, lemons will be discarded ("resold") and good developers will be kept and driven.
I was a bit naive in that assessment.
Every person is different. Not everybody that knows the big O of all sorting methods by heart is the person you need. Or even want.
There are multiple dimensions, technologies, experiences of fitting someone in a company. Some people move more slowly but surely, some move faster and are more hands on.
(That being said, I've met a - thankfully small - number of people that were a net negative in team productivity)
This intrinsic motivation implies that companies really can’t “grow” great developers, nor “pick them before they’ve blossomed”; what they can do is step aside and not create obstacles.
Oh dear, I think I’ve stretched that analogy too far.