Hacker News new | past | comments | ask | show | jobs | submit login
You're Not a 10x Programmer (pboyd.io)
38 points by pboyd2 on Oct 9, 2021 | hide | past | favorite | 43 comments



I'm not a 10x. Ok, I'll concede that point. I'll be average for this conversation.

I know people who can just solve problems. If it takes me all day to solve something, I'll reach out to Ken and he'll say "oh, check this setting. It is probably X". Dennis has seen so many problems, he knows how I've tried to solve them and the solutions before I've finished describing what is going on.

If these guys solve something in 48 minutes that take others 8 hours, they are 10Xers.

But they are more than being "10x productive"; they solve problems that would otherwise not be solved. They get stuff done that other people would lose patience with before it is ever solved. And the best part: it isn't even HARD for them. When those guys rock, they do it with ease, they do it for FUN.

Sometimes I am a 10x programmer. Sometimes I spend 48 minutes solving a problem others work on all day before deciding it isn't possible. My goal isn't to "be a 10x programmer", my goal is to be "10x more often today than I was yesterday".


I have been called a 10xer (aka magician/one-man-army/genius/R2D2/etc..) quite a few times in my programming career. Sometimes I have felt that to be true but most times I just feel like a 1x.

Many years ago, one junior programmer asked me "How do you do it?". And I answered - "Trust your intuition". I realized later it was a "dumb" answer - but few years later I have realized the following (this may not be true for all 10xers):

I cannot remember a lot of things. Probably these memory issues are due to an undiagnosed ADD. But to compensate the memory issue, I have from an early age picked up the skill to see patterns, asking the right questions and attempting to understand things fundamentally (as much as needed to connect the dots). It exponentially increases the learning effort - but may be that extra effort gives me the intuition to solve/narrow down certain problems quickly. On top of that, I have tried to solve difficult problems just for fun - nobody had to ask me to do that. At times it is like Alice falling down the rabbit hole. I would become obsessed with solving that problem even if I had pending studies for exams next morning. All that added a plethora of experience/hours. If I find somebody solving a problem quickly when I am stuck (which in itself is a rare, because I tend seek help quite late), I typically ask questions on what they were thinking. May even dig into their mindset (to their discomfort) like a psychologist.

On the other hand, I am miserably just-average when I am not interested in certain work or do not understand its purpose.

If somebody feels like a 10x in their company, I advise them to move out to a team/company where they are back to 1x, and keep doing so until age catches up and slows them down.


Thank you very much, you described my experience perfectly and I went on researching what the "alice going down a rabbit hole" is: hyperfocus.[1] It is linked to ADHD (which can be both with or without hyperactivity, ADD being the old term for the inattentive ADHD type)[2] and for some additional info, ADHD is the most common coexisting condition to ASD (autism).[3] You might want to check that out! Thanks again for this fantastic comment, it is so relatable that I honestly could have written it myself!

[1] https://www.understood.org/articles/en/adhd-and-hyperfocus [2] https://www.verywellmind.com/add-and-attention-deficit-disor... [3] https://chadd.org/about-adhd/adhd-and-autism-spectrum-disord...


> If I find somebody solving a problem quickly when I am stuck (which in itself is a rare, because I tend seek help quite late), I typically ask questions on what they were thinking. May even dig into their mindset (to their discomfort) like a psychologist.

As someone new on a big codebase, with lots of collegues with lots of experience, this part is really important. I try to not ask questions too early, but when I do, I make sure to try to dig a bit deeper. I ask other questions, about how it relates to other things I've learned. All of that help me build my understanding of the codebase, of the business, of the company and the people inside it quickly.


Perhaps Ken has already had spent 80 hours on a similar problem-solving, so this is why he got a smell of your problem. For you it looks like magic, because you went no same paths.

If you would spend 80 or 800 hours on some topic you will also become an expert "the Ken".


Some people are curious and constantly learning new things. Some people don't and just do the same stuff over and over again. So the fact some people are more experienced than the others even after spending the same number of years in the industry is actually on them, it's their achievement.

