top | item 10958579

I believe in the 10x engineer, but

145 points| admp | 10 years ago |erikbern.com

164 comments

order
[+] blakesterz|10 years ago|reply
I work with a 10x engineer, I know they exist. Or at least ONE exists. We'd be DEAD without him. He's by far the smartest, fastest, and most thorough person I've worked with since starting in IT in 2000. I'm not sure he knows how good he really is and I am afraid some day he'll figure it out and leave. He's also generally nice and humble, and at the same time can be fierce and mean to get things done. He makes me feel old dumb and slow, and I love it.
[+] NDizzle|10 years ago|reply
I think I am a 10x engineer sometimes. It's kind of like the tide. Sometimes it's there, sometimes it isn't. Also, if you think you are something, are you really that something?

Last week I was pulled into the tail end of a project which had just got pushed back to the end of February for complications. The project was now billed at 3 guys, 3 weeks. After spending an hour in a meeting I came up with a solution that is going to be implemented on Tuesday by one guy. Same risk, but a fraction of the work.

I know most of the time when you think about 10xers you think about some kind of math / programming / algorithm god, but don't discount big picture skills. Unfortunately I'm not sure how you teach big picture skills or put them down on a resume.

[+] marktangotango|10 years ago|reply
I worked with a guy who everyone thought was 10x, I thought he was shit. This guy and another built all the systems for this company, and a product that was the cash cow. Started in 2005 using struts. Everything they built was struts. They duplicated the entire code base for the next web app. There were like four versions of this thing customized to do different things (ie trivial shit like the web sign up form). These guys couldn't even factor out the data access/service stuff into separate modules for reuse.

When it came time to learn Spring, this guy flailed, and wrote Spring like it was struts. In addition, he was a pontificating jack ass, real abrasive personality.

The non technical and business users thought this guy was a super star. I've only quit a job once because of personalities, and this was that time.

[+] j45|10 years ago|reply
10x engineers definitely exist. Know a few and have hired a few. They are not 10x compared to anyone ever, but generally 10x to their currently aged or experienced peers.

They learn for fun. They are endlessly curious. They are incredibly humble and get things done.

They do get more done in their part time hours in the evenings than a full time equivalent. More importantly, 10x really helps with building the quick things quickly and growing them as quickly as possible.

[+] jonsterling|10 years ago|reply
Why would you want to work with someone who is "fierce and mean"? Sounds totally unprofessional.
[+] emcq|10 years ago|reply
This describes me in the past. Don't let him date someone from HR, it opens up Pandora's box about relative value and standard practices with salary negotiation. The largest factor for salary at most companies is how much you ask for rather than your skills or contributions.

However there may be other things he values besides money. Continue to make those great and I'm sure he will continue to enjoy being your coworker.

[+] dahart|10 years ago|reply
My translation: labeling an engineer as 10x may be mis-attributing the discrepancy to individual people, when the causes are most often environmental. Sure, there are outstanding performers and catastrophic duds every once in a while, they do exist. But more often than not your performance is less a reflection of innate skill and more a reflection of things like your managers, your situation and motivation, your momentum and familiarity with your tools, the mood in your office, your level of ownership, etc., etc..

I have been both subject and observer of situations where someone's performance was amazing in some cases and lacking at best in others. I have experienced being 10x when the situation was right, and 0.5x when it was wrong.

So how do you make a 10x environment on purpose? I've tried on teams I've led, and it is by no means easy. Can anyone with concrete experience share reliable tips?

[+] rm999|10 years ago|reply
>So how do you make a 10x environment on purpose?

I think there are two necessary parts:

1. A high level, well-known, agreed-upon plan. Everyone needs to know what they're working towards, why they're working on it, and how they'll do it. This lets people work largely autonomously but towards the same goal, reducing friction. I've been a 0.5x engineer because my manager told me what I needed to build but not why. So, I'd build something, and the feedback would be "no, that's not exactly right, just do it this way". What could have taken an hour would take days while I slowly figured out what he was imagining.

