Ironically, a lot of the 0.1X engineers I've worked with in the 2010s were the most technically competent. Obsession with cutting-edge tools and being technically correct over shipping quickly can sink a person's productivity.
They're the people leading the charge to rewrite the front-end in Vue after we already rewrote it in React when Angular fell out of style. Or rewriting the backend in Rust because Golang isn't trendy any more. Or refactoring the backend for months to increase test coverage from 93% to 95%.
My personal indicator of a 10X programmer is someone who knows when and how to trade off technical debt against speed of execution. A brilliant engineer with all of the knowledge in the world can still sink a team by working on the wrong things all the time.
From HN comments, I get the impression that this is a common problem at companies like Uber. Lots of smart engineers with great technical talent, but they spend all their time making pet apps and services which satiate their interest in and excitement towards programming/engineering, but which have not much direct relation to the actual product or any other ultimate business objectives. If there is any relation, it's indirection upon indirection. I imagine this is probably because the core product is so narrowly-focused and basically "done" that they have to look for any other way to spend their time and energy without getting bored and demotivated.
I would guess this happens at a lot of companies with single, simple (from the user's perspective), narrowly-focused products, like Twitter.
eh? The most important thing I think I've learned is how to trade speed of completion and flexibility and comprehensibility versus putting too much effort into avoiding technical debt and speedy execution.
The 10x engineers that I’ve interacted with can be found working on nights and weekends because they enjoy it and have nothing better to do.
Working those nights and weekends without coworker interruption also means that they get to learn more things freely rather than being interrupted.
As a result they tend to be highly productive, but I’d argue that it could be seen as unfair to the rest of the employees who want to live a balanced life.
What bothers me is the people that are happy to be a <1 developer. Or even a <0 developer, whose benefit to the team is net negative.
We can't all be above average. So we are either all 1 developper, or some of us are bound to be less.
If it ever gets to the point where everyone is floating somewhere between 0.9 and 1.1, I’ll revise my statement.
When they're spending all their working hours on one topic they're taking a huge personal sacrifice which is invisible to their employer while at the same time raising the expectations towards their colleagues. If there's for example two such maniacs in a team, the rest can say goodbye to promotions and raises even if they're actually just as good but don't sacrifice their life at the altar of programming.
That said I'm the 40 hour guy. I want to work to live not live to work. That will make me less of a developer than others but I think I still bring value to my work place. I don't want to look back on a life lived in a cubicle.
Realistically, I've never met any programmer who has more than 4 to 6 (on a really good day) hours of solidly useful work in them per day.
Time spent above that, and those 20+ hours above 40, are invariably spent spinning wheels and making mistakes from fatigue, etc. and I think ought to be discouraged in sensibly run orgs.
* Missing key insights which would shave a large percentage of work off of the project.
* Making mistakes in architectural decisions, which require hours of extra mundane boilerplate work.
* Introducing difficult-to-reproduce bugs which require hours, days or weeks debugging
* Destroying key hardware which needs to be re-acquired (if that's the kind of thing you work on).
At this point in my career I'm of the opinion that asking teams to pull late nights and weekends is actually detrimental to project timelines, over anything longer than a single day. All it does is reassure PHBs that maximum effort is being made.
I've never encountered someone that I think is genuinely a 10x programmer. I've worked with a few people that thought I was one, which I'm most certainly not, and I've explained that to them.
I've encountered a lot of what I would call .2x programmers though. As you've said, there are a lot of people that are really bad at the job. It's not a slight either - there are a lot of people doing this job that really don't care for it at all.
It's hard to be good at a job you don't enjoy. Especially if life forces you to do it 40+ hours per week.
Why stop there, throw a negative coefficient on it. Some bad programmers actively cost other people's productivity and drain profit when their poor decisions or implementations need to be fixed (or they constantly ask the same questions and never seem to grow past that stage).
I have. (Interestingly, some of these people knew this and had a surprising lack of modesty about it as well…) Usually I think it boils down to being able to have the experience to consistently guess right on things, come up with new ideas, and not get tangled in the weeds: most of them are smart, but not so smart that you’re just lost when talking to them.
That, BTW, is a sure sign that someone is trying to appear smarter than they really are. Having worked at 2 research labs over the course of my career I know more than my fair share of genius-level people. Without fail, they are humble about it, and can explain complex concepts in a way the rest of us can understand. This is something that just blows my mind pretty consistently actually, and IMO it is a sign of true, deep understanding of a complex subject. The person didn't just memorize formulas (although many of them excel at that as well), they understand why things are the way they are, the real meaning behind it all.
It could be that this is selection bias though, and I only got to know geniuses who aren't also assholes.
Nope. Explaining things well is a skill. One can be non-excellent at it. Its possible to have a moderately-good grasp of something that you can use while working with it, but not yet have come up with good ways to make your knowledge explicit in a well-organized fashion.
Part of being great at something includes an ability to abstract out common difficulties, which helps other people to understand (even when you are not that great at explaining).
I'm not aware that I've ever met a genius who was working on completely different principles to other people - everyone reaches the same difficulties and has to find a way to resolve those.
Agreed.
But moderately-good is also not "a sure sign that someone is trying to appear smarter than they are".
> everyone reaches the same difficulties
That is definitely false. I've had difficulties with social skills, the writing process, and knowing how to direct my attention. Some of these are so alien to other people that when I ask questions, it is not uncommon to get responses like:
* Just do the obvious thing.
* This isn't hard.
* What do you think {repetition of my question}?
* You're overthinking things.
* What the fuck is wrong with you?
The folks I've heard get discouraged from maths or science tell similar stories. Part of being good at the skill of explanation is asking questions which help you understand the other person's perspective and what their difficulties are.
> That is definitely false.
A bit strong, and I don't think your examples are necessarily contradicting this. Obviously everyone has their own experience.
Responses such as "You're overthinking things" most often mean: 'I overcame this problem with practice but it happened subconsciously, so I'm not able to express how I did this.'
Shoebox is logical computer, cupboard is computer, container is a distant "big" computer (server), pigeon hole is a virtual server.
Now you might have a few boxes of photos at different companies -- the cloud is being able to see/use all those photos at the same time from anywhere in the World.
[Perhaps too close to storage model vs processing model of cloud?]
What I have come to appreciate more over the years is the ability to communicate and make understandable code that other people can build upon. I think it's our greatest strength to lean on the collective ability of the group instead of depending on some person's individual skill.
And in the end the "10x" is merely a subjective measure, that very much depends upon the people you are comparing to. With a team of 10x programmers wouldn't everyone be then only 1x?
But this guy had the ability to focus on the most mundane things with unbelievable attention and focus - I would probably need to take amphetamines or something to come close to this level. Combined with the experience he had with this project he was by far the most productive person on the team (and the team had competent developers on it).
And it was not a case of a mad genius locking people in to his asylum project - this project was screwed over by that type of developer years before he joined the team.
They still very much exist. My previous job was at a bank and these people filled it.
For instance, when you move from C++ to Python, you kinda realise after a month or so that normal loops won't cut it for stuff like numpy arrays etc due to the huge overhead. I realised this personally because I knew how quick C++ was and I wondered why the same code in Python was so massively slow, and I read up online to understand it. Similarly in matlab, for loops are very fast but still inefficient. So now when I write code, I use inbuilt libraries as much as possible and in matlab, I make everything into a matrix operation so it is blazingly fast once I scale it to a million data points.
My colleagues have no idea what that shit is. They'll know every step of a complicated algorithm and implement it simply using loops.
When I get these kinds of messages I just want to strangle the person on the other end.
Cool, an error. What did you do to try and fix it? Or was your first step to contact me?! (hint: it is)
For example when Linus wrote git he singlehandedly outprogrammed every team of version control vendors. He was a 50x programmer. (If not more.)
This is a real literal example without exaggeration.
This is precisely where the 10x Myth comes from. Linus is not 10x a talented developer, productivity-wise. He is 1000x the value of some talented developers, because he figures out great things to make. But the "10x developer" is about productivity.
I suppose I am saying that if Linus/Junio/whoever can make git in 6 months whereas a regular dev would take 5 years, then he is a 10x--it doesn't matter why he is 10x faster.
If Linus had released Git quietly, but put his name behind mercurial and used it for the Linux kernel, would Git still be the de-facto standard today? Or is his popularity and influence at least as big a factor as his design or code skills?
Yeah but people here don't like to hear that :-)
I have another similar funny example - whoever invented bitcoin, that person single handledly created more value than all the YC startups put together PLUS a lot of other incubators, plus a lot of other companies. I wouldn't be surprised if in less than 10 years, you could add to that the total capitalization of the FANG (as in F+A+N+G) and still that one person will have had created more value -- alone.
It takes some special persons, who have not just the wits, but A) know extremely well one or more domains that are generally not connected - say software, finance and game theory for Bitcoin, or software development, project coordination of thousands of persons and hundreds of companies, and scale/complexity issues for Linus B) has already played with the existing solutions quite a bit and know why they suck C) has the opportunity (free time, etc) to scratch this own itch.
I know, people will often tell how it's wrong, how both project are special exception, but then what about Fabrice Bellard? What about the many others? Are they all special exceptions?
TLDR: I believe Kx programmers have a statistic distribution with a very long tail. There are some K=10, some K=50, some with a K even larger. It requires multiple skills + motive + opportunity. Any missing factor and the magic doesn't happen.
Deny the existence of the 10x programmers if it makes you feel better about yourself. Use their existence as a source of inspiration if you want to improve yourself.
Linux was sucking value away from real research in the form of copyleft (lost IP rights), financial speculation (VA Linux IPO, etc), hacking and other forms of cybercrime (don't they show nmap in the Matrix?)
But perceptions change.
The only thing that doesn't change much is the value created, as measured on the public markets.
Whether you like or dislike the morality Bitcoin (and there is more dislike on HN as usual), the market seems to indicate its potential is greater than an isolated dislike.
You are free to be like the Microsoft of the last millenium and consider Bitcoin as a terrible cancer. But I think your perception will change with time.
If your conception of value to society is as simple as "people pay money for it", maybe you should reconsider what value means outside of a purely monetary lens.
So far, bitcoin is a much costlier way to transact compared to standard methods - both to the end user, and in terms of energy/resource costs of miners vs. a VISA server.
It probably has some value in a scenario where the government is an adversary. But the government can regulate and track Bitcoin just as well as dollars if they wish to, like they already do in the US by requiring BTC exchanges to collect users identity proofs.
The arguments about how bitcoin is the next big thing and we'll all look silly for laughing at it now are basically empty. I'm sure i will feel silly if it takes off somehow, but that tells me nothing about if/why it will take off. I'll look silly for laughing at ghosts or leprechauns if they turn out to be real too, so what?
The most effective developers I see are those who ask the right questions. They may have lesser skills than other developers, they may be younger, less experienced, not as smart, etc. However they always produce more. Not because they can type faster, or algo better, but because they know how to leverage every aspect of their team from knowledge sharing, to knowing when to ask about refining requirements, etc.
They think about the whole problem, not just the slice given to them.
Of course there is always a spot for people who are smart enough to algo the shit out of anything, just not as team leads.
It's all I do, it's all I'll ever do. I'm not a balanced person and I'm ok with that.
These definitely still exist.
FizzBuzz is just an example of the general problem of "given a set of things, do something to a subset of those things" which comes up often in real world settings. If you knew enough to set up a loop and apply some conditional inside of it, then you passed better than some of the programmers I've worked with.
Today, with Google and Stack Overflow, that gap has diminished, but there is definitely people still way better than "average" developers. However, if you have someone that keeps their skills sharp and their problem solving desire sharper, you won't fine anyone 10x - maybe 2 or 3x, at best.