I've seen a few situations where an "experienced" team of developers struggled to solve a problem for weeks and eventually an outsider, with even no prior experience with the technology stack / framework they were using, came and fixed it for them in a day. People like that definitely exist and they are not effective because they have just solved the same problem before. I think they are effective because they often learned the fundamentals (theory) properly and then they spent a lot of time in different areas. I guess there is some kind of a network effect there - if you solved problems of unrelated types A, B, C you're more likely to be able to solve a different problem D, than a person who only ever solved problems of type A.


I think of this as a "knowledge map". The more you cover the white spots on the map, by randomly probing all over the domain (i.e. years of experience), the better you can make reasonable assumptions about yet unexplored territory, connecting the dots. Monte-Carlo knowledge probing -- I cannot get all local maxima, but I have an understanding of the general topography.


> Some people are curious and constantly learning new things.

the implication seems a bit disingenuous as if the curiosity and constant learning only counts if it is towards computer science.


Why? I thought their comment was clearly in context of one’s job as a programmer.


I'm a 10x human being. I don't feel pressure to be anything from any outside person. Highly recommended to learn that and grow yourself as a human, not as a programmer.

Nothing you build today will even remain a couple of years down the line. It doesn't matter if you are 10x or not. What we do is completely meaningless anyway. :)


> Nothing you build today will even remain a couple of years down the line

Speak for yourself.


> 'just solve problem'

Exactly that. If one developer cannot solve a problem and the other does. Is that InfinityX programmer?


Depends on the value of the change. :) You can build software with people who cannot solve certain types of problems in their domain. The result just won’t be as useful or valuable. Measuring contribution to that increased value, less tech debt, can be challenging but some organizations have strong analytical abilities in that respect.


Don't tell me what I am and what I am not.

People understand the "Olympics" in terms of sport, but they don't understand the exact same logic when applied to a craft. If you start early, if you focus on incrementally improving and you spend a very long time perfecting your craft, you can be a very, very productive programmer.

I have no idea why, but I'm seeing more and more people doing these kind of articles. I suspect they are coping mechanisms of the authors.


Right? Like I’m a seriously mediocre programmer in terms of output and code quality. I work with a person who churns out 5x more features with code quality that is unassailable. Either I am a 0.2Xer or my colleague is a 5Xer, either way, there is a huge delta between our skill even though they are younger than me and we started programming at a similar age. I think 10Xer is probably hyperbole in most cases but the overall idea is legit.


To continue the olympic metaphor, those medals are handed out for very specific subsets of skills, not even just runner vs swimmer, but specific distances, specific techniques or variants.

While 'olympic-level athlete' contains some level of meaning to me, I feel it is similarly vague enough that you wouldn't know whether a random athlete would be better than average at a random olympic sport. There's probably some correlation, but e.g. a googled list of 10 weirdest olympic events ever claims to include 'poodle shearing', 'solo synchronized swimming', 'horse long jump' as well as the more 'normal' sports that were recently introduced such as 'skateboarding', 'surfing', 'sports climbing'. Would a 10x poodleshearer be a 10x surfer? I'm not even sure that would hold true between skateboarding and surfing which are vaguely related in my mind (as someone who can do neither).

I feel 'programming' is a similarly wide field, and so it's obvious that e.g. a really good COBOL mainframe banking programmer, might struggle with generative audio-visual art and vice versa.

So I guess for me, the difficulty with this 10x programmer concept, is how do you differentiate the experience and the training from the 'raw genius' which is what i feel people are getting at when they use this concept. And that's without even getting into motivation and interest and impact on others (e.g. mentoring teams, supporting others) and business impact.

In general the whole concept seems so undefined that people are all projecting their own things onto it. Which is great for clickbaity blog headlines, but what is the actual take -away knowledge I am supposed to gain from this concept?

That my potential is limited by my genes, my industriousness, my time invested, my focus on one niche? That I should hire people that have iq or focus or domain knowledge or ..? That I should construct teams or businesses around a small number of people that specialize, or i should hire two different ranks of programmers, the 10x and the 1x and use them differently?


To continue on what you said, some people are going to be 10x programmers on a specific codebase, and go back to average programmer when they start a new job. Some will become a 10x in a year, some will still be average after 5 years.

One thing that I've observed is that productive programmers seem to more often "just do things". For example, when impelmenting a feature, instead of thinking about the feature and a potential refactor at the same time, experimenting a bit about how it could look, they'll just implement the feature, so they are done with their task, and then see from here if the refactor is needed.


