top | item 20470127

I was a 10x engineer and I’m sorry

179 points| zdw | 6 years ago |networkingnerd.net | reply

186 comments

order
[+] akavi|6 years ago|reply
I'm not sure I understand why people are so eager to conflate the term "10x engineer" with "an arrogant engineer who is only seemingly productive because of either obfuscation or generation of technical debt".

It seems blindingly obvious that there are people out there who are just... dramatically more effective programmers, in a holistic net-value-to-organization/world sense. Fabrice Bellard and John Carmack, to name two that jump to mind.

And while I've definitely never worked with programmers of their caliber, I have worked with people who truly were an order of magnitude more productive than me, either in sheer quantity of quality output or by dint of their efficacy at creating tooling/abstractions/apis that made other programmers more effective.

[+] freehunter|6 years ago|reply
There is also a very thin difference between “technical debt” and “genius programmer”. If I invented half the programming concepts Carmack did and wrote it at the company I work for, it would be considered technical debt immediately. No one else would be able to understand it and no one would be able to fix it when it broke. But for various reasons (mostly since Carmack is actually a programming genius), people stopped what they were doing to learn from him and adopt some of his techniques. Fast inverse square root is genius but it would just be way-too-clever technical debt if Carmack hadn’t written it and others didn’t learn from him.

No one would take the time to learn from my way-too-clever code. They’d throw it away for more obvious code in a heartbeat. Because I’m not famous, I don’t work with other geniuses, and of course I’m not a genius so my way-too-clever code would just be annoying and uncharacteristic.

[+] Bartweiss|6 years ago|reply
I think the problem is largely that "10x programmer" is ambiguous between "10x more valuable" and "consistently produces code 10x faster". I think people accept the idea because of the first meaning, but efforts to hire 10x engineers frequently look for the second.

There are certainly lots of programmers who produce 10x more value than others, and some who produce 10x more than average. They create good project plans that don't need reworking midstream, build tooling pipelines that save work for their whole team, catch obscure-but-expensive bugs in advance, and make sound design/infrastructure choices which save huge amounts of renovation down the line. And yeah, for sufficiently-hard problems they sometimes come up with clever technical solutions other people wouldn't.

