All I can say is, it’s been my subjective experience that competence and productivity are <i>really</i> variable. Some people at my company can produce beautiful, working, end to end solutions for complex problems in the time it takes others to grind out trivial maintenance tickets. Everyone knows who they are. Programmers are <i>not</i> basically all the same, and it’s worth thinking about the nature of the differences if you want to become one of those people, hire them, retain them, grow your team to be more like them, etc. To write them all off as myths, children, assholes, etc. is to reject the possibility of substantially improving at our craft. That’s a dangerous thing to do.
One interesting twist is that some problems are completely intractable for most programmers. I mean that they cannot produce a working solution no matter how much time or effort they use, or if they do it's so riddled with bugs it's practically useless.<p>Thus it follows that for certain tasks there are "∞x" programmers. Therefore there are absolutely "10x" programmers as well, which fits in with my subjective experience.<p>Certainly domain knowledge can play a very big role, but there are also rare individuals that seem to be much more productive no matter the task.
As an experienced programmer - if you really want to improve productivity 10 times, find the junior programmers in your team, empower them, give your advice when asked, shut up when not being asked, tell them they can do that hard task and help them out when they have problems. Be a decent human being. Then watch with pride as they grow in amazingly quick time. Oh - and just work for a company, that honors when you're doing that.<p>Nowadays programming is teamwork.
Here are some indicators I've seen from 10x and 100x:<p>The 10x person fits very well in their organization. They are admired by upper-management for their ability to quickly comprehend, estimate, and deliver solutions to problems. They mentor everyone that asks or needs help. They provide 95% test coverage on all code. They show up for work well dressed, clean-cut, and on-time every day. Their code isn't 'brilliant' because they understand it must be maintained by the whole team. Their code reads well across difference experience levels but also includes clever tricks. They have an absolutely rock-solid understanding of the operating environment, platform, and modules. They don't document their code. They are the smartest person you know.<p>The 100x person seems to fit very well into the organization at first, and appears to be a 10x. They take on several seemingly-impossible tasks up front and eat it for breakfast. They automate large portions of the business and their own processes. They provide 99% test coverage on all code. They create production-quality docs after their public interface solidifies. They know security and implement it correctly. They spend months to years on self-driven projects to master different categories and build their tech-tree. They have invented tech and patented it. They bump into the intentional barriers of the organization. They break through and create a billion-dollar product, or they are removed from the organization. They are the smartest person you know and without explanation they appear to be insane.<p>It really seems 10x is a stigmatized term. It used to mean a developer that could produce 10x lines of code, but at this point I've taken it to mean a single developer that can leverage technology, their department, and organization to manifest a 10x positive impact compared to someone just cashing their check delivering story points. I don't think this term really fits for someone on the spectrum wreaking havoc in their organization.
There will always be outliers but it really depends what thing the 10x programmer is making ten times more of. If it's simply lines of code then it can strongly be argued that he's creating 10x more technical debt as well, as one of the stories suggests. I've read that many outlier programmers are on the moderate-to-advanced portion of the autistic scale, at a place where it's actually a superpower in terms of being able to concentrate and write massive amounts of code and usually very good quality. The biggest problem with devs like that is that their colleages/teammates have a hard time keeping up with them and management usually tries to coerce others to try to catch up and not treat them like the benevolent freak they are. Even if there's no conflict with a high quality 10x performer there's also the future case problem of trying to figure out how to fill the shoes of such a dev if/when they leave. Management will never authorize hiring 10 people to replace that person, and unless the person was writing perfect code your maintenance is usually a lot more than your staff can handle as well. Are there other fields/jobs where someone can consistently produce 10x more than others simply on their own ability?
Definitely, but only because some developers are insanely incompetent.<p>Sometimes they'll spend days going around in circles, creating files and writing hundreds of lines and introducing a couple of dependencies. When it comes to review time it's like... Wtf are you doing? It's a 5 second one word fix?<p>It's not 10x code, it's 10x faster to deliver value and solve problems
Being a 10x programmer or whatever isn't all it's cracked up to be. It's not like they let you work 1/10x, or even 1/2x. You're expected to deliver that 10x 50 weeks a year, it's impossible to not get burned out. The "velocity tracking" craze is killer. A very strong developer and regular in #python on IRC was working as a janitor for a while. I didn't get it then, now I totally get it. It's hard to muster the motivation to continue working in software.
>The 10x programmer is essentially a libertarian concept: That is, they do it all by themselves because they don’t recognize how much is done for them by others.<p>I'm finding myself meeting a lot of "10x" descriptors. I'm not doing 10x the work but I'm definitely doing the work of the next two highest performing colleagues put together.<p>I also see myself putting burdens on my team. My communication, teamwork, and managerial skills are poor and always will be. Yet I always seem to do things technically that makes people look at me like I discovered fire. For me to say I didn't outperform my colleagues would be effectively to say I had no value as an employee since there would be nothing to compensate for my shortcomings. There have been meetings about me where everybody except me was in the room and I was talked about and the only reasons the team decided not to fire me was my performance and work ethic.<p>It makes me feel really bad reading all the response to high performers that aren't well rounded like they are inherently arrogant toxic drags on a team. There's nothing wrong with having an employee with a lopsided skillset in a team that can support somebody like that. I think seeing such employees as inherently toxic, or seeing them as a holy grail. They're like artillery; only effective with support.
I feel like we probably spend too much time playing around with the idea of 10x engineers. It's definitely true there are more effective engineers and less effective engineers, but I really find it funny that there's always a focus on the 10x engineer. Partly because it's impossible ot judge a 10x engineer truly, and partly because it almost always is accompanied by a story about how the 10x engineer only works on one specific type of problem, almost never in a way that adds value to a customer. What you really often have is a 0.95x engineering team - where one engineer has the 10x reputation and the team as a whole is performing 0.95x. Meanwhile the 3x team contains a number of '10x' engineers operating at 4x and making sure everyone else is the team is around the same level as them.<p>What I hope we can all agree on is that in every day life we're a long way past the point where a single engineer is going to make or break your company by being 10x. It's far more important to be making sure that a team of 10 is working at 3x or a team of 100 is working at 1.2x.
I remember once being asked during a phone-screen how many lines of code I had written. Ever. Some of those things were on classified systems years ago, there is no way I'm going to remember that or even be able to look that up any more. Why would I ever log "wrote a net-worth of xyz lines of code today" for a personal record? I've never worked for anybody who had that as a metric but apparently I had a chance to now; I gave them an estimate and moved on.<p>The kicker was that the question had absolutely nothing to do with the job. Nothing.
10x discussion aside, I found this quote to be eye opening, and not just about programmers:<p>“The 10x programmer is essentially a libertarian concept: That is, they do it all by themselves because they don’t recognize how much is done for them by others.”
I think the people looking hard for 10x engineers are poor team builders. The thing is a team of two good engineers can be a much more potent combination than one 10x arrogant prick who cant communicate or work in a team. Good engineers are still rare but they more frequently found than 10x engineers.
Did Gerald Weinberg speak of 10x programmers? I don't think I have a copy of <i>The Psychology of Computer Programming</i>, but that doesn't really sound like his later work.
After working with ~ 30 odd programmers, I would probably classify myself as a 10x. I think a good chunk of HN'ers are 10x, with imposter syndrome of course.<p>1. Patience - I have the patience to sit through and fix a bug. Googling it, reading the source ... this is fun for me. 1x programmers give up very often and very soon. They either blame others, feel pity for themselves for not figuring it out or hate the computer for giving the wrong answer.<p>2. Fuck OOP - I stick to the separation between data and code. If I am forced to use OOP, I abuse the command pattern. My code is procedural for the most part. Procedural code is easier to debug .. usually, when I see a bug, I know the exact function. 1x go "wow" at this, whereas I feel like an Imposter.<p>3. Tools - This would probably be my biggest sin and probably where I could be a bit of a hipster. I stick to tools and libraries that make me productive.<p>4. News - I try to keep up with the latest news. This often helps me leverage the next best thing for increased productivity.<p>5. Egoless - I don't care about rewriting, throwing away and deleting code ... trying a new library. 1x programmers get attached to their babies.<p>6. My code is not a mess, your ideology is a mess - I've found it easier to work with absolute beginners, 0x, than "experienced" programmers who like to throw jargon around. Beginners tend to find my code easy to follow, easy to fix, easy to debug. The first instinct of the "experienced" is to rewrite it because it's not "clean" enough for them. I'd rather you look at the forest than the tree. The whole thing delivers 80% of what business users want! I've had three projects where I did in two weeks what a group 10 programmers took months and that's sad.<p>Things where I can imporve<p>1. Testing - I usually do a lot of integration testing for the critical paths.<p>2. Security - I always tell people to hire pen-testers but no one ever listens!<p>3. Documentation - My biggest weak point of all. In my defense, I choose functions names reasonably stupidly. I think it's good move to hire great documentation writers.<p>4. Complex Algorithms and Maths - Always good to know more! This is where I have to rely on 100x programmers to come up with a good library. I aspire to be 100x.