I believe that a few times in my career I've been a 10x programmer. And it has nothing to do with algorithmic savy.

Those times have been when I've been able to mix my technical skills with an understanding of a businesses needs to recommend them avoiding going down paths that would have been really damaging and unproductive for them. Really it's infinite x if the other path was going to provide 0 or negative value and the new path has any positive value.

I believe that that is the easiest opportunity for most devs to be 10x.


Can we cut this entire topic short going forward.

Stop using the term 10x programmer and start calling it a master programmer.

The entire article would become 2 paragraphs of "I was overestimating myself , you might be too"


Most people think that they’re above average. Not that many people think they’re in the top 10%.

The “most people are average, therefor you must be average” line of reasoning is nonsense. We know that exceptional programmers exist. Why it’s even controversial is beyond me.


I'm pretty sure 10x programmer was 10x the worst programmer, not 10x the average programmer. The average was something like 4x.

http://web.eecs.umich.edu/~weimerw/481/readings/productivity...

>3.2 INDIVIDUAL DIFFERENCES

>These studies revealed large individual differences between high and low performers, often by an order of magnitude.

They also detail how they measured it.


I never stopped learning or tinkering. My programmer journey has been discovering how effective I can be.

When I start thinking about software as a solution, I think about what stories I want to tell about that software. I think about the user and the problem space and how I could deliver value. I think about what events (past tense!) may occur in my system. I think about how I can deliver/deploy the system and I think of what incremental steps may be required to constantly deliver iterative work. The stories I want to tell are a god send when I write tests. Spending time setting up CI/CD pipelines up front is a habit.

I’ve been working on a hypothesis that creating software is actually easy and understandable. I eventually overcome challenges to that working hypothesis. I want it to be true, so I’m figuring out how it can be true even if just for me.

I study a lot. I practice a lot. Maybe this is where anyone similar enough to me would be at this level of learning.

At any rate, it’s obvious to me that there are mentalities that are more effective than others at certain tasks. Of course there will be some who are 10x more capable than others.

Someone who is meditated and practiced the craft of software will be much more effective than someone just starting out.


>If you feel like a better than average programmer, there’s a 50% chance you’re correct.

This is not correct right? The word average should be replaced by the word median. Then this sentence is correct.

More on topic. I strive to be a 10x engineer by multiplying the output of my 1x teammates (including myself) by a factor 2... if I manage to make my team of 5 all twice as productive, boom 10x!


Possibly depends on your age. When I first encountered averages at school, I was taught there were three most commonly used (mean, median and mode) and their various failings, and we never used the term "average" on its own if we meant a specific kind of average. The median was as much an average as the mean.

At some point in the last couple of decades, it seems that "average" took on one specific meaning (no pun intended).


I’ve know several programmers who I would consider to be 10X.

You get an X multiplier when you have a lot of experience with the programming language.

You get an X multiplier when you’ve built lots of similar things.

You get an X multiplier when you understand related technologies in depth.

You get an X multiplier when you really understand how the computer works.

You get an X multiplier when you really understand the operating system.

You get an X multiplier when your damn smart.

You get an X multiplier when you’re organized and systematic.

You get an X multiplier when you know how to solve problems quickly.

You get an X multiplier when you work hard.

You get an X multiplier when you’re creative and can “see” systems in your head.

You get an X multiplier when you’re happy an motivated.


Comically, this comes to the total of 11X, which is about as helpful in describing a person as every one of the described points in isolation.


What I'm not is a 0.1x programmer, and there are plenty of those out there.


Programming is, in many ways like music - it's a multi-faceted skill with elements of math, pattern recognition, abstraction, and so on. (I've been doing both on and off for 35 years now). Personally, in my experience, I think a few things are true:

A) Way more people think they are 2x or 10x or whatever than they are. When you solve a hard problem, it makes you feel like a genius. As we never get to be in other people's brains, we don't realize they all get the same feelings.