I suspect there are engineers who can frequently output quality code 10x faster than most of us would, but that's reserved for incredibly specific tasks. Most code-writing genuinely can't (or shouldn't) be accelerated like that, so it's limited to arcane problems like rendering or codec work where brilliant optimization can trump general diligence. John Carmack might be an example, or Dennis Richie, or Gary Tarolli (who apparently first authored Fast InvSqrt). The Microsoft gurus who hand-edited the EQNEDT32 binary for a bug-fix, too. But there are maybe a few thousand programmers in the world doing that sort of work, in a very specific set of fields.

Meanwhile there are a lot of companies trying to hire "10x engineers", often for "make our website and backend" tasks that can't possibly be solved with a brilliant coding trick. And a lot of those companies aren't looking for someone who will do the architecture and task-analysis and tool-building that makes 10x-value engineering possible, they're looking for someone who will solve simple problems inhumanly fast. In practice, that mostly means cutting corners, hard-coding values, and skipping on documentation.

[+] skue|6 years ago|reply
You don’t even need to go to the level of a Bellard or Carmack to recognize the existence of 10x engineers. This pushback seems to derive from the egocentric assumption that 10x means “Ten times better than me.”

If we flip this around, does anyone doubt the existence of 1/10x engineers? I’m not referring to low end outliers who clearly can’t code. But I f you think through all the engineers you have known who have actually been employed and worked in the field, is there a 10x spread between the best and the mediocre-at-best?

Lots of folks are familiar with the Dunning-Krueger effect for what it says about the perspective of those with less experience/skill. However, it also postulates that people with more experience/skill also see the world incorrectly — from the other direction. They are prone to assume that most people are at least as skilled as they are.

This pushback against the notion of a 10x engineer seems like the perfect union of Impostor Syndrome meets Dunning-Krueger. We worry that we’re near the bottom of the curve due to our own insecurities while being partly blinded to the deltas in skill both above us and below us.

Edit: Clarified that I was interpreting 10x as highest to low-average, not highest to lowest outlier.

[+] johngalt|6 years ago|reply
> why people are so eager to conflate...

Because identifying, hiring, and keeping 10x programmers is difficult and expensive. Companies fail at it and assume the problem is the concept of a 10x programmer, rather than own inability to handle this difficult objective.

There a lot of hiring managers, who think the process has one step: post a job 'looking for 10x engineer' and then judge the results. Rather than consider that their approach might be flawed, they attack the concept of a 10x engineer.

There absolutely are 10x people out there in many fields, and many of them are humble about their methods/approach. Software engineering might even have 100x people.

[+] rthomas6|6 years ago|reply
> Fabrice Bellard

I googled him just now knowing nothing about him. Holy cow. How can this person even be real? Are we sure he's not a superintelligent alien?

>In 2005, he designed a system that could act as an Analog or DVB-T Digital TV transmitter by directly generating a VHF signal from a standard PC and VGA card.

WTF! How??

> On 31 December 2009 he claimed the world record for calculations of pi, having calculated it to nearly 2.7 trillion places in 90 days. Slashdot wrote: "While the improvement may seem small, it is an outstanding achievement because only a single desktop PC, costing less than US$3,000, was used—instead of a multi-million dollar supercomputer as in the previous records."

This guy is more like 1000x than 10x.

[+] pgcj_poster|6 years ago|reply
> I'm not sure I understand why people are so eager to conflate the term "10x engineer" with "an arrogant engineer who is only seemingly productive because of either obfuscation or generation of technical debt".

I think it's pretty clearly because those are almost always the people who will call themselves "10x engineers," and obsess about the idea of being better than everyone else. Good programmers don't do that for the same reason that "any man who must say 'I am king' is no true king."

[+] langitbiru|6 years ago|reply
Yup, some even created a website dedicated for denying 10x engineers: http://10x.engineer/

But there are people like Linus Torvalds, Satoshi Nakamoto (if they were one person), and those two programmers you mentioned. I doubt I could beat any one of them even if I replicated myself 20x.

I think, part of it caused by the wrong stereotypes of 10x engineers (for example, perpetuated by a VC in a recent Twitter storm) and it became a myth that people accepted. Another part is some people are new to programming and have not "encountered" these god-level programmers yet.

[+] Vinnl|6 years ago|reply
> there are people out there who are just... dramatically more effective programmers

So... At the start of this week I was trying to solve a bug that only occurred when someone had multiple browser windows open. I usually have just one browser window open.

The person who reported the bug did not mention that they had multiple windows open (and why would they). I got lucky when trying to reproduce it: my testing routine included giving it a try in Private Browsing, which meant opening another window.

If I had not done that, I would not have been able to reproduce the bug. How would such a dramatically more effective programmer have been able to reproduce that bug more quickly?

(Also note that the symptoms did not indicate anything relating to multiple windows. The report was simply: nothing happens when I try to run it.)

[+] heymijo|6 years ago|reply
> Because I had special skills it meant that I was being relied upon more to do work that no one else could do.

This is a textbook example of a bad system with a single failure point/bottleneck. One way to be considered "10x" is to be the only person with the know-how to keep a critical function afloat.

We really don't learn from history. Eli Goldratt wrote about this in his book The Goal--publication date 1984. Context was manufacturing but it's easy to see the principles at work and consider them in other contexts.

Gene Kim, George Spafford, and Kevin Behr wrote about this in a DevOps context in The Phoenix Project--publication date 2013.

These are just two examples of individuals who wrote books with mass market appeal that read like novels to illustrate their points. Many, many other people have thought and written about how to avoid building bad systems. And yet still, in 2019, as this 10x discussion flares up again, it's a myopic view of the individual without a scent or sight of talking about bottlenecks or systems.

Sometimes I'm in awe of Startupland and Tech World's accomplishments. Other times I'm in awe of what it doesn't even know it doesn't know.

https://en.wikipedia.org/wiki/The_Goal_(novel)

https://www.goodreads.com/book/show/17255186-the-phoenix-pro...

[+] ianbicking|6 years ago|reply
> This is a textbook example of a bad system with a single failure point/bottleneck. One way to be considered "10x" is to be the only person with the know-how to keep a critical function afloat.

I think often (and in this article) an organization has zero people with the know-how, and then someone struggles and figures things out, and now they have one person. That one person might be someone who has figured out how to deal with a difficult stack, or might be the person who has built that stack themselves – either way, they've done something valuable because they are handling something that is critical.

The next step – spreading that knowledge, or making the knowledge more accessible, or making the system more usable – is important, but it's not wrong that the organization has ended up this position. It's part of a maturing process. And we shouldn't shit on the person who brought the organization from zero to one, just because they aren't the person fully equipped to bring the organization from one to many.

[+] lowercased|6 years ago|reply
if no one else at a company knows how to do a task, and you are doing it, you're not a 10x dev, but an 'infinite-x' dev, no?
[+] samschooler|6 years ago|reply
For people who haven’t seen the twitter thread, context is needed here.

The thread was written by a VC on what he thought a “10x Engineer” to him was, and he grossly summarized pretty much the opposite of that. https://twitter.com/skirani/status/1149302828420067328?s=21

[+] manishsharan|6 years ago|reply
Wtf . how did this guy beocme a VC ? His entire twitter feed is so mundane -- except for the 10X post -- that shit was hilarious. Even funnier were desperate founders who liked his post.
[+] gurkendoktor|6 years ago|reply
> he grossly summarized pretty much the opposite of that.

Here's an actual quote from the thread: "10x engineers don't hack things. They write quality code and know exactly how the code has to evolve, and have a mental model of overall code structure. They write at most one design document, and the rest is in the code."

The thread wasn't particularly crazy as far as Twitter takes go. I think it only went viral because of tweet #3, the one about background colors and keycaps.

The whole meme about 10x programmers writing terrible code very fast must have come from somewhere else.

[+] EnFinlay|6 years ago|reply
This is a some next level bullshit

> 3. 10x engineers laptop screen background color is typically black (they always change defaults). Their keyboard keys such as i, f, x are usually worn out than of a, s, and e (email senders).

[+] knightofmars|6 years ago|reply
That was cringe inducing. I want it to be satire.
[+] notus|6 years ago|reply
Kind of interesting most of the people agreeing with him are Indian.
[+] crsv|6 years ago|reply
On top of that, in terms of VC's he's an utterly unremarkable one. Poor guy had no idea he was he stepped in with that thread. He was just trying to virtue signal and play thought-leader.
[+] ThrowawayR2|6 years ago|reply
No, that is not being a 10x engineer; maybe he managed the 10x part relative to his colleagues but nothing about his tale (keeping info to himself, letting himself become a single point of failure, etc.) says he behaved like an engineering professional. If I had to label it, it would be "rockstar", with all the positives but also negatives it implies.
[+] jrockway|6 years ago|reply
I agree with the other comments that say that this is not really what people mean by "10x". 10x means you make the problem ten times simpler. 10x means you build tools to make the rest of your team more productive. 10x means you sit down with users and make sure that every bit of work you're doing on the project matters to them.

It doesn't mean doing 400 hours of work a week, which isn't actually even possible. It just means using your time so much more effectively than others that it just seems like you're doing the job of 10 people.

[+] PunchTornado|6 years ago|reply
exactly, none of what he does describes 10x. he's just a guy who learned some specific skills.
[+] icheishvili|6 years ago|reply
It's widely accepted that olympic swimmers are more talented a person you'd randomly find at your community pool, but for some reason there's strong resistance to the idea that across a large distribution of software engineers, some outliers may indeed be much more productive than the mean.
[+] jimbokun|6 years ago|reply
Of course there are far more productive engineers, but this man, while good at his job, and the description of a "10x" engineer in the cited twitter thread, are nothing like actual 10x engineers.

The ultimate "10x" engineer, to me, is Peter Norvig. (Maybe a 100x engineer?)

For fun, he knocks out a spell checker on a plane ride:

https://norvig.com/spell-correct.html

In very concise, well documented, easy to read and understand code, with good performance.

This isn't because Peter doesn't have to look at documentation or has a black desktop background. It's because he can look at a problem and come up with elegant and creative solutions other engineers wouldn't even think of.

[+] vonmoltke|6 years ago|reply
"[A] large distribution of software engineers" is a group that has already been, to some degree, filtered by aptitude and interest. "[A] person you'd randomly find at your community pool" is essentially the same as randomly drawing a person from the population at large.

Also, "more talented" is a much milder statement than "much more productive", which in turn is a much milder statement than "10x". (The first two, as well, are not saying the same thing. Talent != productivity.) Nobody disputes that there is a distribution of talent or productivity among software engineers. People dispute the magnitude of the standard deviation of that distribution.

Going to your Olympic swimmer example, the number of people who qualify for the Olympics in swimming is a small portion of those who try out, which in turn is a small portion of those who are involved in competitive swimming at all levels. Thus, the number of Olympic-level swimmers relative to the overall swimming talent pool is tiny. I don't think anyone disputes that there are a few dozen, maybe even several dozen, people who are several standard deviations better than the average software engineer. What they dispute is that there are companies full of them, or that trying to hire them is a viable strategy.

[+] louhike|6 years ago|reply
I don't think it's fair to compare random people in a community pool (even though some can be really good) with engineers with work experience.
[+] ceejayoz|6 years ago|reply
Is Michael Phelps ten times faster than your average competitive swimmer, though?
[+] yowlingcat|6 years ago|reply
Okay, but one of these is a massively distributed team and organizational sport, and one of these is an individual sport. One is highly based on hyper-focused physical dexterity and the other is an interdisciplinary form of cooperative knowledge labor to achieve business goals. There's some overlap in so far as technique exists in both, but there exist such vast differences between the failure, passing, and mastery criterion, the process of learning and teaching, and even the actual act of execution that the analogy doesn't really work effectively as a vehicle of language.

This isn't to say I fully disagree with your point, by the way. I'd rather use the analogy of a TV producer, or a movie production, or a band. It's creative output, there's tons of variation in the level of natural and practiced talent, it's highly team based, and the work product is very much a knowledge product. But, even there, differences remain between something you have to use and something you can consume for pleasure.

How about industrial design firms and elite designers? Well, now we're cooking with gas -- when it comes down to it, engineers are still ultimately designing systems that either are dependencies of other systems that people directly use, or are those systems themselves. What makes someone 10x more productive? Is it that they individually produce 10x more output, or that they understand the nuances of the constraints 10x better, or that they're able to make the engineering lifecycle 10x more effective, or some combination of all of the above? I'd say the latter. In that way, there are almost certainly outliers that are more productive than the mean.

And, in my experience, that comes from a combination of individual competence and team/organizational based leadership ability. It's a far cry from the savant 10x individual contributor that the 10x meme originally came from and which many folks across the industry now (rightfully, in my opinion) critique.

I've been a "10x engineer" and I'm not sorry. The difference is, it's not the 10x savant individual contributor. I've made entire organizations 10x more effective, but fundamentally, that was because I learned how to be a good multiplier: how to help people out, help them grow, unblock procedural bottlenecks in a lasting way, resolve misalignment between different divisions in an org, refine a product that was missing the forest for the trees, and so many other things. But that did not come from me being some kind of natural genius, or more "talented" -- it came from me being persistent, and never really being satisfied if I thought things could be improved. It came from me doing that over a long enough period of time that my cumulative output and multipliers ended up indeed 10x-ing things. This is the kind of "10x" engineer that I believe most engineers can become -- not easily, but doably. I've built teams and orgs consisting of these kinds of engineers. And, they'll eat your 10x savant contributors for breakfast.

How does the old saying go? Culture eats strategy for breakfast? It seems trite, but it's always rung true in my experience.

[+] dkarl|6 years ago|reply
This person did not shut out his colleagues and work in a bubble because of personal shortcomings. This person was forced to work alone because his company needed very specialized skills and relied on a single person for them. No budget for hiring another person, no time allocated for training someone else. What, is he supposed to make an executive decision to stop doing his work and pull another engineer off their work so he can train them? He was an IT tech, a leaf in the org chart, and management had made the calculation that they saved $X/month by relying solely on him, at the expense of some short-term disruption when he inevitably left, and $X was big enough to win out. The big ego he blames himself for was part of the solution they engineered. The more important he felt, the harder he worked, the more money he saved them.

Also, I think it's in poor taste to make this kind of "confession" or "apology" because sincere apologies can have weight and meaning, and this cheapens them. By arrogating the responsibility and the apology to themselves, this person is protecting the people who created the situation. By blaming his own personal deficiencies, he is obscuring the fact that the business chose (probably intentionally) to benefit financially by relying on a single overworked engineer instead of a team.

Yeah, yeah, I know we're all supposed to claim ownership and responsibility for everything at all times, but sometimes it's appropriate to blame somebody else.

[+] beat|6 years ago|reply
Makes me think of something I wrote a while back...

https://hackernoon.com/10x-rockstar-ninja-wizard-vampires-f5...

"Ninjas are nameless, faceless mercenaries. The ninja’s job is to create mayhem for the highest bidder. The ninja shows up in the dark of night, uses mysterious powers and ruthless violence to create disaster, then disappears in a puff of smoke.

Ninjas are nameless, faceless, heartless, merciless enemies.

Are you sure you want to hire them to work on your code?"

"what makes a wizard a wizard is that they use magic. And unless you’re born with it (Harry Potter), or study ancient and mysterious tomes, you will not be a wizard. Only wizards can understand what other wizards do. Unless your whole team is wizards, you might want to reconsider the idea of using magic rather than proven tech in your code."

[+] sleepysysadmin|6 years ago|reply
I was certainly 10x engineer. Probably closer to 20x at my last job.

My ex-employer was an abusive(msp) employer who couldn't hold onto senior staff. The organization became so tremendously bottom heavy with people just out of school; I would literally have people lined up in my office waiting to talk to me to get help.

I was practically the only person who wrote documentation. I was literally the only person who wrote how-tos. MYself and only 1 other person was the only people to even push positivity. The place was so toxic that everyone was looking for reasons to complain. I'd have people come into my office to hide from dispatch/work.

Long story short, I reported harassment and got fired the next day. Over the next 6 months that place shed over 20 people out of 30 staff.

The workload I took on doing 60 hour weeks and 24x7 on-call had to be given to others. Everyone else said that was enough and found new jobs.

[+] trm42|6 years ago|reply
I can kind of relate to you. Not sure about the 10x but on the previous job I ended up working as team lead, pm, janitor, process developer, architecture guy, partially managing the infra, teaching the stuff to others etc. We had quite good team spirit and the people were generally awesome but there were management issues which broke our focus into pieces and we didn't get any real progress on the important stuff. In the end I didn't even realise how burnt-out I was (just trying to help and fix all the things for other devs so somebody could get something meaningful done) until some headhunter tried to recruit me and I started going through pros and cons. Switching to a job with a real focus has helped a lot and I learned a lot from that experience but happy to be somewhere else.

That company kind of imploded as there was about ten working when I left and now there's three guys left trying to get the work done. Luckily their focus has finally changed and tightened and there may be some good stuff brewing up so I'm cheering for them. Still missing working with those guys, though.

[+] sfblah|6 years ago|reply
I don’t think the author understands what a 10x engineer is. It’s not down to tons of research and work. It’s a matter of having a knack for it.
[+] setr|6 years ago|reply
Often “having a knack for it” amounts to simply having spent more time and effort on the subject.

Like in university, I could 10x nearly any other student at programming... almost a direct result of the fact that I actually read man pages, documentation and the longer stack overflow posts.

And people would assume I was just somehow inherently good at programming.. but no, I’m awful at it; I just learned to read.

And no one will believe it

[+] raxxorrax|6 years ago|reply
> letting himself become a single point of failure

Will always happen if the problem is complex and the org small enough.

If you do it voluntarily, you are probably not that a great engineer. But even the good ones fail at some point.

Finding someone who can replace you is very difficult in average mid-sized cities. And most problems aren't even restricted to the extremely pluralistic software environments we have and additionally need experience in specific domains.

[+] enraged_camel|6 years ago|reply
I strongly disagree. What you perceive as a "knack" was often developed by putting in lots of dedicated effort over a long period of time, under the right conditions.
[+] jdlshore|6 years ago|reply
The author was responding to a specific (and ridiculous) definition of 10x engineer provided by a VC on Twitter. He makes this clear in the first paragraph of the article.

Take more time to understand the context before assuming a lack of understanding.

[+] coldcode|6 years ago|reply
I am more concerned about the 1/10x engineer. There are a lot more of these, 1/10 as effective as any average engineer.
[+] marsdepinski|6 years ago|reply
10x engineer = quiet working environment absent of distractions 2.6x * 2x the number of productive hours by removing and shortening meetings * 2x engineering ability and company culture with no obstacles to productivity
[+] l0b0|6 years ago|reply
I don't believe for a second that actual 10x developers behave this way, because there's nothing 10x about this behaviour. A real 10x developer would be someone who enables their fellow team members to be 2x developers. Or who creates a solution which is twice as X, twice as Y and 2.5x more Z — for any useful metrics X, Y and Z — than an acceptable solution. Basically their impact is 10x, not in terms of code or features, but in terms of value created in aggregate.
[+] throwing838383|6 years ago|reply
One lesson we can all learn from this: You don't hire a x10 engineer, you nuture it. Year by year, as an engineer develops more and more of the skills required, their productivity increases. A lot of engineers doing hiring, think they can just get one of these engineers off the shelf by paying some recruiter 50 grand to make one materialize. It doesn't work that way. x10 engineers are born of years of company specific specialized labor.
[+] mikece|6 years ago|reply
Acquiring knowledge that nobody else has in more than one critical system isn't necessarily a 10x engineer, more like an engineer who is critical to the business in (up to) 10 different systems or intersections of system. Management should try to minimize situations where only one person knows how to operate critical systems (see the character Brent in "The Phoenix Project") but that's not what I understand 10x to be. To me (as a developer), a 10x is someone who eats, breathes, and sleeps nothing but the job and can literally crank out 10x the lines of code. Whether other can maintain or understand that code is one problem with having a single person outperform their peers by so much; it also means that if management doesn't recognize this as an aberration then when that person hits the lottery/gets a better offer/gets bored and quits/is hit by a bus you're in a position of trying to explain to senior management why you're going to need to hire five people to replace the one 10x person.

This isn't to crap on the raw ability and talent of a 10x -- I'm massively envious of that ability! -- only to point out that with disproportionate output comes consequences.

[+] peter_d_sherman|6 years ago|reply
Excerpt:

"I wasn’t just the most important cog in the machine – I was the machine. Nothing went forward unless I was doing it. And that’s not scalable at all."

10x'er vs. Scalability of 10x'er (when/where/how 10x scales, when/where/how 10x does NOT scale, etc.)...

An interesting subject for future business thought leaders, is it not?

[+] mrkstu|6 years ago|reply
It's a fine line.

I've moved up to Network Architect and I'm working hard to replicate my knowledge out to small network team so I don't have to work tickets anymore.

One of the reasons for the promotion is the understanding I have across categories- firewall, voice, VPN, APIs, Proxy, MPLS, layer 2, and so forth. Unfortunately, that really does make me more effective troubleshooting than the specialists on the team, even fairly experienced ones. But it also makes me most valuable at an architectural level. So I'm working hard to make sure that everything is documented and their is 2 deep understanding of the things I worked on so that I can be free to build up the future.

The irreplaceable man/woman can't ever get a real promotion because they'll be stuck at whatever they are doing today. Being valuable and a 'bargain' at almost any price is much better.

[+] spyspy|6 years ago|reply
Letting one engineer obtain so much domain knowledge that they become a single point of failure in an organization strikes me as strictly a management failure. His manager ignored the bus factor and then when he/she realized it was an issue they just... did nothing? Because it'd be hard?
[+] vincent-toups|6 years ago|reply
I say this every time the mythical 10x engineer thing shows up.

I've _never_ heard of a 10x salary difference for engineers. If you are a 10x engineer, that strongly suggests you're giving away free productivity to your boss.

If you own your own company, great! Even better would be to give 2x of your productivity to your boss, which is probably more than you're being compensated for, and use the 8x leftover for your own enrichment.

But there is almost literally no way that you are being fairly compensated if you really are 10 times as productive as your average engineer.

[+] cloverich|6 years ago|reply
> I've _never_ heard of a 10x salary difference for engineers.

A Netflix engineer was on HN the other day claiming they make 800k and work from home.

> But there is almost literally no way that you are being fairly compensated if you really are 10 times as productive as your average engineer.

(Assuming they exist, of course) I'd wager if a 10x engineer was involved in a mundane business, they would be 10x without giving 100% of their time. Or rather, they'd give 100% of their time sometimes, and 20% of their time more often.

[+] bartwe|6 years ago|reply
What is the term for being a bit too eager junior making some systems that become business critical and then getting some second hand shame for making something the existing team can't support.