You're Not a 10x Programmer
pboyd.io
pboyd.io
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".
If you would spend 80 or 800 hours on some topic you will also become an expert "the Ken".
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.
the implication seems a bit disingenuous as if the curiosity and constant learning only counts if it is towards computer science.
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. :)
Speak for yourself.
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.
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.
[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...
Exactly that. If one developer cannot solve a problem and the other does. Is that InfinityX programmer?
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.
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?
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.
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.
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"
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.
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.
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.
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!
At some point in the last couple of decades, it seems that "average" took on one specific meaning (no pun intended).
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.
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.
- 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.
It is to some extent a product of the Maoist cultural revolution we are in.
There are certainly those who are 10xers compared to me today, especially those active in domains I have less experience in.
2.5 normals; a normal is a 4x programmer.
most successful tech projects are developed by teams with a diverse set of creative talents beyond coding including community building, design, documentation, education.
Many SV startup applications were written by one programmer - I've met several.
QED: those are 10x programmers.