> In academia there are definitely people who are heads and shoulders above others, for example [my emphasis].
GP was providing support for their claim that 10xs exist in most fields. Academia was just one example of a field (or "field of fields"). The same could be said of farming and plumbing.
- The one who is 10x at the expense of their colleagues (they run fast and break things and leave to others clean what is broken, which is part of the reason that they are fast).
- The one who is, at most, 1.5x or 2x but think they are (and sell themselves to the leadership as) 10x and get a very disproportional part of the money, promotions, praise, notoriety.
- The one who really is 10x, knows it, everyone that worked with knows it, but they are just obnoxious about it. They consider themselves not just a better programmer but a superior human being. This one at least is productive and can be dealt with good management.
So when you have met those types, especially the first two types, it is natural to have sympathy to the idea that 10x is a myth. But, for me, it’s clear that they exist and some of them are nice people and great to work with, they are 10x in velocity and code quality, so they make your life easier as a programmer next to them.
That is to say, some at this type surely can be managed, but it may take a really good manager (and even that may not be enough), along with team mates who are not only good, but also able to deal with such a team member.
Which in the end may negate the 10x productivity, or at the very least reduce it.
I guess one alternative is having them in their own “team” basically reporting to a director but having no immediate team members
I’ve been the 10x programmer several times in my career. Interesting positions that kept me hyper focused. Built out entire product lines, saved or made companies millions.
I’ve been 1x or much lower on uninteresting projects, or ones where I couldn’t get management to deal with blockers.
Some of these have been at same company. Just depended on the project.
In that case they are not 10x. They are not producing 10x value if they are making it harder on their coworkers.
> The one who really is 10x, knows it, everyone that worked with knows it, but they are just obnoxious about it
In that case they are still not 10x because if they aren’t reined in, no one wants to work with them and work still gets done slower - again not producing 10x value.
The core issue is the disconnect between leadership and other engineers: the leadership heaps praise on this person, gives them interesting work, and takes projects they think are “behind” away from others for their superstar to work on. The other engineers are left feeling resentful that they have to fix/maintain/extend/support this horrible tangled mess of code, while the “10xer” moves on and never has to deal with cleaning up their own mess. Sometimes management will actively protect the person’s time by asking others not to bother them with questions about their code while they focus on whatever’s next!
The features shipped have visible business value and are easily measured, but the impact on employee morale/retention/velocity is harder to measure, so it’s overlooked.
Yes. I've encountered more of these than I have 10x developers. In fact, I've FIRED more of these than I've encountered 10x developers.
That doesn't mean 10x developers don't exist.
There are plenty of smart pricks in our industry.
Also if you produce code and don’t bother leveling up your coworkers, you’re a long term liability to your company.
It's like insisting that surgeons are terrible people and pointing to Jeffrey Dahlmer because he also cut up people.
Whole idea is taken out of context. There is nothing about "superhuman 10x dev" it was simple realization that IN ONE TEAM there are developers who are 10x faster to deliver tasks and there are slower devs.
Just like in university group assignment there are slackers and there is that one person who does the assignment.
Worst of all is that people start assigning "10x" to themselves or others or judge others as "0.1x" - which is meaningless out of very specific context.
More so it means that there ideas, abstractions and frameworks result in substantially higher productivity for anyone working on the project than the average dev.
Beyond just the talent to do this successfully, you also have to give people the space and freedom to actually do 10x work... This tends to extend well beyond the narrow scoped requirements written in the current sprint of tickets.
When talking about 10x devs (or 10x any type of employee), it is about Judgement. The decisions they make on what they work on, how they achieve it, and (probably most importantly) what they choose NOT to work on. Judgement is the deciding factor in whether someone has a 10x impact on the business over time. It absolutely is not how much code they write. As a matter of fact, removing code can be a 10x improvement as well.
Programming, at least complex programming, is a gestalt of many skills ALL of which are probably a normal distribution (intelligence, focus, problem solving, political savvy, curiosity, experience, etc. etc.) How could it NOT have at least a 0.1x to 10x distribution?
Also, I do think there are 10x programmers that are 10x in a myriad of contexts, not just one team.
I am not botching your idea, I just have a different perspective of what the term “10x” means.
*Programming managers have long recognized wide productivity variations between good programmers and poor ones. But the actual measured magnitudes have astounded all of us. In one of their studies, Sackman, Erikson, and Grant were measuring perfor- mances of a group of experienced programmers. Within just this group the ratios between best and worst performances averaged about 10:1 on productivity measurements and an amazing 5:1 on program speed and space measurements! In short the $20,000/year programmer may well be 10 times as productive as the $10,000/year one. The converse may be true, too. The data showed no correlation whatsoever between experience and per- formance. (I doubt if that is universally true.)*
Now, is that really the 10x:ers fault?
People I have met in the the third type (true 10x-ers who know it) seem to have a lot more humility, in my experience, than suggested here. If you look solely at metrics like kLOC/year, they are often in the middle or bottom of the pack. They are not usually generalists, instead specializing in some area that is of high value.
When a single individual outperforms a large group the large group typically doesn’t like it, or the person doing it. Sadly that’s just a part of human nature. Where I live (Sweden) it’s referred to as the law of Jante. In other parts of the world it’s referred to as tall poppy syndrome or crab mentality.
I have a friend like this. I have never worked with them, but get to hear about how all their teammates are nearly useless on every team they work on throughout their career (mix of FAANGs and startups). Every time they join a company, they quickly become the team expert and biggest contributor, because they enjoy working long hours, spending their weekends coding, and are a very talented programmer.
I recognize they are extremely passionate for what they do, but I would never want to work with them personally. That kind of work relationship cannot be fun for anyone, except maybe the stake holders that are seeing rapid progress.
The one who is 10x at the expense of their colleagues [...]
The one who is, at most, 1.5x or 2x but think they are (and
sell themselves to the leadership as) 10x [...]
Yes.The root issue, of course, is that management essentially never has the time or chops to discern the quality (maintainability, readability, performance, correctness, etc) of the engineering work being delivered.
Management only understands timely delivery.
Even when management are software engineers themselves, they typically just don't have the time to be elbow-deep in the code their reports are delivering. This is particularly true in fast moving fields like front-end development where you have lunatics running the asylum and standards and practices change every three weeks. And even if your manager does get it, their manager probably doesn't, their manager's manager doesn't, the stockholders don't, etc.
I don't know the answer to this. It seems to me almost impossible to avoid this in a commercial setting unless you have a tiny team (less than 10 engineers?) and the CEO/CTO is a top-notch engineer.
Talk me down off of this ledge. Tell me it's possible.
as they should, because it's the only thing that matters to 99% of humans for any non-critical stuff (and honestly, even critical... even stuff that can kill humans, we are very good at saying "one chance of death in XXX is an acceptable risk" ; I'd wager that anything that is below the average death rate of car driving in a particular time / area is in general ok).
I'd rather learn a software that has bugs today than a perfect software in a year - by that time I've already organized my workflow around the bugs and already spent 1/30th of the time of my projected remaining future career around this software. I'm not going to re-learn yours even if it works better.
as they should, because [timely delivery] is the
only thing that matters to 99% of humans for any
non-critical stuff
Right, but here's the thing. Tech debt is inseparable from timely delivery.The tech debt you accrue today in the name of "shipping fast" hurts your ability to execute timely delivery in the future.
That's why management should care.
I definitely agree you about the near irrelevance of tech debt in short lived projects.
the large majority is short-term projects which
Is this really true? Really depends on where you work, I guess. It hasn't generally been my experience.But it really depends on if you're working at e.g. an agency vs. working on long lived in house projects.
Hate to break it to everyone but its really not like this, unless you're stuck in a loop of a bunch of resume driven engineers there's alot of stability in frontend development, especially since the advent of meta frameworks (Next.js, Nuxt, Modern Angular etc) and stability in tooling (rollup v2+, webpack 5+, and especially esbuild / vite)
If you want to be even more stable here, you can forgo a lot of headache with web components, which will always have some backward compatibility built in thanks to it being build on standards.
It isn't 2016 anymore. New frameworks aren't just popping up left right and center and expecting adoption. There's a lot of stability out there and there will be for the foreseeable future.
Much like any engineering endeavor there are, yes, people pushing the frontier, but all communities have this.
unless you're stuck in a loop of a bunch of resume driven engineers
This has been my experience and the experience of many peers that I've heard from. Admittedly, there's an inherent selection bias there... people dealing with frustrating situations are certainly more apt to speak up about them.- The one who is, at most, <INSERT ANY RATIO, EVEN NEGATIVE> but think they are 10x and get a very disproportional part of the money, promotions, praise, notoriety.
- The humble one, who helps mentor their colleagues to be better at what they do. They do this by helping provide critical insight at important junctures. By not attempting to grab the spotlight, but instead shine praise upon their colleagues.
These are people who help everyone get better. They are out there. While the first 3 are the loudest and most annoying, this 4th type is rarely self-identifying, often self-deprecating as they don't crave attention.
I've seen 10x that were excellent mentors. Perhaps not in a traditional sense, but through code reviews and answering questions. Everyone working with him seemed to improve really quickly.
I think the reason so many people have doubts on the existence of 10x is that they might have never encountered one.
I recall a story someone told me a while ago. Software business that did local CoL/prevailing wages. Hired an intern one summer that was just running around in circles around the other, more senior devs. Useless to say they loved him and the next summer they tried to get him back, even offering a signing bonus for an internship (something they considered unheard of) but he was already at a large search engine company down in the Bay. You can guess the comp was probably already 3x what his previous job was offering. Of course, he wouldn't return.
There's a whole class of engineers were completely invisible to most companies, even if they are in the same "local market" [0][1] (Some use the term "dark matter devs" but I know it has another meaning [2]). These guys tend to fly under the radar quite a bit. If you are in a tier 2 market or company, your chances of attracting one are close to nil. Because they are extremely valuable, they don't interview a lot and tend to hop between companies where they know people (or get fast tracked internally). When hiring is red hot, they might completely disappear from the hiring pool by junior year.
[0] https://blog.pragmaticengineer.com/software-engineering-sala...
[1] http://danluu.com/bimodal-compensation/
[2] https://www.hanselman.com/blog/dark-matter-developers-the-un...
I think this depends a bit on your viewpoint. When most people think of 10x developers, they think of ten times their theoretical maximum output, not their actual output.
The highly productive people I met were good developers, but not leagues beyond in skill. They just had their work setup to not be bogged down too much by meetings, knew the application and had the ability to actually do productive work to the scale of something like 8-10h per day. If you compare that to your average developer, who will be somewhat impeded by management overhead, 'only' be reasonably skilled and max out at something like 4 fully productive hours a day (2 on Friday), it really seems like those guys can put out 10x the work.
It's also probably a lot of anecdotes, "this dev solved weird issue in a day where other dev was stuck for week and couldn't find it!".
They might be 2x developer on normal day but happened to be this or that, debugged some hard bugs everyone else got stuck at and the people in project remembered those few good performances and assumed they do everything that much better
I find that many people commonly believe themselves to be a >1x programmer who is simply misunderstood, which is damaging. This leads to them thinking they deserve more, and therefore can make less effort to compensate this delta, or imagining that those above them who disagree with their own characterization must be idiots.
Compare GRRM with Stephen King. Both are very skilled authors but one is releasing books like clockwork and the other has propensity for getting authors block. Is one of them a 10x author and the other not? I think the answer depends on your reading taste.
In comparison, the comparison of best-seller musicians suffers from how many times the economics of popular music has radically changed over a century. And music is already the product of many people even for something like "Joe Pass plays solo guitar inside his closet as recorded by a handheld potato". (He plays music composed by others! Also not really an example of pop music.)
But I guess the question of successful/fast/highly compensated vs skilled is probably also true of progammers too. Is a 10x programmers also necessary a successful one career wise?
I've found those who produce significantly faster do so by creating well justified shortcuts that do not sacrifice the end goals (but may run around the requirements a little.)
That's exactly the story in TFA: Someone decided "I'm not going to satisfy this silly requirement of writing tests, I'm going to just auto-generate some tests, regardless of whether this has full coverage of all corner cases, because I bet everyone is just happier to move on."
This is why I believe a 10x-er can be trained, by building a deep toolbox of solutions to pull from, learning to read the room when it comes to designs, and learning to recognize and take well-justified shortcuts whenever possible.
Of course, if he would be put into a completely new project, he probably wouldn't be 10x, at least not the first few years there.
That's also a misunderstanding: The original research that the "10x" label was based on was best-to-worst, not best-to-median.
Also (not so much to you but eh may as well just dump it here): it was "in a given group of experienced programmers". Basically could be thought of as "within a given team". It never meant a single person was themselves always 10x or whatever.
Well yeah, that's what I'm saying, but thank you for bringing it front and center in a clearer way.
I think the total output is still quite high compared to other people, but I’ve spent most of my professional life torturing myself for being “lazy” because my work patterns don’t look like other people.
I'm something of a 10x designer who can program, a bit. As a result I've produced a working library of products easily 10x the size and scope of most competitors, within some very obvious constraints because I am NOT a 10x programmer, per se. My effectiveness is in coming up with the things to do, and why, and implementing them in such a way as to maximize their reach and usefulness.
I'm currently working with a 10x programmer, whose capacity is astronomically beyond mine as far as programming is concerned, but who's simply a good designer, not a 10x designer. So his projects tend to be user-driven and expansive, and very useful and dependable, but rapidly feature-creeping because he's not really one to tell users 'no, you can't have that, it's not in line with the vision'. His 10x is in the ability to bring all such requests to fruition, for many parallel projects.
We're collaborating on a thing and my overview/observation is this: when you're able to get the people working cooperatively AND trusting each others' 10X domains, it multiplies. I figure me and this guy combine to be a 100X, if and only if we consciously work towards maximizing that.
The experiential thing about being that person in that situation is the EFFORTLESSNESS of it. It's really pretty mind-blowing. Requires good enough people skills to be able to observe, listen, and trust. But when you luck into that kind of combination, it feels totally Woz/Jobs. Stuff just unfolds, perhaps with a lot of enthusiastic work (I'll happily put in days, weeks, months of grind on things at my level that will facilitate the project) but it's important to understand that it's not 10X or 100X the effort or burden.
Being in that 10X situation is great, and you should be able to be there in such a way that everybody's delighted and facilitated by what you're doing. If it's a burden on others or giving them a hard time, it's not the 10X/100X thing I've experienced. It's not a struggle. It's about when things just go great, seem to burst forth effortlessly.
The resistance against that type of developer is probably from the rest of the team who get to clean up after them but get none of the recognition.
But, here's what's most typical in my experience:
4. A programmer who writes a bunch of code and delivers a bunch of features early in a project's history. Because management typically does not have the engineering chops to determine the actual quality/maintainability of the code being delivered, but does highly value rapid delivery, this process overwhelmingly selects for developers who are deliver sloppy but (mostly) working code at high velocity. Additionally, they are the only ones able to understand how the existing mess works, because they are the ones who created it. So everybody else works at a disadvantage. This further cements the belief that they are "10x" and they are rewarded with more and more greenfield work and they usually make a mess of that as well while management continues to think they're geniuses.
I've seen 10x folks in the other 3 categories be total assholes too.
I think the "debate" around 10x folks is a bit silly, and by hard-earned experience, I've learned to question the motivations of the folks who deny that such engineers exist. There is a whole other sort of politics going on, and, it doesn't address the core problem.
My experience of 10x folks is more like: can you live with them, will they be a boost to the team overall, or will they use their 10x to bring down folks around them (consciously or subconsciously) so that they can appear to be more like 20x, or something petty like that.
Some 10x folks use their 10x to put everyone else at a disadvantage, by forcing people to play their very specific sort of game (happens especially with strong specialists who are also decent generalists, i.e. T-shaped people).
There are others who use their 10x to resist any changes, typically out of some seen-it-all cynicism (happens with the crowd who are really good at some codebase, or who are leaders of their lab, etc.). The damage caused is difficult to dislodge because it's based on context as much as skill, and learning the business context can take years, which most talented people won't have patience for – if the 10x even allows them to exist.
Every sort of 10x has some dark pattern (alluding back to your experience), and for that reason, I think it's important for "good" people to not let whatever 10x they have get to their head, and to find other things in life that offers them non-attachment and perspective. It isn't necessarily a strong-people-be-assholes problem as much as a human nature problem. Left unchecked, 10x becomes self-defeating at a team or org level, and will make the 10x person miserable too (even if they don't know it).
Well, to play devil's advocate, that's 10x in the
context of finding product-market fit. And that
really matters, whether "good" engineers want to
believe it or not too.
Well said. It definitely matters."Good" engineering is finding the optimum balance between various competing factors: time-to-market, cost, tech debt, etc.
(There are plenty of "good" engineers who try to perfect everything and never actually ship anything. We have all felt that temptation, I'm sure...)
But I think the core issue still remains. Management can't properly balance these competing factors because they can't be elbow-deep in the code.
I think the "debate" around 10x folks is a bit silly,
and by hard-earned experience, I've learned to question
the motivations of the folks who deny that such engineers
exist
Haha. I usually question the motivation of those who say that such engineers do exist. However, that's because they usually fail to consider any of the nuances (team fit, luck, circumstance, etc). You definitely do not fall into that category; I think you really describe it well. My experience of 10x folks is more like: can you live
with them, will they be a boost to the team overall,
or will they use their 10x to bring down folks around
them (consciously or subconsciously)
Amen. I worked with one single programmer in my life who was perhaps a true 10x. However, he was a lot. He was very hyperactive and on the autism spectrum. Social grace and norms were totally alien to him. He really crapped on other programmers. However, he was actually an extremely sweet person at heart! Just lacking in the filters and restraints that neurotypicals have. We eventually reached a good working arrangement where he could be his eccentric 10x self and a mortal 1x peer engineer like me worked closely with him to gently rein him in in ways that would have been impossible for management. For a couple of years there I thought we were a really good team.But he definitely wasn't the kind of guy you could just throw onto any old team without a care. His 10x did not come for free.
I relate things to Jiu-Jitsu a lot, but here again it helps. I know where I stand in the gym at all times. It forces honesty with myself. There's nowhere for me to hide when another human lets me go from a position that if the circumstances were different they could kill or otherwise seriously harm me.
There are people I beat, people who I rarely beat, then there are a couple people who are so good it's almost like we are playing a different sport. Do I jump through mental gymnastics to make myself feel better about the different sport people existing? No, I look at what they do and try to learn from them where I can while understanding I will likely never be that good. And that's ok.
At seventeen Hussain went on forty-day self-imposed retreat known as a chilla, where a musician practices in isolation until a state is reached in which the music and musician become one. The removal of everyday distractions, combined with single-minded concentration on the practice allows the musician to attain a state of Samadhi or meditative absorption, where one enters into a deeper relationship with one’s own music, and comes in direct contact with the source of music itself. Visions and hallucinations are not uncommon, where one’s musical ancestors may appear and offer encouragement or criticism. What is certain is that the musician makes remarkable progress in his craft. Hussain recalls his first Chilla in Hart’s drumming “I saw things in the music that I had never seen before, new combinations, new patterns”. Six month’s later, against his father’s advice, Zakir was ready to do a second chilla. This time around, the visions were more intense, and Hussain had a premonition that he would soon go to America.
Peter Lavezzoli in Peter Lavezzoli (24 April 2006). The Dawn of Indian Music in the West. Continuum. pp. 108–. ISBN 978-0-8264-1815-9., and this vision came true a year later and Hussain went to America and made a huge successful career for himself.
From : https://en.wikiquote.org/wiki/Zakir_Hussain_(musician)
What most people don't get-- There are not only 100x professionals, it can also be very hard to understand just far ahead they are when it comes to putting in efforts at a scale normal people can't even imagine.
However, many cannot handle the ego damage that results from truly assessing their skill level relative to the best.
One of my favorite guitarists is Matt Bellamy of Muse. His ability to perform is absolutely world-class. I can get better at guitar all I want and I know it barely moves the needle when compared with him. The thing is, the better I get the more I notice in his playing and skills which makes me better understand the full extent of his skill.
If you participate in a sport at a below world-class level where you get an opportunity to meet Olympians who teach clinics in that sport through learning by doing, take that chance because it is possibly the closest you will get to grasping just how wide the chasm is between you and "world class". In my case, the Olympians switched between roles on teams of amateurs they have never worked with before, then switched teams. All while teaching us the finer points of the sport, they would lead the team they were teaching to trounce the opposite team. It was seriously inspiring.
2x engineer is that guy to who you will go when you have exhausted all other simpler options (or go immediately, when you learn to optimize solutions), who will fix or guide you on a level others can't match. And he is probably 2 times more productive with his tasks than median level, or can be, depending on his time commitment. And I think there really can't be more productivity increases above these 2x times. Maybe you can find some unicorns, top of top, who are 3x times more productive, but that's about it.
10x engineer on the other hand is the one who is most vocal about any related or unrelated issues to him, who goes to every smoking break, to every party, to every seminar and tech talk and himself gives talks. He in known across the teams and even projects and the first to be promoted, usually along leadership track. He can also be 2x engineer in fact, but the rest of the "Exes" comes purely from self advertisement.
I somewhat agree with this. I think as people are exposed to different roles and tasks over time, they will take to some more easily or enthusiastically than others, and the skills they build will result in them doing more of that kind of work in the future.
What I find fascinating, however, is that people arrive at things subconsciously in two very different ways. Either it's something they enjoyed at every step along the way, or it was painful at first, but they didn't feel like they had a choice, and eventually they reached a level of proficiency where they enjoyed it and pursued it willingly. These are both thoroughly haphazard ways of choosing what to pursue in life, passively following the path of least resistance like water flowing downhill through whatever terrain happens to be in front of it.
But you can intentionally pursue things that life doesn't put in front of you. One thing people do consciously rather than subconsciously is look at something they find cool and think, "Wow, that looks amazing. I want to learn how to do that." And they don't concern themselves with the fact that it isn't fun at first and nobody is forcing them to do it. They motivate themselves with the end goal. That takes active, conscious effort.
For example, the passive way some people get into web development is that they make a really simple web page with an h1 element containing their name and think, "Neat." Immediate gratification. They change the color. "Cool!" More immediate gratification. And they get passively swept into learning web development.
But there are other people who first get excited looking at a really beautifully designed site on the web. They think, "Wow, that is amazing. I want to be able to do that." So they make a simple web page with an h1 element containing their name, and they think, "This is shit. This feels bad to look at, and I feel bad that I made it." But they struggle through the learning process because they keep the end goal in mind. They keep thinking about how amazing it will be to make something great.
1. There are people who are 10x better at working in one codebase simply because they have so much experience with it.
2. There are people who end up leading a great lab. The sum total of their circumstances end up making them 10x more productive than their colleagues in their field of research.
3. There are people who can be dropped into an unknown research/development environment and be productive 10x faster than others.
I think people mostly mean 3. when they talk about the 10x programmer. Anyway, does any of this really matter? If you are a 10x programmer, then you should make sure you get compensated for it. And if you aren't, you really do not want to get confused for one as the pressure of expectations will make your life miserable.
I personally believe most people reach their optimum lifestyle subconsciously. A 10x programmer gets there because (he (or she) is naturally talented) and he has enough interest, desire and willingness to commit his time to become 10x better. If you aren't a 10x you probably also do not really want to be a 10x, because you probably value spending your time elsewhere or just do not truly enjoy the stress that comes with such a role.
Basically what I want to say with all of this is:
1. There are definitely some people who are heads and shoulders above others.
2. But in many cases a 10x is a 10x in their natural environment. If you remove them from their natural environment they won't replicate their success, even if their natural ability is also very much above average. We tend to attribute all the merit to the leader and forget all the people working under him.
3. You shouldn't concern yourself with how high you rank in this hierarchy. Do what you feel comfortable doing and enjoy life. You probably subconsciously chose the role that most accommodates your lifestyle, anyway.
I think I might have veered a bit off-topic.