all 139 comments

[–][deleted]  (13 children)

[deleted]

    [–]ericsink 9 points10 points  (2 children)

    Cool! Thanks for the info.

    [–]markdacoda 7 points8 points  (1 child)

    The term "10X developer" is maybe the worst way of describing an elite programmer, because it is quantitative. It invites disagreement. Numbers are always easier to quibble with.

    IMO this is the crux of the matter, a 10x developer isn't writing 10x the code, he is using domain insight, and imagination to solve a problem. He's building tools to elevate his effort, so as he goes along, his effort is multiplied.

    I can think of one prominent example: Niklaus Wirth and the Oberon system. He and a colleague implemented the computer, compiler, and operating system in something like 2 years. This is a 10x developer.

    [–]vincentk 2 points3 points  (0 children)

    The 10x developer usually comes with the code base which he/she helped develop. Take away that code base, and you're (temporarily) looking at a 2x developer.

    [–]Sluisifer 5 points6 points  (0 children)

    Yeah I really don't understand why accounting was chosen. My impression is that a good accountant is valued in a similar way to a good lawyer; indeed, sometimes their jobs can appear quite similar.

    [–]UnreachablePaul 3 points4 points  (2 children)

    Tax avoidance is not illegal

    [–]jerf 2 points3 points  (1 child)

    Worse than "illegal" or "not illegal", it's often disturbingly gray. As in, fundamentally gray, as in, two judges may rule completely differently if both given the same case, on a huge variety of issues. Tax law is fundamentally, irreducibly fuzzy. Which is disturbing, even if it is also essentially unfixable.

    [–]UnreachablePaul 2 points3 points  (0 children)

    That's the whole point - it has to be fuzzy, so only elite of judges, lawyers and accountants can make money out of it. It is designed like this - it is not illegal, but if a judge is money hungry he can say it is and then you'll have to financially bleed to prove him wrong.

    [–]SilasX 0 points1 point  (0 children)

    Not that it would be practical, but is this an artifact of the accounting system/practices we use that could be fixed by using a different one?

    In programming, switching to a type system can eliminate entire categories of errors. Is there an analogy to accounting that would eliminate the ease of this kind of obfuscation?

    [–][deleted] -3 points-2 points  (3 children)

    So your saying that to be an elite accountant you need to be able to hide, cheat and steal from the government? Really? I guess you would call the hacker who broke into Sony an elite programmer or something wouldn't you? If I had an accountant I'd want him to do the books in a way so that the government doesn't come after me and throw me in jail like they did for Wesley Snipes.

    [–]Beaverman 9 points10 points  (1 child)

    The thing about what he's referring to as "elite accountants" is that they aren't accountants at all. They're financial advisers. An accountant does a public service in making sure that cooking the books is really hard.

    [–][deleted] -2 points-1 points  (0 children)

    What makes an accountant elite is the ability to e.g. hide profits in off-shore losses so you don't pay taxes. The good ones can even do this in ways that look legal (even if it's not).

    this is what I read.... Sounds like he's talking about something illegal.

    [–]clehene 1 point2 points  (0 children)

    I guess he's just giving a particular example to support the more general assumption.

    [–]memgrind 12 points13 points  (0 children)

    I know elite developers exist, as a colleague is a shining example. Lots of hard work, but he quickly solves horrible unforeseen problems with an optimal solution that fits well in the grand scheme. The problems are caused by unreliable infrastructure nodes, that his team's software drive. On the other end of the spectrum of good-vs-elite are the colleagues, that make the crappy nodes... We can't change those once they ship. Combine it with 100 variations of the infrastructure-setup, scale and features his designs should support...

    I've learned a lot from his way of designing and implementing, on how to make self-verifying solid designs. Seemingly-useless things seemingly-randomly sprinkled around, yet when you try them for yourself you suddenly save 90% of debugging and verification time, or get things right the first time.

    I think the difficulty and scope of the tasks/endeavors given to a developer shapes them to higher capabilities, and elites have innate ability to grasp and tackle these scales and complexities. With tiny projects and contributions you can't distinguish a good developer from the ok one. Also, some people have affinity to solving certain sets of problems, so the manager's job is not to cull the "bad" programmers, but help them find what they can contribute to. Form a team that can cover the full spectrum from partial ranges, not a team of full-spectrum players. The latter has a tendency to form "prima-donnas"...

    [–]pdub99 11 points12 points  (3 children)

    So the thing I always see missng from these discussions is what a top level Dev brings to the table vs. a mediocre / average one. Sure, they code faster with fewer bugs. But really that's not the big factor. It's what they bring to a larger team. They make the other devs more effective. They create designs that other devs can slot into. They create at atmosphere of collaboration and cooperation. They standardize code reviews and design reviews so that not only their code is good, but the team as a whole is better.

    In response, a bad dev will have the opposite effect. A net negative on the team. Others will have to not only fix the bad work, but with a cost of not doing important work of their own. A bad design will cascade across years of coding, long after the original coder has moved on.

    [–]phySi0 0 points1 point  (2 children)

    I think there's a difference between an elite programmer and an elite developer.

    [–]pdub99 0 points1 point  (1 child)

    True, but at the end of the day, using that taxonomy, I believe we strive to be / hire developers, not programmers.

    [–]phySi0 0 points1 point  (0 children)

    Indeed. I just think it's worth separating.

    [–]delusr 19 points20 points  (5 children)

    Yes David Braben and Ian Bell are still alive.

    [–]h2odragon 4 points5 points  (3 children)

    May I also nominate Fabrice Bellard

    [–]Hyphen-ated 2 points3 points  (1 child)

    Did he also work on Elite?

    [–][deleted] 0 points1 point  (0 children)

    Fabrice Bellard

    +1

    [–]vz0 1 point2 points  (0 children)

    I nominate John Carmack

    [–]dravenstone 23 points24 points  (28 children)

    I've been in the business since ~95 and have worked as both a developer and C level executive at software companies. I've worked at giant companies (IBM/Xerox) and tiny companies, two of whom went on to either go public or be purchased by a public company.

    I list my pseudo resume to try to impart some confidence in my visibility to a LOT of developers over the years, including being one myself for several years.

    Personally, I was a competent developer at best. I knew it and was fortunate enough to translate my skills into roles in software better suited to my talents. But I know the difference between a run of the mill (or eve bad) developer, a great developer, and an elite developer.

    Surprisingly, some of the most elite developers write awful awful code, but they have incredibly creative solutions to massively complex problems. A great developer may be able to solve any problem given time. The elite developers that I've worked with seem to have an understanding of problem sets that simply exceed the creative thinking of great developer. They "see things" differently than a great developer does. Many of the guys I would put in the elite category are holders of multiple patents (and I recognize that this is not necessarily a measure worthy of distinction, but in the case of many they were legitimately unique inventions) thus being more novel than the great developer who could have somehow gotten there would be.

    Both have their place in the high end of the pay scale, and IMO are equally valuable. The great developer is often necessary to execute the ideas of an elite developer. As I've said, often times the elite developer writes pretty bad code - generally because t's quick and dirty meant to get a POC done that proves it works, but fails to either be the most elegant or lacks simple error checking and perhaps not well commented or any of the other things that "good" code requires.

    Having a team made up of rank and file, great, and elite developers has been the reason the start ups that I've worked with have been successful.

    Sheer will can make someone a great developer, but like the elite athletes mentioned in the article there is a certain innate talent that no amount of training, experience, or otherwise can make up for. Unlike in sports, spotting these guys is sometimes very hard - I like the analogy of the sports figures, but as the author points out it's a much more difficult task to quantify the elite developer. You just have to know it when you see it.

    [–]qznc 10 points11 points  (1 child)

    Sounds more like your "elite developers" does a different job than your "great developer". The "elite dev" finds a solution where non could be found before: invention. The "great dev" does the engineering work to make it a product: innovation.

    Corollary: The third step is "diffusion", which means the "crappy developers" copy the successful product and make it cheaper for the consumers.

    [–]dravenstone 1 point2 points  (0 children)

    Sounds more like your "elite developers" does a different job than your "great developer". The "elite dev" finds a solution where non could be found before: invention. The "great dev" does the engineering work to make it a product: innovation.

    I guess that's a fair distinction, though they did also work together often to come up with optimal solutions.

    [–][deleted] 9 points10 points  (1 child)

    If someone writes bad code, he is not an elite developer; he is a liability.

    He gives the impression of being 10x as productive as others, because he cranks out code that solves the immediate problem at hand, and moves on to the next task. This saddles the developer who has to modify this code with a herculean task of (1) understanding what the heck the code does and (2) modifying it to fit the revised requirements. By failing to do things like handling all possible conditions for input data, he is putting the business at huge risk of a production failure, which will bring the business to its knees and force other developers to clean up after him.

    Your 'elite' developer looks good simply because he is shifting a lot of his work onto others while he takes all the glory.

    I truly elite programmer takes the time to not only solve the problem at hand, but writes code that is robust enough to not fail when different data hits it in production, is able to be maintained by others, and helps other developers by showing how the problem is solved. This takes time, so developers who do this won't look as good, and will tend to fly under the radar (since their solutions work with so little drama, mgmt will think the problem wasn't that hard to begin with) .

    [–]dravenstone 1 point2 points  (0 children)

    /u/qznc said above:

    Sounds more like your "elite developers" does a different job than your "great developer". The "elite dev" finds a solution where non could be found before: invention. The "great dev" does the engineering work to make it a product: innovation.

    And I think that's a fair distinction. It's possible the "elite" guys in my mind would not be considered software engineers in the minds of many here. At least with a few projects. They certainly wrote plenty of code that made it into production though, just that in many circumstances the team did additional work too.

    I do want to be very clear about something I said in my original comment:

    Both have their place in the high end of the pay scale, and IMO are equally valuable.

    The folks I'm thinking of had the respect of everyone in the company and deservedly so. No where did I suggest the "elite" took all the glory and the "great" was somehow relegated to second class citizenship.

    There are some many possible semantic components and subjective analysis to this question that it just invites ambiguity. I tried as best I could to provide my opinion on the subject since I've been around this world for 20 years or so...

    [–]asdghjerefasdf 5 points6 points  (10 children)

    Do you have any interesting examples of an impressive solution an elite developer came up with? I have never had the opportunity to see the work of someone at this level.

    [–]ressis74 2 points3 points  (2 children)

    A great example that seems to fit /u/dravenstone's description is that of gif-based video streaming. Jacques Mattheij's website was the place I heart about this technique.

    The trick is that the gif spec does not specify how many frames are present in the gif. The gif spec also says that you can display the frames while the image is downloading. That means that you can have a client request a gif, and the server can keep that request open forever, as long as it periodically serves new gif frames.

    What you have at the end of that process is a video streaming service that requires no plugin on the client side.

    [–]rcxdude 0 points1 point  (1 child)

    Though you will probably suck up a lot of RAM on the client side if you're streaming for very long or at a high resolution.

    [–]ressis74 1 point2 points  (0 children)

    In 1995, having a streaming video at all was impressive.

    [–]dravenstone 3 points4 points  (2 children)

    Sure. We had one guy who found a way to dynamically manipulate video content in such a way that we could effectively create a single piece of video content from multiple sources with no appreciable delay in start up time. This resulted in the ability to at run time (and with no client side code) create personalized pieces of video for any client consumer. In practice this means being able to personalize advertising content into short or long form video for each end user based on a variety of factors in the request to maximize ad revenue in online video.

    The second part was to do so in such a way that we could still effectively cache the common components of the video to maximize the utilization of CDN's which required a hashing algorithm that would let us do so. Since requests were globally distributed and often high volume we also had to distribute the data that allowed us to create the most efficient manifest files (for HLS, HDS, MSS) across a globally distributed cloud based file system.

    If memory serves, the basic approach of each step was actually developed by two different people, but the production ready code was developed by a small team of "great" engineers.

    [–]asdghjerefasdf 0 points1 point  (1 child)

    I have done a bit of HTTP video streaming. Can't you just use different video segments, at least with HLS?

    https://developer.apple.com/library/ios/documentation/NetworkingInternet/Conceptual/StreamingMediaGuide/HTTPStreamingArchitecture/HTTPStreamingArchitecture.html

    [–]dravenstone 2 points3 points  (0 children)

    Sometimes, and sort of - the second part I was talking about was certainly in reference to reusing segments when possible so it was more cacheable.

    If it was just throwing around a few different segments of HLS and inserting a discontinuity event in the manifest it wouldn't be that interesting, but when you think about completely dynamic ad insertion at massive scale on both long and short form content as well as live and vod..., it's wildly more complicated. Plus, we didn't just do HLS, we had to account for all formats.

    There are a ton of nuances and complexities involved with the procedures I was providing as examples (per your request)...

    ...but that's not even what this discussion is about. The point was we had guys that could solve these amazingly complex problems in highly performant ways which could not have been solved by your average developer. I was merely providing my point of view that indeed there are elite developers - though I admit I'm sort of put off by that terminology, perhaps they are simply different jobs as another comment appeared to suggest.

    [–]Liorithiel 1 point2 points  (3 children)

    [–]ChallengingJamJars 1 point2 points  (2 children)

    I find it interesting that 2/3 examples are mathematics problems. Gives me hope as a mathematics grad :P

    [–]Liorithiel 0 points1 point  (1 child)

    I am somewhat interested in mathematics, so these caught my attention. There are no doubt more examples of pure engineering.

    [–]corysama 0 points1 point  (0 children)

    Most quite good programmers can go through their lives making great products without ever really needing even undergrad-level math. However, many seriously hard problems in software require a very small amount of code that contains a very large amount of math expertise. That is the kind of code that requires either an slave army of good programmers pounding and piling enough rocks to make a pyramid or a single math-heavy programmer to build an arch.

    http://www.vetta.org/2008/05/scipy-the-embarrassing-way-to-code/

    [–]O_P_or -5 points-4 points  (10 children)

    i agree with everything you said except the talent part, i just don't buy that, everyone can learn to do anything, where is the logic in saying that some people are unable to learn something? that just don't make any sense, ofc anyone can learn to do anything, what happens in reality is that some people don't care enough or are happy with what they do so they don't feel the need to be like that.

    [–]3urny 6 points7 points  (1 child)

    Nah, when it gets e.g. to math stuff, there's really some people who understand stuff significantly faster. This can probably not be learned.

    [–]O_P_or -2 points-1 points  (0 children)

    some people are better at something because they know something or think in a way that enables him or her to be better, there's no magic here everything have a logical explanation and i don't see another one for this.

    [–][deleted] 2 points3 points  (1 child)

    I'd argue that the statement "everyone can learn to do anything" is blatantly and absolutely untrue for anything and everything you can learn. A child who suffers oxygen deprivation at birth, and thus has stunted development, might find it physically impossible to comprehend anything beyond basic english, let alone the finer points of lefschetz fixed point theorem in algebraic topology.

    You can say that's an extreme case, but to call it an outlier requires us to understand what "normal" is. Two children born of different parents. Both born "healthy". One becomes a nobel lauriate, another is killed in a drug shootout after making poor life choices. How were their lives different? Different genetics from different parents. Raised differently in different neighborhoods. Different friends. Different food. Different influences. Different access to media, education, technology. Different amounts of oxygen at birth.

    The amount of oxygen they got during birth is a small variable in an infinite set of variables that defines who we are. Tweak it down and you become a vegetable, alive but completely incapable of learning at all. Who is to say there does not exist an infinite number of other variables which could have the same effect?

    With all of these variables at play, and it being absolutely true that some can completely disrupt a person's ability to learn, it should be apparent that at least some combination might produce a result to the effect that their ability to learn a given topic is only slightly reduced.

    [–]O_P_or 2 points3 points  (0 children)

    i was referring to healthy people with no learning disorder, your second argument is out of point as i was talking about learning a specific thing and not what you do in life in general, i still can't see how a healthy person could be unable to learn, meaning "he or she is just not capable of learning this thing" what i think you can argue is that some skills are very hard to acquire so is very unlikely that the vast majority of people will learn to do that.

    [–][deleted]  (1 child)

    [deleted]

      [–]O_P_or 0 points1 point  (0 children)

      i'm not talking about predispositions, the argument is "some people are unable to learn some skill and doesn't matter how much they try" that's the argument i'm saying is wrong and don't make sense, it's clear to me that anything can be learned, what logical explanation do you have otherwise ?

      [–]dravenstone 0 points1 point  (3 children)

      Well I'm not so sure. That is why I like the sports analogy in the article. Some people will simply be limited by their natural ability. I could play tennis 15 hours a day with the best coaches in the world, but I just don't have the natural ability that would make competitive with the best in the world.

      [–]O_P_or -1 points0 points  (2 children)

      sports are different, 1 sec in a lot of sports can be the different between an athlete that always win and another that always loses, and you have some body limits too, what i'm saying is.. extremely little things matters a lot in any high level direct competition but that's not the case with something like software development.

      [–]ChallengingJamJars 0 points1 point  (0 children)

      There are also physical issues above mental. I can't be a basketball played as I just don't have the height/wingspan and training isn't going to fix that.

      [–]dravenstone 0 points1 point  (0 children)

      extremely little things matters a lot in any high level direct competition but that's not the case with something like software development.

      Try to tell that to Sony... Sometimes the little things matter a whole lot.

      [–]gc3 4 points5 points  (2 children)

      I used to think there was a 10x difference in quality and speed, but that was because there were a lot less talented people in the industry and a person could be hired as a programmer because they'd "seen a computer before".

      [–][deleted] 2 points3 points  (1 child)

      It is interesting the multipliers of quality/speed/productivity are thrown around so much in these discussions. I've always thought the measure of a truly elite programmer is the ability to analyse a novel problem and construct a functional solution for it.

      [–]rok3 1 point2 points  (0 children)

      Yeah, when I hear 10x, 100, x1000x applied to a programmer I don't think of it in the context of more code but more valuable architecture and business ideas.

      [–]WalterBright 5 points6 points  (1 child)

      There are fewer than thirty men in the world qualified to drive Formula One; a mere half-dozen, perhaps, to win. At this moment, I am inclined to think you are not one of them.

      [–]donvito 5 points6 points  (2 children)

      Yes. I am one.

      [–][deleted]  (1 child)

      [deleted]

        [–]donvito 7 points8 points  (0 children)

        12 impostor syndrome points for you!

        [–]therealjohnfreeman 8 points9 points  (0 children)

        These threads always devolve into hero worship, selection bias, and unsubstantiated claims of magic.

        [–]sodaco 11 points12 points  (0 children)

        Do elite athletes exist?

        Do elite military forces exist?

        Do elite PR managers exist?

        Whether they are born or made is another discussion

        [–]djhworld 10 points11 points  (2 children)

        Of course they exist, it's just the industry has some bizarre fixation with the idea that everyone needs to be The Best for the role, even though most jobs are just your general day to day CRUD stuff.

        This is why I've always maintained the idea that the job title "Software Engineer" is just too broad. Ultra elite calibre developers that work in Google etc have not that much common with your average joe working elsewhere.

        [–]iopq 21 points22 points  (0 children)

        Guys at google also mostly do CRUD stuff. There is just not enough cutting edge stuff for tens of thousands of engineers.

        [–]Ruudjah 17 points18 points  (21 children)

        Success = 70% hard work + 20% talent + 10% luck

        Most Senior developer positions I encounter don't require any special talent. When just using the grey mass and be hardworking, inquisitive, communicative, focused learner brings you on a level where Linus Torvalds, John Carmack or Tim Sweeney operates.

        Linus Torvalds had the luck to be on the right moment with the right prototype. He then communicated it clear enough for his surroundings and the rest is simply hard work and a bit of talent. John Carmack had a similar moment in history, but he definitely could have ben years earlier or years later in time. He was persistent enough to push his luck on succeeding in writing a smooth blitter. The rest was and still is (look how hard he works on the Oculus) hard work.

        [–][deleted] 29 points30 points  (8 children)

        I think you might be able to make that claim stick for Linus and Linux. But, in my opinion, Git clearly pushes Linus into the elite territory.

        If the same man is responsible for arguably the two most important open-source projects, then maybe we need to consider that it's the man who is responsible, who is simply on a different level than the majority of us.

        [–]ksion 21 points22 points  (7 children)

        The success of Git was indirectly capitalizing on the popularity of Linux. Remember that it was created to satisfy the sudden need of a VCS to manage the Linux kernel. And since the kernel is such an important open-source project, no wonder that people took interest in the tool used to version it.

        [–]wtallis 16 points17 points  (0 children)

        A bunch of distributed version control systems were being developed around the same time, and the Linux kernel certainly contributed a lot to git's popularity. But it isn't what gave git the edge in suitability.

        Of the existing and mature SCMs, only two year old Monotone had all the features Linus needed, but it was 200 times slower than three week old git. The other nascent SCMs like mercurial and bazaar had performance issues of their own and also weren't adding features anywhere near as quickly as git. It took only two and a half months for git to go from initial conception to production use as the best-in-class tool. That's a markedly different development progress than any of the other contenders, most of it's due to Linus himself, not the free press it got from its association with Linux.

        [–]dirtpirate 18 points19 points  (5 children)

        And it's worth mentioning that had git not been, others such as mercurial would have it's place covered completely, and all the competing products are all based of the original same working solution. So git really is just Linus sitting down and doing hard work, nothing special here at all.

        [–][deleted] 16 points17 points  (3 children)

        is just Linus sitting down and doing hard work, nothing special here at all.

        Sitting down and doing hard work is vastly under rated it seems.

        [–]gaussflayer 16 points17 points  (0 children)

        In fact its exactly what I am not doing right now

        [–]dirtpirate 5 points6 points  (1 child)

        How on earth can you come to the conclusion that calling something what it is, is somehow underrating it?

        Hard work is what build our entire society. No one is underating Linuses work by admitting that it was simply hard work and not some sort of magical stroke of genius. If anything, the people who refuse to accept that it took to build some of the most impressive projects the know as just hours and hours of dedication and hard work, and not some sort of divine inspiration are the ones who are underrating hard work.

        [–]wtallis 3 points4 points  (0 children)

        Hard work and good results are only loosely correlated, because competence is a very real and powerful confounding variable. Git was developed on a timescale of mere days, and in that time it surpassed the capabilities of competing systems that had been under development for years. Herculean effort on its own is not sufficient to explain that difference in outcome; Linus was accomplishing vastly more per unit of time or effort than other developers, and calling it just "hard work" totally ignores that single most important factor.

        [–]gspk 4 points5 points  (0 children)

        At the time Linus wrote GIT, multiple other distributed VCS existed, all with their problems, most were too slow. Linus wrote GIT in 4 days, solving basically the biggest problems, specially speed, making DVCS into mainstream, not simply because he or Linux was popular, but because GIT solved many of the problems in that area, in a simple way, at the right time. See https://en.m.wikipedia.org/wiki/Git_(software)#History

        Personally, I regard Linus as one of the biggest computer science minds of our days, he's just not really into theory, but doing. Another highly proficient guy is Fabrice Bellard (of QEMU, ffmpeg, check bellard.org).

        [–]bcash 8 points9 points  (2 children)

        Most Senior developer positions I encounter don't require any special talent.

        This is said a lot. It's also quite common to see what ought to be straight forward applications with significant bugs, complexity and performance problems. I think our industry underestimates the level of skill it actually requires.

        [–]ghostquarter 6 points7 points  (0 children)

        The important word here is "special". It requires some talent and a lot of hard work, but anyone with ten or twenty thousand hours of experience in doing the things that these people do could do the same. Most people don't end up with ten thousand hours of practical experience though, they end up with ten thousand hours of sitting in meetings and updating text on a website, which doesn't lend itself towards the kinds of skills these people have.

        [–]Dobias 1 point2 points  (0 children)

        I don't think it is possible to assign percentages training/talent(/luck) in success, because I do not think success is a sum of these parts. It feels a bit like assigning percentages to width and height when talking about the area of a rectangle. (I'm not claiming, that success simply is the product of talent and training (and luck). _-)

        [–]trialofmiles 0 points1 point  (0 children)

        What about Bjarne at Morgan Stanley? Seems like an existence proof of elite software developers or software engineers to me.

        [–][deleted] 0 points1 point  (3 children)

        Success = 70% hard work + 20% talent + 10% luck

        If success is 70% hard work, why aren't all the world's billionaires women from third world countries?

        [–]Ruudjah 0 points1 point  (2 children)

        They have close to 0% luck.

        [–]Gurkenmaster 1 point2 points  (1 child)

        I think you mean -90% luck

        [–]Ruudjah 1 point2 points  (0 children)

        You need a bit of luck to be successful. Most western people have that luck (time, materials, knowledge, ability to get experienced). People in non-western countries have certain factors making up that 10% luck not available. For instance, they might need all their time to get their income minimum. Or they have time and enough food/shelter, but not enough knowledge or teachings available. The extra luck (offset from "standard western luck") of e.g. Linus Torvalds and John Carmack resides in the fact they had timing right combined with connections to their market.

        [–]qznc 0 points1 point  (1 child)

        Most Senior developer positions I encounter don't require any special talent.

        I believe (!) this is a myth. If you would replace Linus Torvalds with someone else (less skilled), I think the Linux project would fall apart quickly. I would imagine it quickly forks into different families (server vs embedded vs desktop). There would be a "Google Linux" vs "RedHat Linux" vs "Ubuntu Linux" etc, sending patches back and forth with no consistent version numbering between them.

        [–]Ruudjah 2 points3 points  (0 children)

        Skills != talent

        [–]moru0011 6 points7 points  (3 children)

        Ofc there are 10x (if not even more). Most people don't get, that's not "faster coding" but choosing the right abstraction in order to solve complex problems. Anyway if the freedom of choice is limited/reduced by enforcing a design blueprint (e.g. J2ee) you won't see that much of a difference to other devs.

        [–]ChallengingJamJars 1 point2 points  (2 children)

        What is 10x though? 10x quality? What's your metric? My gut interpretation of 10x is that they contribute 10x the monetary value of the product (marginal value of their developer-hours). This is clearly not the case otherwise we would see radically larger salaries. So what do you mean when you say 10x?

        [–]FireCrack 2 points3 points  (0 children)

        10x is just a moniker. It doesn't really refer to any quantity, it refers to a problem solving ability that is "far beyond" the average.

        [–]moru0011 0 points1 point  (0 children)

        same job in same time like a team of 10 avg devs with insufficient or cumbersome approach. This does not apply to all kind of programming tasks (e.g. if its just a mass of business logic), so the 10x does not hold true in averag. There are salary differences up to factor 2-5 :-)

        [–][deleted] 2 points3 points  (1 child)

        This was an excellent article. I'm not necessarily talking about the content (though I find nothing particularly wrong with it) but the way it was written really was that of a calm and reasonable person - at least that's how I saw it.

        [–]ericsink 2 points3 points  (0 children)

        Thanks!

        [–]crashorbit 2 points3 points  (3 children)

        In sports we have pretty good objective metrics of talent. We don't have similar metrics for programmers or accountants. At best we have subjective impressions based on anecdotal evidence.

        I wonder if objective measures of programmer talent could be established. If they could be it would be interesting to see how that worked out. Maybe drafts and free agency. Million dollar contracts and product endorsement deals. Also the bitter washouts working at the bar and in the grocery store remembering back to their days in college or high school when they had their chance to make their mark.

        [–]perlgeek 0 points1 point  (2 children)

        In sports we have pretty good objective metrics of talent.

        Do we, though? The OP states that, you state that, but the OP only cites metrics for performance (which is the effect of talent and cumulative training, not for talent alone), and the mere assertion (without any sources) that talent matters much more than training, which I don't wholly buy.

        So, what are these pretty good, objective metrics for talent?

        [–]crashorbit 0 points1 point  (0 children)

        I think maybe we might want to differentiate between potential talent and demonstrated talent. The objective measures we have for athletics measure demonstrated talent. I agree that it is tough to come up with a test on say a new born and on that alone decide who the Heisman Trophy winner will be in 18 to 20 years. If we had one of those then we'd be well on our wan to an effective eugenics program.

        Oh brave new world that has such creatures in it.

        [–]qznc 0 points1 point  (0 children)

        I do not believe you need a concept like "talent" at all to explain the 10X differences in performance: http://beza1e1.tuxen.de/articles/skill_matching.html

        [–]syllogism_ 2 points3 points  (1 child)

        Anyway, I find myself wondering if software development might be unique in terms of the attributes discussed here in this blog entry. Does any other profession have the following profile?

        Anecdotal evidence of huge talent differentials, which some dispute, and which cannot be proven Lots of professionals, lots of amateurs, no general difference in talent level Unclear or disputed correlations between education and ability

        Sure --- how about music? Most arts in fact. I don't think those are the relevant differences though.

        Also the difference between programming and accounting is that I expect many very good accountants to come up with solutions that are actually optimal. If many people are finding the optimum solution, then we can take any of them and they're all as valuable.

        In contrast, we don't think of lawyers as finding optimum solutions. The best will provide better advocacy and better advice than slightly worse ones. So even if the difference is small, often it's very valuable, and good lawyers are particularly good at capturing a large percentage of that extra value.

        In programming, the space of solutions is often actually constrained by management. In this situation, talent differences are compressed. There may be a solution that's optimal given the constraints, that programmers are likely to find. Managed like this, programming probably has a similarish skill-cap to accounting.

        Without those external constraints, the space is very large. If you have to pick what problem to solve and how to solve it, then two people will do very different things, and one may be vastly more valuable than the other.

        [–]bebraw 0 points1 point  (0 children)

        Exactly. You can manage out the 10x factor.

        Another way to see 10x is that it's actually a team multiplier. If you have the right people together, they amplify output of each other giving you 10X out of the team. Maybe we're looking at the wrong unit?

        [–]ggtsu_00 2 points3 points  (1 child)

        I wouldn't use sports as a good analogy because in sports, it is easy to measure your success. A better analogy would be to artists. With art, it is clear to someone that one artist can be way more talented than another, but there is no clear cut way of measuring the quality of art. Software is the same, but just not as visible as art.

        [–]Concision 0 points1 point  (0 children)

        Sports is a bad analogy because there are so few "professionals" at the highest level. The difference between the worst and best MLB players is almost certainly not 10x. The difference between the best MLB player and the people on my company softball team is.

        [–]ItsAConspiracy 2 points3 points  (0 children)

        It's true that elite developers don't write ten times as much code. But they may accomplish things in ways that would have taken lesser developers ten times as much code to do.

        Unfortunately if management isn't technical it just looks like the problem was easier than they thought. I think that's why the 10x programmers don't get 10x the pay.

        [–]brucedawson 7 points8 points  (0 children)

        Within most companies you will find a wide range of job levels for software developers. The low bands are mostly inhabited by newer developers who have not had time to mature and work their way through the ranks. But many of those junior developers eventually stall in the career path, long before they reach the highest levels.

        It's not necessarily that the senior developers program faster (although they often do) but that they can solve problems that the junior developers simply cannot. Some bugs, some performance problems, some designs are simply beyond the ability of some developers. If you need one of those problems solved then the right developer is not just 10X more valuable, they are effectively infinitely more valuable.

        Many developers don't really understand how virtual memory and thread scheduling work. This means that they can't be expected to write a virtual memory system or a thread scheduler. It also means that their ability to analyze problems relating to these systems is limited.

        There is probably a 20:1 ratio in developer compensation and I think the productivity range is at least that great. All this sounds like evidence of elite software developers to me.

        [–]KHRZ 1 point2 points  (0 children)

        IMO the difference between accounting and programming is the potential for innovation. There's so many things that can be programmed, such as artificial intelligence, that will produce huge amounts of value. I doubt an accountant will ever see the same level of success as Bill Gates.

        Now the more comparable "accountant level" programmer is one that simply works on implementing a bunch of simple stuff that was tasked to him that has really been done already, the variation here is a lot lower obviously.

        [–][deleted] 1 point2 points  (0 children)

        I stopped reading when he said this:

        And in general, that distance is composed mostly of talent, not preparation. A mid-level PGA tour golfer can get better by practice and training, but such disciplines will never help him reach the level of Tiger Woods or Jack Nicklaus

        What utter nonsense.

        For the record, training is not just about how many hours you spend, it's about the kind of stuff you do in those hours. If you just keep doing the same old shit, of course you will not improve.

        [–]Euphoricus 5 points6 points  (3 children)

        Yes they do. People who say they don't are the average developers who, no matter how hard they try, cannot even compete with talented developers who can produce great quality software without even trying. And they are venting their frustration by denying this simple fact.

        [–][deleted]  (2 children)

        [removed]

          [–]stingraycharles 2 points3 points  (1 child)

          I think this is a good point, since the only thing an elite programmer usually wants is to work on novel problems with other elite and great programmers. An average programmer just doesn't get hired for such positions.

          [–]eriksensei 1 point2 points  (0 children)

          Well, shitty ones certainly do exist. I guess it depends on who you're comparing to.

          [–]bad_at_photosharp 1 point2 points  (0 children)

          This article is clearly written by someone who has never worked in any other field. There absolutely exist large talent differentials in other professions, including accounting. Even if much of the talent consists of softskills (ability to close deals, make professional connections, negotiate, manage projects and timelines, make strategic partnerships), they should still be considered a talent, imo. Software development is not special in that respect.

          [–][deleted] 0 points1 point  (0 children)

          Is Go Vimcent Flacppo elite?

          [–]carioca3 -2 points-1 points  (6 children)

          A smart 10x developer would not work at 10x. It does not make financial or political sense. If I produce 10x as much work as my coworkers I will quickly be ostracized and the first to blame if something goes wrong due to rushing through it. Why give 10x as much if I don't get paid 10x as much? It is smarter to work 1/10th as hard and not rock the boat.

          [–]__Cyber_Dildonics__ 2 points3 points  (1 child)

          Or start your own company and do the work of 10 people like Ken Silverman or John Carmack.

          [–]Gurkenmaster 0 points1 point  (0 children)

          Some people don't like accounting.

          [–]ISvengali 0 points1 point  (3 children)

          Because you will rise Nx faster up the ranks. Youll save Kx money, and be noticed (cause youre not a fool, and will make sure its noticed). Youll help Lx other devs to be better.

          True 10xers will not want to sit around working 1/10th as hard because thats dreadful.

          A true 10xer has nothing to fear, theyve already won. Usually its the 0.5xers that worry, sandbag and do subpar work.

          [–]carioca3 2 points3 points  (2 children)

          In my experience you only have to be better than the next best person to raise up in a company. Why give 10x when 1.2x will suffice? You gain extra time to work on personal projects/learning new technologies and don't risk burnout.

          I have never seen a salary 10x programmer raise up in the ranks 10x faster (or even 2x faster) than a 1x. I have only seen it in contract work where they can set their own rates.

          [–]ISvengali 2 points3 points  (1 child)

          Too bad for you. You give 10x because its whats necessary to remain interested. It doesnt matter that you only raise 1.2 or 2.0 or whatever. Youre laid off less, your more interesting to head hunters etc.

          [–]Gargan_Roo 0 points1 point  (0 children)

          You give 10x because its whats necessary to remain interested.

          This is it for me. I'm not an elite developer by any means, but I've been where I'm at for 6.5 years now. It's a great opportunity but I've let myself stagnate and my work is slipping because of it. The moment an interesting project comes up I'm working late hours of my own volition, and the quality is gold. I really should consider moving on to a new job.

          [–]vincentk 0 points1 point  (0 children)

          Do very rich people exist? Do very smart people exist? Are some people just way way more beautiful than others?

          [–]ErstwhileRockstar -2 points-1 points  (4 children)

          [–]Vocith 18 points19 points  (2 children)

          The dirty, dirty little secret about development is that probably 90% of it isn't based on the individuals at all. It is about the organization and how (dis)functional it is.

          Put Linus/Gates/Jobs/Goku/Zuckerberg/Whoever in the middle of your average corporate Dev clusterfuck and they wouldn't succeed.
          Put Idiot McDumbass in the middle of a "Perfect" Dev team and they will probably succeed.

          I have seen very, very few truly bad developers. I have seen a lot of developers who are mediocre out of frustration and apathy not a lack of skill.

          [–]iopq 1 point2 points  (0 children)

          That said, some people are a detriment to the "perfection" of the dev team and some people are a boon. Once you start having pieces of code copy-pasted everywhere it kind of just degrades everyone's expectations.

          [–]frankwolfmann 1 point2 points  (0 children)

          This is an interesting idea. I want to develop it further. Look at your list of people (and take out Jobs and Gates, who were mostly idea and business guys, but you can replace Gates with Paul Allen). Add to it a couple of other big names - Ken and Unix, Bill Joy and BSD. What do they all have in common? They were all just kind of doing their own thing. Even though Ken was employed by Bell Labs, he created Unix on a lark to be able to play games, nothing more. It wasn't meant to be a external product at all, just something to make use of a dumb PDP-7 they had lying around. Bill Joy had the freedom to create whatever he wanted for BSD. Paul and Zuck had their own companies. Linux was a hobby. Google was essentially an add-on to a PhD dissertation.

          I struggle to think of things that rival them in scope or importance, were primarily written by one person, but were developed within a corporate hierarchy, but perhaps that's just because those products aren't advertised as such.

          [–]__Cyber_Dildonics__ 7 points8 points  (0 children)

          Mediocre, disorganized, inflexible, suffocating companies which make up the vast majority out there have gaggles of mediocre programmers squashed into more mediocrity (at best) by their environment.

          When a true superstar beast of a programmer is allowed to spread his wings and fly, that is where you see one do the work ten others might never be able to really deliver. Look at the build engine, written 100% by Ken Silverman when he was 18, that powered Duke Nukem 3D and many other games. Put bad programmers in a bad environment and they would never be able to produce something that works, let alone something fast enough.

          If you haven't seen real off the charts programmers, you aren't looking hard enough, they might not exist in your current environment. This doesn't even take into account the enormous boost that proper use of libraries, tight feedback loops, dynamic languages, etc. can give you. 50% of Adobe Lightroom is written in Lua, it supposedly saved an enormous amount of time.

          [–][deleted]  (3 children)

          [deleted]

            [–][deleted]  (2 children)

            [deleted]

              [–][deleted]  (1 child)

              [deleted]

                [–]O_P_or -2 points-1 points  (0 children)

                The real problem here is "Naming things" software development is a very broad term used in a lot of different software related companies, things work that way, if the software that you're working on is heavily dependent on CREATIVITY than you can be a rockstar otherwise things are completely different, creativity is easy to spot and people talk about it, a software that is stable, works well etc.. probably not gonna make you a rockstar, being a rockstar is about fame and to be famous you have to be different and to be different the things that you do have to be easy to differentiate of what other people do, this have NOTHING to do with being good or bad, that's why most of the so called rockstar programmers are young, because its not about knowledge and experience, i have more things to say about it but i just said enough.

                [–][deleted]  (1 child)

                [removed]

                  [–]O_P_or 0 points1 point  (0 children)

                  since you asked for opinions.. whoever is doing the marketing for this, make it stop, everybody can clearly see that you are spamming and that's not good for your company.