2. As few blockers as possible. Use tools and languages the whole team knows or can learn well. Create a collaborative environment where people can ask questions instead of spending hours working through tiny issues. The manager should make removing external blockers one of their highest priorities.

This is what allows people to work at peak efficiency. I think when there's nothing holding them back, most good engineers are "10x" engineers.

[+] maxxxxx|10 years ago|reply
I think we should strive to avoid 0.1x environments. I work in a cube farm and there are plenty of days when my neighbors are so loud that my productivity goes to 0.1x or less. When I work at home on Fridays I often get more than than during the 4 preceding workdays.

Add to this constant meaningless meetings where everybody is late and unprepared.

I often hear "I will work tonight or on the weekend so I get things done". I don't understand why everybody seems to accept that the workplace environment is bad and nothing can be done. I have raised this to senior management quite a few times but they just shrug their shoulders.

[+] danharaj|10 years ago|reply
It doesn't matter if you're a 10x peanut butter sandwich maker; no one is 10x all the time.

There are projects, and there are chores. Everyone wants to work on the projects all of the time, but that is wasteful. When one is productive, they should work on the projects, and when one isn't productive, they should do the chores. That's a habit that can be learned.

The only person who knows what they should be working on is themself. So, autonomy is important. You can't have a person with a habit of using their time most effectively who also isn't in charge of when and how they spend their time. Self-management is a skill that can be taught.

[+] bguthrie|10 years ago|reply
I think that talking about a 10x engineer or 0.5x engineer misses the right optimization: good software is built in teams, so build a strong team. Cross-skilling, pairing, and blocker removal all help give people a collective sense of commitment and autonomy: you have the right to touch the systems you need to accomplish your job, and it's my job as servant-leader to remove whatever's stopping you. But you have less leverage and less resilience without that sense of collective ownership.

I've likewise experienced both 10x and 0.5x situations. The latter invariably arose from sitting in a corner, divorced from context or support. The former is extremely rare and I've only achieved it on personal projects. But I'll settle for a motivated and healthy team of 5xers any day.

[+] dustingetz|10 years ago|reply
Pair programming, I think, can lead to a 10x environment, if the culture is built around pairing.
[+] xyzzy4|10 years ago|reply
Work with easy to understand frameworks, and don't try to link together tons of complex systems that are hard to configure and require outside support. Don't have nitpicking code reviews. Don't have complex and bureaucratic process rules for code check in. Don't have build and test environments that break all the time. Don't have too many meetings. Don't have deadlines or ETAs for engineers, this makes them stressed out. Allow for flexible work hours.
[+] johansch|10 years ago|reply
Culture/environment is a critical enabler, but alone it doesn't create 10x people.
[+] ma2rten|10 years ago|reply
I don't think being a 10x engineer is about engagement, work ethics, ability to code fast or anything like that.

It's about making great decisions. That includes using the right tools, using libraries instead of inventing everything yourself, not using libraries when not appropriate and pushing back on a product decision that does not make sense.

[+] overgard|10 years ago|reply
Right, which is why 10x engineers don't really exist in places that don't value some level of engineer autonomy -- you can't make great decisions if you can't make decisions at all.
[+] braythwayt|10 years ago|reply
Pick one of the following conjectures and argue both sides:

a. There are no 10x engineers, just environments where there is a 10x discrepancy in productivity.

b. There are no 10x engineers, just 10x yardsticks.

c. There are no 10x engineers, but plenty of .1x engineers.

[+] StavrosK|10 years ago|reply
C is self-contradicting. "10x engineer" means "an engineer that's ten times better than most others", and if most others are ten times worse than someone, then that person is a 10x engineer.

Also, I hate the term "10x engineer". Everything follows a normal distribution.

[+] pmelendez|10 years ago|reply
> There are no 10x engineers, but plenty of .1x engineers.

If there are plenty of 0.1x engineers, then an x engineer is actually 10 times better. The units doesn't matter if the ratio keeps being the same.