B) There ARE geniuses out there. I have met musicians and heard of students (from professor friends) who are unarguably geniuses. People who can do shit like remember an entire Keith Jarrett concert and play it to their piano teacher afterwards. Or memorize a piano concerto from the score on an airplane and then go perform it. (I think that was Rubenstein? not sure.) They are out there. There are folks who were 10x better than I'll ever be by the time they were 16 because their brains just wired totally differently from regular people when they matured. They don't necessarily have stellar careers because they are frequently total oddballs in other areas. Talk to any professional music prof and they can tell you about some very odd geniuses. I have no doubt these people exist in comp sci too, they sure do in math. (Fun fact, piano genius Glenn Gould like to do giant number arithmetic in his head for fun!)

C) There are also a lot of professional programmers who just aren't good. It's so hard to evaluate that many folks who never really took to it can muddle through a degree and hold down a job, especially on a larger team. And heck, they are probably good contributors on these large teams by virtue of their other skills - someone needs to be good at reading requirements and talking to management.

So sure, I agree, the whole "I'm a 10x" or "Be a 10x" thing is usually balogna. But 2x or 3x? For sure. And there are geniuses out there who just smoke the rest of us without blinking.


My main issue with the notion of 10x programmers is this:

- A 1 meter stick is 10x longer than 10 cm stick.

- A 10 years old car is 10x older than a 1 year old car.

- A $5000 laptop is 10x as expensive as a $500 one.

These are all clear and measurable quantities, representing well-defined properties.

How do we measure the difference between a 1x and a 10x programmer? All measurements that were tried in the past are either unrepresentative and easy to game (lines of code, number of commits...), or too vague or depending on interpretation to be useful for any objective measurement (productivity? languages learned? years of experience? development velocity?...)

Until we can find (eve we ever can) a clear, representative and objectively measurable value that we can use to rank programmers, any idea of 10x will not mean anything - or, to be precise, will mean what each of us wants it to mean.


Even after seeing some programmers like bellard and DJB achive 100x of that of a normal programmer, random web developers on hacker news and reddit continue doing mental gymnastics to prove all programmers are equal, maybe doing webshit in react is, after all, above science.


I think the case of Fabrice Bellard is one where working on building the tools instead of the product gives you a way bigger reach. For example, if you're doing webshit react in a company, if you spend time automating the testing infrastructure instead of producing yet another feature, you'll have a disproportionated impact compared to the person that worked on the feature. Of course Fabrice Bellard is still way better than the average developer, by a very large margin. But you can improve your "output" without getting better, just by picking the right problems.


You are no longer allowed to be a 10x in public. In some OSS projects you have to repeatedly humiliate yourself so the gang of 0.5x programmers running the show don't stage a struggle session.

It is to some extent a product of the Maoist cultural revolution we are in.


I am absolutely 10x compared to myself at an earlier stage in my career, at which point I was still perfectly hirable and productive.

There are certainly those who are 10xers compared to me today, especially those active in domains I have less experience in.


There are definitely programmers whose output/delivery is 10x higher than some other programmers. Whether they are 10x and 1x or 1x and 1/10th programmers respectively can be debated, but I feel the former is a more positive way to look at it :)


One of the things I like best about programming (not for a living) is that later on, I'll look at my old code, wonder what was I thinking, and rewrite to get the same thing done, more clearly, in half the lines. Quality takes time.


There’s an obsession with hierarchies in this culture. Things that can’t be measured are.


An easy example of a 10x programmer is just someone who has inside out knowledge about the business. I.e. someone who should have switched jobs to get a serious raise years ago.


Like the 10x programmers, that is a programmer capable of doing the work of 10 normals.

2.5 normals; a normal is a 4x programmer.


This 10x notion really needs to go away. Somehow a very narrow, limited scope metric grew into something that people believe can be a general capability metric of a profession that is supposed to be rather complex. It’s like saying in one study the highest scoring SAT students scored 10x the lowest (say 1600 vs. 160) and now there is a concept of 10x high-schooler. This is just plain silly and juvenile notion.


the "10x programmer" is just rugged American individualism repackaged to make a very profitable and skilled workforce feel insecure.

most successful tech projects are developed by teams with a diverse set of creative talents beyond coding including community building, design, documentation, education.


instead of arguing who is the smarter programmer, help each other make more money.


Salaries are so low in Europe, it only make sence to be a 0.1x programmer :D


Yet another screed from an impostor.

Many SV startup applications were written by one programmer - I've met several.

QED: those are 10x programmers.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: