14 ms·
The 10x programmer is a silly myth. The idea that someone can produce in 1 day what another competent, hard working, similarly experienced programmer can produc
by quadcore 5y ago
The 10x programmer is a silly myth. The idea that someone can produce in 1 day what another competent, hard working, similarly experienced programmer can produce in 2 weeks is silly.
You know, 10x is an optimistic number here. Some programmers will do in 1 day what you wont achieve in a life time. And not understanding that makes you a bad programmer by my book simply because this is the foundation of the job.
So let me give one advice: you are not producing code, you are engineering code. Some will find solutions that the others will not find. Thats where the 10x programmer thing come from. The guy who wrote bittorrent said something like the following: "I've written bittorrent in a way you would never have thought about".
You think John Carmack was the only one trying to make 3d games when Doom came out? Thousands of programmers where trying to. Does that make him a 10x programmer in your opinion? Or more like a 1000x?
- hooande 5y agoYou don't say that so-and-so is a "10x painter". Art is obviously not about the quantity of paint used per day, but how it gets used and in what context. This is what you seem to be communicating with your quote about bittorrent. Because we're programmers, we chose an empirical measurement ("10x") as our term for high skill. This terminology is confusing and stupid, but now we're stuck with it
- jimbokun 5y agoI'm guessing there are clearly 10x painters other painters can identify, but there are even fewer quantifiable metrics to measure a painter's output than there are for programmers.
- gavinray 5y agoAgreed, I don't know why the industry (or people?) in general have a problem with accepting this abilities gap. It's as if the notion of people being arbitrarily born more or less with a knack for something is evil. Let me tell you the story of when I realized I was (at best), a "not-mediocre" dev: 1. I've been programming for fun even as a kid. That's what got me into it: If you count kid-programming as "programming", I've been programming for ~14-15 years. 2. There was a girl who used to work with me at $DAYJOB, who is fairly well-known on The Orange Website, and has written some "thought leader" papers in certain niches. A real einstein. I asked her in DM at work about her background and how long she's been coding -- both in general and the language she's well-known for. The answer was: "A couple of years -- and a few of those were writing another language. This is my first real job writing $LANGUAGE_WELL_KNOWN_FOR." Well, fuck me. This is called "innate ability". Humans aren't created equal, nobody said they had to be, and it's not a crime to acknowledge it. Folks ought to get over it IMO, it's not a big deal. I will never understand CS and programming-language theory concepts at that caliber or that intuitively, but who cares? I'm also short as fuck so I doubt I'll be playing in the NBA anytime soon either. Life goes on.
- austincheney 5y ago> Agreed, I don't know why the industry (or people?) in general have a problem with accepting this abilities gap. Bias and poor processes. When people become reliant upon a technique or process to attain viability that means of execution becomes more important than the thing you are producing. As a result people will defend slow unproductive means of execution to the death. This is also a socially reinforced phenomenon. It is completely realistic to achieve 10x (or even much greater) productivity and it isn’t challenging, but it requires abandonment of closely held ideas that are socially reinforced.
- dosethree 5y agoIt's harder to achieve 10x in a vacuum, but if you make 10 engineers twice as productive, there ya go
- deleted 5y ago[deleted]
- jimbokun 5y ago> It is completely realistic to achieve 10x (or even much greater) productivity and it isn’t challenging, but it requires abandonment of closely held ideas that are socially reinforced. OK, you piqued my curiosity. Can you elaborate?
- austincheney 5y agoThis is completely off the top of my head. Objective quick wins: 1) Less code. The less there is the less there is to debug and maintain. This applies to all code including dependencies, frameworks, abstractions, and decoration in your own code. If abandoning OOP means substantially less code then do it without question. 2) Iterate faster. If you have a build that takes 10 minutes and the next guy has a build that takes less than a minute they can fail 10x more frequently and achieve the same level of productivity. 3) Know your foundations with confidence. Things you rely upon become more of a barrier than a help given a long enough time line (shorter time line that could otherwise imagine). 4) The point of software is automation. If you find you are doing manual curation in the code you are likely wasting your productivity. An investment in better automation returns interest on the initial investment. More opinionated personal preferences: 1) Unless you are writing in a language where you manage access to memory, such as C++ or Rust, abandon OOP. In garbage collected languages like Java, JavaScript, C# it only provides composition. It is a tremendous increase in code that does more harm in troubleshooting. 2) Prefer a statically typed language. As a JavaScript developer I have fallen in love with TypeScript. There are performance benefits to ensuring all primitives are strongly typed, but the developer performance benefits come from typing complex types. This is a quick win for defining execution of microservices and functional programming. 3) Prefer functional programming techniques and code portability. Code is less defective when it is highly predictable and explicit. 4) Save composition for last. Don't worry about how to put things together. Complete each micro-task in isolation, which forces a separation of concerns. Once everything is written putting things together becomes natural and typically works itself out. 5) Avoid pronouns in the code. The pronoun of JavaScript is the keyword this. Don't use it. You don't need it. I have been writing in this language full time for 13 years both at work and for personal projects. In that time I have really needed this only twice. The problem with pronouns is that they aren't clear (in either value or intention) by just reading the code, which takes substantially more time to interpret as a human. 6) Think in writing. You can save some refactoring effort by having a solid execution plan. The best way to plan is write things down as if to explain it to somebody who has no idea. If you cannot even explain it to yourself you won't be able to do in code.
- closeparen 5y agoI think that depends on the context in which you’re working. Flashes of genius don’t have much place an an enterprise code base. Everything is rigorously standardized and separated into layers. Each layer has a bunch of bookkeeping about dependencies, interfaces, mocks, expectations, and test cases. This is not really brain work; it’s typing. Now maybe if you’re really brilliant, you’ll do much better than average with the implementation of a really tricky layer. But the layers are rarely tricky, implementing them never takes all that much time, the slow part is always the integration and associated mocking rituals. Typing speed pays better dividends than brainpower in terms of productivity, there.
- FlyingAvatar 5y agoI find this true to an extent, but this also where a lot of unnecessary complexity, risk aversion and process live.
- IshKebab 5y agoMaybe that's why so many people think 10x programmers don't exist - they work in environments where a 10x programmer isn't needed and couldn't really demonstrate their skills.
- gopher_space 5y agoHow many people will never achieve their potential because they don't work in a room with a door?
- jimbokun 5y agoSo the 10x programmer realizes you can accomplish the same goals with 1/10 of the book keeping, dependencies, interfaces etc. etc. etc. In other words, the processes themselves place hard upper limits on the possible productivity.
- closeparen 5y agoOne could make the argument that skipping the bureaucracy catches up with you in the long run. Or maybe a small team of 10x programmers could really get away with it, indefinitely. But can you reliably staff enough of them, now and forever, to keep that going? For a business it is often better to have a codebase that scales with arbitrarily many average-quality engineers, than to be dependent on hiring miracles. Even small numbers of them.
- faizshah 5y agoThis is the opposite of how you should want any knowledge worker to think. If you believe that there’s some innate ability that makes people 10x better at a skill than you rather than hours of practice and study then you are much less likely to acquire that skill or learn those skills efficiently. You need to have a growth mindset to be an effective knowledge worker not a fixed mindset. This is discussed in the book Make It Stick on learning science, in chapter 7 they discuss how your own views on whether skill is innate vs the result of practice affects your own ability to learn and grow.
- fighterpilot 5y agoThere is an innate ability that drives it to a large extent: inherited intelligence. Recognizing this might not be helpful to the individual's motivation but that doesn't make it untrue. Not everyone can be a 10x (or 100x) Ramanujan-level genius, you really need to win the genetic lottery, in addition to working very hard, for elite level cognitive performance in STEM domains.
- cutemonster 5y agoAre (were) you a fighterpilot for real? (I think then one needs to do cognitive intelligence tests?)
- deleted 5y ago[deleted]
- ryandrake 5y agoAs your sports coach always said "You don't need talent to practice!" I'm not a huge believer of some mystical "innate ability" that people sometimes use to explain talent. Imagine a great concert pianist who plays flawlessly. After the concert, someone says, "Oh, you were born with such a wonderful gift of talent!" If I were that pianist, I'd be kind of offended--it totally ignores the decades of daily practice it took to get that good. Or a chess grandmaster. You're such a natural! Oh yea? STFU, this took years of grinding!
- 5y ago
- dionidium 5y agoI don't know about producing in one day what it would take another person 2 weeks to accomplish, but I do know there are some core features of my company's app that were created by a very talented developer that I don't think could be reproduced by some of our junior developers in a year. I think it's a mistake to conceive of the difference as one between the tortoise and the hare, where the tortoise gets there, eventually. There are bits of this code that the tortoise just wouldn't ever end up producing if you gave them all the time in the world.
- petepete 5y agoI'm about 1/1,000,000th a Fabrice Bellard, and I'm fine with that.
- nickelpro 5y agoBellard is who I reference in these situations also. He's a sort-of empirical refutation of the assertion "10x programmers don't exist". I always liked that he lists qemu and ffmpeg on his website as afterthoughts mixed in with all the other code he's written.
- The_Colonel 5y agoBellard is obviously 10x (or 100x) engineer when you need to port Linux kernel to JavaScript or compute the longest Pi sequence. But most jobs aren't like that and require a mixed skillset - problem solving, people skills, stress resistance etc. and it's entirely unclear how Bellard would fare there.
- nickelpro 5y agoBut the question isn't about those skills, the question is about programming. Bellard is blatantly an insanely productive programmer. Also if you think a man who can build an LTE base station from scratch isn't good at "problem solving" I really don't know what metric we're talking about anymore.
- The_Colonel 5y agoNo, this is about being 10x engineer and part of the job description is much more than programming.
- karaterobot 5y agoWhen you say "[s]ome programmers will do in 1 day what you wont achieve in a life time" you are no longer talking about the 10X programmer myth. You're talking about invention, rather than day-to-day productivity.
- nickelpro 5y agoThey're the same thing if your day-to-day productivity requires invention, as it does in Carmack's case (and I would argue most programmers)
- karaterobot 5y agoI would argue that that's not the case for most programmers, at least not in the sense of developing a new p2p protocol, or a fast inverse square root algorithm. Would John Carmack code, e.g. a checkout system for an iPhone app 1000x faster than most programmers? I doubt that.
- nickelpro 5y agoThe interface he produced for that checkout system, the naming conventions he chose, the nature of state encapsulation, the testability of it? Yes, I believe Carmack would produce _better_ code in all those things than the median programmer every time. There is much more to 10x than how many lines of code you can produce. A monkey on a keyboard can type faster than Carmack but productivity is not assisted. No one is arguing that a 10x programmer is more efficient by way of swift fingers.
- dudeman13 5y agoThey are not the same thing, unless they achieve what a 1x programmer won't on a lifetime on a day-to-day basis. If the 10x, 100x or 1000x programmer does not do the 10x, 100x or 1000x times on average on their day to day then they are not 10x, 100x or 1000x programmers. (for whatever the heck a 1x programmer is, which people talking about 10x programmers oddly always skip on giving any decent definition)
- jimbokun 5y agoThis is always my go to example of a 10x programmer: https://norvig.com/spell-correct.html https://norvig.com/spell-correct.html How many developers do you know that would bang out a spelling corrector on a single plane flight, in half a page of code? It's a question of knowing the algorithms of tools that make things possible that other developers might not even consider, and how to express those ideas cleanly and concisely, evaluate your solution, and iterate and improve quickly. And then consider the quality of his documentation and considerations for improvement and future work.
- zenithd 5y ago> It's a question of knowing Exactly. Norvig's skill set happens to be of the upscale variety, but similar "10x" knowledge+practice effects exist in more pedestrian domains as well. Compared to my current self, my teenage self was a 10x PHP programmer. I'm absolutely sure that it would take years for me to get back to being even remotely good at PHP-interleaved-with-HTML style coding.
- BeetleB 5y agoNorvig wasn't given a random problem that he then solved quickly. He picked the problem to work on. I'm sure I can give him problems of similar complexity that I work on for my job and he wouldn't do it that quickly. Quicker than me, for sure - but it wouldn't be hard to find someone who does it quicker than he did. I'm sure I can find problems that I can solve quickly and amaze people. Being able to pick your own problems makes for a bad metric for identifying 10x programmers.
- jimbokun 5y agoThis is one example. Norvig has written a ton of kick ass programs in his career that are concise, efficient, and correct, in much less time than most programmers would require. Furthermore, even picking your own problems can be a way to achieve > 10x productivity, as identifying useful problems to solve is also a crucial skill. I attended a talk given by Norvig, where he frankly admitted Google picked markets to enter where they could get good quality data to train their machine learning models on (this was many years ago). Maybe lesser developers wouldn't have that insight.
- bigbizisverywyz 5y agoIf nobody had previously succeeded then I would take the point that Carmack was somehow unique, but by the time Doom came out lots of programmers had produced 3d games, and we had ray-tracing and lots of graphics theory and implementation (e.g. elite written in 6502 assembly on an 8 bit cpu). >You think John Carmack was the only one trying to make 3d games when Doom came out? Thousands of programmers where trying to. Yes Doom was a great game, and well programmed, but it didn't really move the state of the art forward massively, as I would argue that hundreds of programmers had already written and published 3d games by that point.
- paxys 5y agoThe myth part is that you can hire these 10x programmers by asking harder whiteboard coding questions and they will sit and close jira tickets for your company thereafter.
- crvdgc 5y agoOn the edge of possible/impossible, ratios will lose their meanings. In the same way, you can say "Einstein is a 10,000x scientist." Continuing with this analogy and using Kuhn's concepts, maybe it's better to bracket out breakthroughs (paradigm shifts) when talking about everyday productivity (normal science).
- madsbuch 5y agoI think the "10x programmer" as a term is confusing. In one analogy it could be the 10x bricklayer. One who does a well defined job 10 times faster than the others. I think this is the notion people oppose. Another analogy is the 10x classical composer. A person who produces music that is 10 times better music. But this is much more about creative/artistic capacity than about producing. Nobody oppose this. I that your examples incarnate the same idea: It is not about producing code faster. It is about having better ideas.
- HeyLaughingBoy 5y agoBut very often what makes an idea "better" is that it produces a result faster. I've done exactly this: spent hours trying to solve a problem to no avail. Then walk away, come back to it and see that a completely different approach will solve it in ten minutes.
- madsbuch 5y agoI doubt the bricklayer will become more efficient by taking a walk ruminating. But sure, some tasks are like that. Those are the tasks where you have 10x producers.
- 908B64B197 5y ago> In one analogy it could be the 10x bricklayer. One who does a well defined job 10 times faster than the others. Software as brick-laying gets a laugh out of me. If someone uses that analogy, that's a red-flag: they don't really understand software (and tech). It's like offshored bodyshops that just keep throwing more warm bodies at a codebase. Truth is, a 10x isn't someone who lays bricks 10 times faster. A 10x is someone who thinks differently. Instead of building you a something with load-bearing walls, he'll innovate and use an internal steel frame, paving the way for your building to be taller than anything previously considered possible. [0] [0] https://en.wikipedia.org/wiki/Home_Insurance_Building https://en.wikipedia.org/wiki/Home_Insurance_Building
- madsbuch 5y ago
- joelthelion 5y agoThe confusion is that it's all about what people can and cannot do, not how much code they can write. If your development needs are mundane crud stuff, you don't need a "10x programmer". If you're doing tricky stuff, on the other hand, you absolutely do.
- avgDev 5y agoI do CRUD stuff mostly at work but I always research things to improve. A good programmer can make a huge difference in CRUD applications. Things like proper relational database design can save a lot of issues down the road. Using good OOP practices can improve reliability. Keeping things DRY is great too. I have seen some awful source code that run business applications for years.......but bad engineering practices may cost millions in the long run one way or another.
- joelthelion 5y agoI shouldn't have said CRUD. I agree with you, there's a place for genius stuff everywhere. What I meant is that there is also a lot of boring stuff that just needs to get done. A 10x programmer won't help you much there.
- baobabKoodaa 5y agoEven if you are doing mundane crud stuff, you are eventually going to run into hard problems that don't have obvious answers. Not everyone has to be able to solve those problems, but it's useful to have someone in the team who can.
- taeric 5y agoCarmack is an interesting choice here, oddly. He and team were among the first ones there, but it isn't like they weren't rapidly met. Nor, strictly, the first. Ultima Underworld, I'm pretty sure, has a bit of that distinction. Even more impressive, much of the success of later titles came from his picking the likes of Abrash to help make things fast. Notably, the WTF comment in the "fast square root" trick was from Carmack about a contractor's code that was speeding things up. Getting even more meta on it, they had amazing dev tools at their disposal that many other programmers just couldn't afford. Look at the recreations folks do nowadays using pico8 and friends. Some folks get some really amazing tricks running in that field. None of which is to say Carmack is a bad dev. Quite the contrary, he is quite good. But don't discount the role of everything else to the early success that Doom and friends had. In particular, the artistic execution and vision of everyone else was probably worth more than you'd consider.
- VMtest 5y agoWhat do people gain by arguing over these? Genuinely confused Just to be proud and gain that dopamine?
- baobabKoodaa 5y ago> What do people gain by arguing over these? Genuinely confused If you assume some arguments (eventually, in some way) lead to people altering their opinions closer to the truth, then people gain more accurate views of the world. This also reduces the spread of misinformation (when the people who have corrected their views no longer spread it), thus having a compounding effect on more people getting closer to the truth. Or if you assume people never change their opinions as the result of arguments, then I suppose people gain nothing by arguing.
- cutemonster 5y ago@VMtest, Personally I think these discussions are interesting as a small part of learning and reading about hiring and recruiting. @baobabKoodaa > if you assume people never change their opinions as the result of arguments, then I suppose people gain nothing by arguing One thing: they can slightly learn how others can react to what they say, and thereafter, in real life, better know what to say, or not.
- deleted 5y ago[deleted]
- deleted 5y ago[deleted]
- BeetleB 5y ago> Some programmers will do in 1 day what you wont achieve in a life time. And not understanding that makes you a bad programmer by my book simply because this is the foundation of the job. Most projects out there will not benefit from such a person. If you don't understand this, then in my book it makes you a poor employee. I mean, it's great if this 10x guy can solve some challenging problems that most people cannot, but if that 10x guy cannot show how it helps the business, I hope he's not in my team. Most businesses are complex and messy. Connecting your code to business value is not easy. Looking at some of the comments here, people are going out of their way to both defend the existence of 10x programmers, while simultaneously working very hard at not putting any kind of metric on their ability (e.g. "no, it doesn't mean they can produce 10x code or replace 10 people or ... it means <something very hard to measure>"). If you're going to insist on some quality that is hard to quantify, then stop using numbers to describe them. They are geniuses, but not 10x. In my experience: 1. You cannot replace 10 average programmers with a 10x programmer and hope to achieve the same output. Output, by the way, is not defined by code, but by activities that help the business move forward. 2. While there are some good claimed 10x programmers who work well with others, most of the ones I've encountered do not. In my last job, we had a team of several truly brilliant folks. They could dive deep to the assembly level or work at the system level (scripting, etc). Any bottleneck that arose - they would dig deep and figure it out. It was the least productive team I've been in. They argued amongst themselves on the pettiest of things that had no impact on the business. When asked why I was leaving the team, I literally told them that I want to be in a team that writes SW. That team's productivity was so low I couldn't reasonably claim they wrote SW. It's not that they didn't write code, but that most of it would not see the light of day because of constant bickering.
- WizzleKake 5y agoA 10x programmer doesn't cost 10 times as much as a regular programmer. 10x programmers are real and drive real business value. The people who insist 10x programmers are a myth simply have not worked with one. Do not conflate brilliant-but-an-asshole or prodigious-output-but-creates-a-mess programmers with 10x programmers.
- 5y ago
- mswtk 5y ago> You think John Carmack was the only one trying to make 3d games when Doom came out? Thousands of programmers where trying to. Does that make him a 10x programmer in your opinion? Or more like a 1000x? I think the idea of 10x programmers gets so much pushback because it's often bundled with this kind of toxic hero worship. There's a difference between acknowledging the impressive ability of outliers, and idolizing heroic one-man efforts as the pinnacle of what we should all aspire to as software developers. Incidentally, Carmack was not the only programmer on early id Software games, and Doom was far from the first 3d first-person game made. Arguably, it wasn't even that ambitious compared to, say, Ultima Underworld, but the programmers working on that get much less immediate recognition. As a matter of fact, these discussions often remind me of that famous IGN quote of Warren Spector. Except we really should know better on HN.
- philosopher1234 5y agoTheres also this insane idea that people are just come out of the womb as 10x devs, as though they are literally different breeds and there is no amount of studying or effort that could bridge the gap. Its like a bunch of people who still believe their dad is magical & best and haven't discovered that we're all made of mostly the same stuff.
- noisem4ker 5y agoWarren Spector's quote, for reference: >"There's a tendency among the press to attribute the creation of a game to a single person," says Warren Spector, creator of Thief and Deus Ex. https://www.ign.com/articles/2001/11/12/deus-ex-2 https://www.ign.com/articles/2001/11/12/deus-ex-2
- hatch_q 5y agoAuthor nails it though with: "We should be far more concerned with keeping 0.1x programmers off our teams than finding the mythical 10x programmer."
- readams 5y agoThis is just rescaling. The author is actually acknowledging that there exists 10x differences but divides by 10 for some reason.
- The_Colonel 5y ago1x is supposed to be a baseline for an average productive programmer. 0.1 is someone who isn't actually a productive engineer but somehow faked the interview process. It's not difficult to be 10 times more productive than somebody who isn't productive at all. I'm at least 100x better Kotlin developer than my 30 years dead grand-grand father who never saw computer IRL. It's much more difficult to show that you can be 10 times more productive than the average productive developer.
- gary_0 5y agoThe author's point is that more effort should be spent removing negative outliers instead of hunting for elusive positive outliers.
- gary_0 5y agoI agree, because the effort required to filter out a 0.1x programmer is vastly smaller than trying to find a 10x outlier. Way more bang for the buck.
- jdougan 5y agoNo, you need to watch out for the -1x programmers. At least the 0.1x are moving forward,
- 908B64B197 5y agoI think the fundamental issue with 10x is that a lot of people simply never met one. These guys tend to fly under the radar quite a bit. If you are in a tier 2 market or company, your chances of attracting one are close to nil. Because they are extremely valuable, they don't interview a lot and tend to hop between companies where they know people (or get fast tracked internally). I remember someone laughing at the idea of 10x programmers. I asked him where he hired from and what's the compensation like. Turns out two high performers I had recently hired were from the same college he was trying to hire from. Of course, he had no chances of attracting anyone since my offer was ~3x what he was offering!
- xyzelement 5y ago> You know, 10x is an optimistic number here. Some programmers will do in 1 day what you wont achieve in a life time Exactly. There are many modes of that, and you named a few examples. Another example, company has 2 systems maintained by 10 people each. Someone comes in and figures out how to generalize one of the systems to both cases, so they free up 10 of those programmers to go do something else. Or - 10 people are beating their head on a problem for months, someone comes along and says "it might be OK if we don't solve that problem, let's move on" Or - someone figures out that a system/module doesn't need to be written because an out-of-the-box solution exists. Like, I am not a 10X programmer in the sense that I can write 10X the code of the next guy. But have I prevented 10-people's-worth of wasted effort in my career? Yeah...
- agumonkey 5y agowhat would be nice is turning the skill gap into motivation to make other people grow faster but the reflex for humans is to fear and be angry (understandably, but a bad reflex)
- deleted 5y ago[deleted]
- deleted 5y ago[deleted]
- alephu5 5y agoThe point is 10x what? Compared to who? We all know people who code faster than the rest of the team but they always cut corners. Part of the reason that everyone else is slower is because they're trying to work around the under-tested tightly coupled mess left behind by the 10x guy. Then there's the 10x complexity discussed in the parent comment. Plenty of people will take years to solve a problem, if at all, that someone else would manage in a month. However this may be reversed for a different problem since it depends on experience and predisposition, so it makes no sense to talk about a '10x engineer' in this regard. I share the conclusion with the OP that it's a vague and ultimately useless distinction.
- cutemonster 5y agoMess creators that slow the company down isn't what's meant with 10x. What you're describing sounds more like a -0.5 developer
- ergocoder 5y agoI experienced people who are 10x better than me through Google codejam. I looked at one of the problems of the final round, looked at the solution, read it for hours, and I couldn't implement it correctly. Then, there are these top 3 who came up with their own solution and wrote correct code within 20 minutes. For comparison, I can consistently be in the top 1000 of Google codejam. So, I consider myself a fairly good coder. I experienced this with topcoder as well. There are some people who are way too smart. 10x programmers and engineers are very much real. It is just rare.