[+] DonHopkins|10 years ago|reply
Is 10x in binary or hex?

The dial on a binary 10x engineer goes to 2.

The dial on a hex 10x engineer goes to 16.

[+] danbruc|10 years ago|reply
I think the question of 10x engineers is actually ill-defined. There are developers I can consistently outperform by a factor of ten, do in half a day what they spent an entire week on and end up with a better solution. They are not necessarily fresh out of school but somehow managed to survive year after year even though they don't even know the language they are developing in. And I don't mean the ugly details of the memory model but basics for professional developers like generics or interfaces.

But what does that proof? I think nobody doubts that the difference between a bad developer and a good one can be a factor of ten or more. Outperforming a good developer by a factor of ten is a totally different story. It is certainly possible if you have some good insight, if you spot some non-obvious structure in the problem that you can exploit to make your life a lot easier. But doing this consistently is probably at least a rear feat.

So the question is to whom do we compare our 10x engineer candidates? The average one maybe, but the average of what? Your team, your company, the entire industry? I would argue that the age respectively experience structure is really important. When you begin you learn a programming language but it takes some time until you really learn programming, until you reach the point that the languages no longer matters and you are able to focus on mapping your problems to more abstract concepts and typing it out in some language becomes the boring but necessary part of your work.

[+] TheOtherHobbes|10 years ago|reply
It proves the industry pays people who are barely competent, and that the median professional standard isn't high.

Possibly related - it's interesting that everyone has heard of the 10X developer, but there's no equivalent concept of a 10X company or department, or even of 10X or 0.1X management.

It's not that the concepts aren't obvious once they're mentioned, it's that - unlike the 10X programmer - they're often mentioned.

Is it naive to wonder if management would improve if managers had to worry about getting tagged with the 0.1X label?

[+] tsunamifury|10 years ago|reply
10x engineer is a relative comparison based on the engineers around you, not a universal ranking. Most of this can be explained by managers who dont know what they don't know. (Never hired or managed hundreds or thousands)

I have met, hired, and worked with engineers of all stripes and tend to think this idea is just a mental way of covering that "we have a guy our company or team relies on to a high risk degree".

10x engineers are a bad sign because it means she or he probably belongs with a better crew... And someday either they'll realize that or leave for another reason, exposing our over reliance on them.

[+] overgard|10 years ago|reply
I think it's sort of funny when people think 10x engineers don't exist. For most of us, it's pretty obvious because we've probably worked with one. (If you haven't: you might want to rethink your job choices :-))

If you think about it, there's essentially no physical or finite limit to how much you can get done in a day with software (outside of, like, typing speed), so it boils down to how fast and comprehensively you can think. So you might think, well, nobody is 10x smarter than anyone else, and that's probably true, but you could certainly imagine someone that has learned 10x more and has 10x more experience and given the right context can apply that effectively.

I strongly agree with the no-jerks part. I think, short term, you can be a jerk and still be effective, but long term if you're unpleasant you'll develop blind spots because people don't want to deal with you. Once you have significant blind spots, I suspect it's very hard to maintain the 10x pace. There is of course, a strong counter example here, which would be someone like linus torvalds (who is both extremely effective, and, by his own admission, kind of a jerk), but I think while exceptions like that exist they're not the common case.

[+] lotharbot|10 years ago|reply
To be a 10x engineer, you don't have to be 10x smarter. There are a lot of ways to get to an overall multiplier of 10x.

You can be 2x smarter and 2x more experienced and have 2x better research skills and 1.25x better administrative skills/support (time management, office layout, etc.) with the net result of 10x effectiveness.

You can be 12.2% better in 20 different but mutually-reinforcing skill areas.

Or, thought of a different way, an ordinary engineer might solve 90 problems easily but get bottlenecked on 10 challenges. You can approach 10x by solving 99 problems easily and only bottlenecking on one. Being an outlier isn't necessarily a matter of one big advantage, but can be about combining a lot of small advantages.

[+] alcima|10 years ago|reply
It isn't about the total intelligence - it is about the excess intelligence. If someone has to have a programming intelligence of 100 to do some job, you might only need a pi of 110 to be 10x them, not 1000. Very similiar concept to climb performance based on excess power in a twin engine airplane.
[+] brikis98|10 years ago|reply
As I've written before [1], I find it confusing that some people believe "10x" or "rockstar developers" are a myth. Are star athletes, artists, writers, and, uh, rock stars, a myth? Why would the programming profession be the only one where there are no major differences in performance?

[1] http://www.ybrikman.com/writing/2013/09/29/the-10x-developer...

[+] mattmanser|10 years ago|reply
There are a couple of hundred 10x footballers or artists or writers or what ever compared to.the millions of people who try to do it.

Somehow there are 10s of thousands of people who think they are 10x engineers or have somehow hired a 10x engineer.

That's why they aren't actually all these 10x engineers people talk about.

[+] RyanZAG|10 years ago|reply
I agree with a lot of the points, but..

> Most of the 10x factor is most likely explained by team and company factors (process, tech stack, etc) and applies to everyone in the team/company. Intra-team variation is thus much smaller than 10x (even controlling for the fact that companies tend to attract people of equal caliber). Nature vs nurture…

Definitely not true! I have been in companies where 1 engineer outperformed 10 others with everything else being the same and on the same team. It was really obvious too. It does happen. eg, he could handle 10 bug or feature requests in the same time it took some of the other engineers to handle 1.

[+] voidlogic|10 years ago|reply
>Definitely not true! I have been in companies where 1 engineer outperformed 10 others with everything else being the same and on the same team. It was really obvious too. It does happen.

I believe 2x, 3x maybe 4x but 10x seems far fetched. Are you normalizing for hours worked in your appraisal of performance?

Per the arguments laid out in Peopleware I am opposed to my team members working more than 45-50 hours a week outside of rare crunch times.

[+] toredash|10 years ago|reply
Of course it happens, few things are written in stone
[+] throwthis|10 years ago|reply
> I’ve never met the legendary “10x jerk”. Anecdotally the outperforming engineers are generally nice and humble.

Anecdotally, I have.

[+] johansch|10 years ago|reply
During the past 19 years in software I have had the pleasure of working closely with five different 10x engineers.

None of them have been assholes - the opposite actually - once you've gotten to know them. If I were to generalize: most of them are not particularly extroverted, so that may be a cause of misunderstanding.

Some of the 3-5x engineers (they also exist!) have a tendency to treat people as "idiots" until they have proven themselves worthy intellectually/engineering-wise.

[+] rewqfdsa|10 years ago|reply
A lot of people suggest that 10x programmers aren't jerks because they reflexively disqualify jerks from the 10x category. That's wrong and reflects wishful thinking. Do they think Linus is a middling developer because he's also a jerk?
[+] jftuga|10 years ago|reply
What were they like?
[+] preordained|10 years ago|reply
The 10x thing is like some weird, less quantifiable, engineer analog to Mensa.
[+] whatever_dude|10 years ago|reply
IMO a 10x engineer is, more often than not, just a well-positioned engineer - the right person at the right place and right time.

Someone working within their field of expertise, with the tools to get it done, and without the typical roadblocks that stand in the way. Hopefully you've been there and know how it feels.

And maybe you've also been at the other side of the spectrum, working with an ever-changing, badly designed and documented piece of technology, with many surprise problems biting you in the ass, ever changing goals, and bad management decisions.

I've been a 10x engineer at times. But I know I've also been a 0.5x engineer. The knowledge on how to solve a problem and how to find an answer doesn't change, but the perceived throughput of a person definitely does.

[+] YngwieMalware|10 years ago|reply
The "10x engineer" I worked for quit and left me with an extremely over-complicated piece of software to manage. He's a sweet guy and a good friend, but really left me holding the bag because he was not happy.
[+] StavrosK|10 years ago|reply
Did they build it? Because I dispute that someone is a 10x engineer if they build overcomplicated pieces of software. A good engineer builds according to the business' needs, maintainability, scalability, and a whole bunch of other considerations. Just building the cleverest thing you can build is poor engineering.
[+] anupshinde|10 years ago|reply
I think I have been a 10x programmer having being called that and I am like that because it suits my work style. Its hard for me to work slow. But its also not possible to be 10x all the time - I am mostly that way in the early phases of the project and the X multiplier gradually comes down to 1 or 2. For example - when it comes to defect fixing in somebody else's code, devops and monotonous stuff - I might be less than 1x.

However, I have noticed that whenever I am called 10X guy, something happens and I ultimately end up to being 1x or leaving the company. The following are kind of negative thoughts/symptoms that occurred

1. In most companies - it means doing 10 times work while getting paid just 5-20% higher instead of 10 times higher (here 10 is just an example multiplier).

2. It means I am a workaholic - and others enjoying the benefits of my work because of (1)

3. The above two can potentially result into toxicity build up within me and then within the team. It does happen occasionally and I have to work harder to avoid it.

4. You are not with your own kind (like species on a mental plane and not race/religion) and your growth is limited. I ended up leaving companies or teams when I was called out-performer consistently - not because I was an out performer, but because I was not learning much from the team. (On 4) - I tried to stay in one company like this, because it was hard for them to fire me for obvious reasons. Ultimately I got fed up after few years. I also unsuccessfully tried to get fired by deliberately underperforming, because the severance was too good - but they wouldn't derate me or fire me. Finally I resigned and left on good terms. Retrospectively thinking, I wasted those few precious years of my life

5. One gets used to elitism - and that is a very bad thing. It closes the persons mind. I remember how I disregarded an amazing solution from a junior team member because I was comfortable with my way of doing things. Unfortunately, I realized the mistake a bit too late.

6. If I am a rabbit I am constantly worried about the turtles - they will beat me with consistent performance over longer run because I will get bored of the race.

Also, I don't think having a 10x engineer in a team as a good thing. And if everybody is 10x, then nobody is - which can be good.

[+] sleazebreeze|10 years ago|reply
On #5: This same thing happened to me. A junior dev came up with an ingenious solution for something that would have taken weeks and been a major maintenance headache going forward. The team had been putting off developing it for months because of that. She proposed the idea to me and asked if it was an awful hack and my initial reaction was "yes", but then I swallowed my pride enough to add on "..but here's how we can make it work".
[+] lhnz|10 years ago|reply
> The easiest way to be a 10x engineer is to make 10 other engineers 2x more efficient.

I thought being a 10x engineer meant being able to achieve a task which could not be achieved by 10 average engineers.

Does it mean the ability to do 10x the amount of work than everybody else? That doesn't seem extraordinary, that's mostly a case of focus.

In general I dislike the egotism attached to the idea that one engineer is the cause of other engineer's productivity. That's a lame way of self-congratulating.

[+] collyw|10 years ago|reply
but... Error establishing a database connection

Almost seem appropriate given the title.

I personally see my own productivity improve by about 4 fold given the right conditions - i.e. being able to focus on the one task at hand, not jumping between projects and not being interrupted with questions every half hour. Anyway that's my comment having not read the article.

[+] jqm|10 years ago|reply
I've been a 10x developer. But it wasn't all me that did it... it was those around me being .1x. So ya... it does take a team to make 10x programmer.

I can't claim I was 10x smarter than my coworkers. I wasn't. But I knew how to use tools that were at least 2x better and put in at least 5x the effort. Looking back it's amazing how little effort my co-workers (and boss) did put in at that place. Public sector for you I guess. I soon moved on to greener pastures. Some places value 10x. But other places it's better to do the bare minimum to avoid threatening anyone or raising the expectation bar. Sad working conditions best avoided by those with desire to create or improve. A good place for those who claim 10x developers don't exist to seek employment.