Hacker News new | ask | show | jobs
by dexen 4649 days ago
After reading numerous posts on the subject of 10x software engineers, I reckon they fall mostly into two categories:

- `I have worked with / seen code of such ones' (often examples follow)

- `there were no such ones on any team I ever managed', with OP falling into this category.

Which is to say, the existence (or absence) of 10x software engineers appears to be party recognition problem -- managers do not want to believe one `rockstar' is responsible for most of team's output.

The other part, is the sampling bias: managers don't get to work with the Torvalds, Bellards, etc. Such software engineers often don't need to be, or aren't managed while producing their most important code. Neither they do respond to ``we are hiring rockstars'' types of job ads...

3 comments

There also seems to be some ideological motivation for claiming rockstars don't exist.

The existence of rockstars provides fodder for individualist ideologies. Many people are more collectivist, so therefore feel the need to dispute the existence of rockstars. This is a little bit evident here - you need a rockstar team, with diversity. It's far more evident in the last post on this same topic.

(Not quite a dupe, but it might as well be. https://medium.com/about-work/6aedba30ecfe )

Amusingly, it's also a very corporate philosophy. "No programmer is worth more than any other, therefore to advance you must enter management." Tends to be self selecting in such corporations, since everyone who isn't mediocre leaves.

> No programmer is worth more than any other

I don't think that's what's being said. IMHO the message is:

- No programmer is worth 10x the average. (though some might be worth 1/10 * the average).

- A high-functioning team is more important than a high-functioning individual, and these two are sometimes at odds if you give free rein to the "individualist ideologies".

Both are debatable and IMHO are often true, but "No programmer is worth more than any other", i.e. "all programmers have exactly the same worth" is not Hanselman's point. It is an corporate anti-pattern.

"each person has different strengths and weaknesses and is growing at their own rate" is recognised implicitly in a healthy working environment. Whether management gets it or not.

Both are debatable and IMHO are often true, but "No programmer is worth more than any other", i.e. "all programmers have exactly the same worth" is a straight-up straw man.

It's an exaggeration (I probably should have been more clear), not a straw man. Obviously big corporations have different levels of engineers, but many of them claim engineers top out at a certain point. Your claim that "no programmer is worth 10x the average" does imply this. If programmers max out at being only 3x better than average (or whatever the multiplier is), to get beyond that level one needs to be a manager.

Interestingly, tech companies, trading desks, and other places where technology really matters frequently don't view things this way.

> Your claim that "no programmer is worth 10x the average" does imply this

Those claims are debatable and often true, not always true. As opposed to straw men which aren't even debatable.

I've seen less actual 10* engineers and more high-functioning individualistic coders who maintain whole systems on their own, and at some point leave the company (most people change jobs at some point, but in their case it was accompanied by "nobody understands what I do" noises) whereupon it's unmaintainable (in one case, running on their dev machine against explicit instruction with no source or login details).

Your company may hit the jackpot and hire a budding Linus Torvalds or John Carmack, but the odds are bad and the guy who thinks he's a rockstar is more likely to be a good coder, but an egotistical person. Lots of actual musician rockstars are assholes too.

A well-functioning team is a much better bet. Lottery tickets are a poor investment.

I know that trading desks may disagree, but IMHO that's a defect of the stock-market gambling culture that they come from (where someone's guaranteed to beat the market this year. Find them and call them a genius!). I've worked in various tech companies, and that mindset is not universal there. It's not even welcome to me.

You have somehow re-defined software engineer performance as a mere function of company bottom-line, and ended up measuring performance of individual software developers by proxy of long-term company performance. There are two problems with it.

First, not all software engineers actually do commercially work on commercial software -- as a quick example, Con Kolivas, who is an anaesthesiologist by day and kernel hacker in spare time. Others may work on commerical software by themselves, without any external team or management involved; think Colin Percival. I would even wager a guess that some of the best software was created in a non-commercial way, say, Linux kernel -- at least the early versions of it.

Second, the impact any software engineer has on company bottom line is much affected by other aspects of a company. In a symbolic notation, you could say:

  BOTTOMLINE_IMPACT := RISK_MANAGEMENT(SALES(TEAM_MANAGEMENT(THE_SOFTWARE_DEVELOPER(EXISTING_CODEBASE)))).
Invoking the Amdahl's law -- even if you had a 10x SOFTWARE_DEVELOPER, performance of the whole system will be limited by the other factors. In my limited experience, the RISK_MANAGEMENT (of software development and use) part is the least understood one those days.
> You have somehow re-defined software engineer performance as a mere function of company bottom-line,

Absolutely.

While everything you say is true, building the right thing is as important as building the thing right. If you are working for a company, and what you do doesn't benefit that company, you might as well go home.

Is it your belief that no "high-functioning individualistic coder who maintain[s] [a] whole system on their own" can also produce a maintainable system? If one can, that's your 10x coder right there.

I'm getting the impression that you believe 10x coders exist but merely dislike them.

By "high-functioning" I meant "good enough to be recognised as above average, but not 10 * good". My point about maintainability is that long-term benefit can be a lot less than it looks in the short term, when "individualistic" people who "know they're very good" are involved.

> If one can, that's your 10x coder right there

It can happen, it's just not likely enough to stake your business on. What I dislike is the cult of rockstar programmers. If there are 100 job ads for rockstars, are there really 500 actual rockstars showing up for those interviews? No. All this cult is doing is encouraging harmful egoism.

It's all in the first few lines of the article:

> Myth of the Rockstar Programmer: Calling out rockstars demotivates the team. Telling someone they are a rockstar may cause them to actually believe it

In the observation that kicked off the meme, a 10x engineer was someone who was 10x more productive than the least productive members of the team, not 10x more productive than the average.
Yeah. If the least productive member of the team is clueless and gets nothing done, then a competent programmer is literally infinitely more productive than that. It's not a very well-calibrated metric.
It's pretty typical, I'd say, for the least productive member of a set of 10 programmers to have negative productivity...
That is a rigged comparison but too often that matches reality. Everyone in the team works on massive Big Balls Of Mud in C#, ASP.NET. One guy in the team builds a new app in Python with Django in one tenth the time it would take to do it in C#/ASP.NET. Is this guy a rock star? Or is this a symptom of a toxic IT environment created by incompetent management who simply have no concept of "accidental complexity" and "technical debt".

So many enterprise IT shops are effectively bankrupt due to technical debt and the only thing propping them up is the cash influx of the enterprise that owns them. This affects J2EE shops just as much as .NET ones.

And the multicore future, end of Moore's law, has effectively made all of their software, both built software and purchased software, obsolete. It is not a pretty picture, but we will see this all play out over the next few years. That is far more important than chasing after the fantasy of the 10x white knight who will save you.

Exactly. Thanks.
+1. When you're concerned with ensuring every single developer can read, understand, and rewrite your code, you don't have a place for the best; because the average and worst devs won't grasp what the best does.
Often it is quite the opposite: when the best is finished the result is smaller and much more readable.

I am allowed to be opinionated, I have seen both forms in well paid consultant jobs.

The best avoid tangled, excessively-layered code, but often are inclined to use reflection, multi-indirection, or other tools that mediocre programmers may not understand.
Agreed. And it is true 10x developers make complex problems disappear by realizing the code does not have to be written, by skipping intermediate steps, or by embracing the complexity if the problem and not code until the problem is understood instead of piling hack upon hack.
First, is important to search the truth. I think we are discussing if 1 + 1 is equal to 2 or not. 10X engineers exist (I would say that 100X ones too). If you found even one it is enough to probe this fact.

You can see similar distributions with scientists or other professionals.

With so much mention of 10x on HN I'm surprised Grant Cardone isn't on here or at tech conferences selling his book. That brings me to my point, a car salesman selling 10 times as much cars as other salesmen is clearly 10x, how do you determine that for a developer? To me it seems like there are so many variables that such a distinction would always be incorrect.
When I see a developer that can work on a complex product alone in short time and almost no bugs, well this a developer in the 10X league.
Sure, if the idea is to make the 10 in 10x meaningless. My point was that saying something is 10X implies that it is quantifiable. That developer can be assumed to be above average but you don't know that he's 10x. Maybe he worked in the same domain for a long time or did exactly the same work before. I agree that if someone works in the same domain for a long time eventually they will be an expert but as a developer saying that he/she is 10x doesn't mean much. If I write social networks for 10 years then I can appear to be 10x for all things social but how productive am I outside of that? I guess the more appropriate discussion is what is a developer 10x in.
I agree. Now I am following you.

The discussion about what a 10x developer means is really interesting: specialization and long time commitment to specific fields pays a very important part. I don't think you can be a 10X developer in an unrelated specialty. We can compare this with experiments about chess masters playing a new game with modified rules, they are not masters anymore.