Hacker News new | past | comments | ask | show | jobs | submit login
The 10X Developer In You (gklst.tumblr.com)
42 points by chapel on Dec 21, 2012 | hide | past | favorite | 32 comments

While my productivity may vary wildly based on the factors mentioned in the article, I've built the ideal environment described for my junior guys before, and still seen wildly differing productive output between them.

Software isn't just about flow. It's about managing complexity. I'm better at managing complexity than some guys by a factor of 10. And I've worked with people who are better than me by that same factor of 10.

We aren't all made equal. This is "everyone is a winner" nonsense, and it's not how the real world works. I agree with all of the article's arguments, but the conclusion is a non sequitur.

Totally agree. You really have to work with a 10x programmer to understand that it is not about the flow or work methods.

It's kind of funny that everybody in Hacker News knows that they themselves are easily 10x more productive than the bad programmers they have encountered in their careers, but still can't imagine that there can be a similar gap between them and the best.

Just think about experience alone (which is just one aspect of the 10x difference) and you can easily spot tasks where 10x-50x productivity differences are possible even between smart people. E.g. Imagine that you are faced with a task that essentially requires you to write a small compiler, but that is not obvious from the outset. If you are a smart and productive web dev, but you have never studied or written compilers, you can easily spend a few weeks with the task until you realize that you need to study compiler tech and write one to solve problem well. You can easily spend a few months with the whole endeavor. On the otherhand, an experienced 10x dev who has written many mini-compilers for DSLs in his career, can spot the need immediately and implement it in a few days. And on the otherhand, a less gifted individual can spend two years with the problem in his safe corporate job and never solve the problem. Here you already have infinite difference in the productivity between the best and the worst and easily 25x productivity between smart web dev and the experienced guy.

Now, you can argue that was just one specific problem, but one commonality of 10x programmers is that they have done a lot of different kind of programming, which makes them faster to try even more stuff so their experience is accumulating even faster.

> one commonality of 10x programmers is that they have done a lot of different kind of programming

That is exactly what I was thinking about. What makes me faster than less able programmers often is previous experience on related topics and sheer variety of problems already solved.

When the hints combine, paths open and the boost can easily be 10x or more. This is a large part of what makes me enjoy programming. Nailing it fast.

This is an excellent comment.

Corporate jobs can turn people into reliable adders (1.0 - 1.3 | scale here: http://michaelochurch.wordpress.com/2012/01/26/the-trajector... ) but almost never provide the autonomy that would enable an engineer to become actually good (1.5+) because that requires multiplier-scale insights: "investment" contributions that make future work simpler, more beautiful, easier to perform. Few companies are willing to pay for that stuff. (So they end up paying more, because those multiplier needs happen emergently, anyway, and are poorly performed. http://michaelochurch.wordpress.com/2012/12/14/the-unbearabl... )

I think one of the major problems is that software engineers want rationality and fairness, but you can't "play nice" in most corporate environments and actually learn anything. Unless you work in a rare type of company (cf. Valve) you have to either get political and clobber the project allocation game into submission, or steal away large amounts of time to learn stuff on your own.

I'm a 10x developer most of the time. It's all about motivation. When I'm producing 10 times as much as my peers, I'm working on something I want to work on. I can go all day without visiting facebook, reddit or hacker news, because I simply would rather be working than be reading those sites. Any time I see these kinds of articles that tell you to have "discipline" to not read those kinds of sites, I think they have it all wrong. You're only addressing the symptom.

When I'm forced to work on something I don't think maters, I'm not a 10x developer. I'm really obsessed with code quality, so any task that involves refactoring, I am 10x or even 50x. If the task is to track down a complex bug in a PHP system, and I'm under strict orders to not refactor anything (which is common), then I will be a 0.01x developer. With my personal projects, I'm always 10x or more.

Agreed. I've caught myself forgetting my morning coffee - and feeling more energized than not - when I can start the day with interesting project work instead of the "business as usual" maintenance work.

You'll never comprehend just how good a 10X developer is until you actually work with one. You'll be able to tell they are 10X when you see how much work they get done in short amounts of time.

I don't think it has anything to do with "getting in the zone." A novice programmer that spends 4-5 hours straight focused on a problem is still a novice programmer no matter how far "in the zone" he gets. 10X can only come with experience. And that has to be experience working with other 10X programmers.

A programmer that has 15 years of freelance experience may be good at his/her job, but I doubt they would be as productive as a programmer with 15 years of experience working at top tier companies like Google, Amazon, Facebook, etc.

I really think the only way to become 10X is to watch and learn from other 10X programmers and that will still take years of learning.

The best programmers I know (those we refer to 10X) check Hacker News once a week, their email once a day, twitter once every 2 days and have every notification turned off in every application that could send them one. They also turn off chat entirely.

One even works with a single monitor so as to only see his code and get 0 distractions.

That's bullsh*t. The best programmers I know talk a lot and read a lot. Shutting off oneself just kills the creativity...

Not necessarily bullshit, but anecdotal. Just like your own experiences.

It comes down to what one reads, when, and with how much focus, too.

I just started trying to "chunk" my time in Google Reader, and I noticed a significant increase in actionable information taken away from the articles despite reading from the same sources as during my "between work duties" peeks.

Depends on the job, I guess. Some jobs you hammer out the spec in a meeting once a week, and then sit down, shut up, and implement the heck out of it. Maybe a few tweeks on a public wiki or bug reports fixed during that time.

I suppose I'm noisy as heck, and attend lots of events and meetups and conferences, but I know whole companies full of people who don't get out, dont't talk or read much, and they just stay at work and make a killing. You don't hear about them because they don't get out.

My point is: no doubt that twitter et al are distracting. But that's not what makes the difference between a good and bad programmer. Really complex engineer tasks require your brain to slowly process the ideas that you have, sleep on them, discuss them with colleagues, maybe read something online about it. But I find that the argument that says 'you suck because you are too distracted' is kind of dangerous. Taken to the extreme and it becomes: 'oh I won't answer my mom because that makes me worse at my job' or 'oh I am not drinking wine tonight because I won't be at my best tomorrow'. I think on the contrary, it is important to take one's job slowly to be better at it.

They're not mutually exclusive. But constant breaks for Twitter, Hacker News, etc. disrupt your attention.

I'll echo and extend that. It isn't about production. It's about the quality of the programmer and his/her ability to think.

fizzbuzz is a good example. There are people who simply cannot do it. No matter how perfect the environment, there are people who will never do it. You cannot teach it, train it, or otherwise wish it into existence.

10x is a misnomer probably in most cases. It isn't that the "10x" programmer is that much faster. It's that he/she is doing things the others cannot.

if you can't fizzbuzz you are a 0x or worse programmer, or need to find some anxiety meds before your next interview.

There's actually a huge body of psychological research on what, exactly, creates and boosts flow. In a nutshell, it happens when an individual with high skill meets a problem that they find subjectively challenging, while working with a certain degree of autonomy. There are also personality types that can slip in to flow states more easily (this is known as the autotelic personality, though research on this is a bit sketchy), and there's some evidence to show that flow can be artificially induced through a process called trans-cranial direct current stimulation. Google Mihaly Csikszentmihalyi if you're interested, he's spearheaded a lot of the research on this stuff.

I wrote a pretty significant research paper about this stuff once upon a time... one of these days, I should sit down and write up a proper blog post on it.

I'd love to see that post and the research behind it. Where were you when did this research?

It was just a lit review - nothing original. I did it as a final for an upper level Personality Psych course in college; the paper itself focused mostly on the autotelic personality and the tDCS 'artificial flow' stuff.

There is no magic to being good at programming. First you need to study programming a lot. Then you need to program a lot. Then you will find that developing is about solving other people problems. So you will have to understand the problems deeply. So that may involve some other training. And then, once you don't need to think too much about what needs to be done and how you need to do it, you get very productive. Basically, follow what your teachers tell you, they definitely know better than your average blogger.

I may get some downvotes for this but…

I see a lot of talk on here about removing all distractions and not allowing anything to interrupt your flow so that you can be a 10x programmer. Sometimes you may need to shut out everything, but is it really going to help your team in the long run if you do that a lot?

If you can allow for some degree of distraction and interruption then you may find you pick up on others' problems early, and by having that quick conversation you may help them be a lot more productive. Taking the time out to discuss areas or to pair on problems will also pay dividends.

Much as our egos would be boosted by it the world doesn't need us to be 10X programmers, it needs us and those around us to be more productive overall.

This still involves trust and discipline. If you're constantly on twitter or HN then you're probably not doing that much actual work, but equally if you aren't at least glancing at things like that then you may well find you're missing out on a lot.

Equally you and your colleagues need to trust each other that interruptions won't be too great, and that urgent requests can always be met with, "can this wait a few minutes so I can get to a stopping point."

I can't believe how far I had to scroll down the page to find any comment like yours. All flow all the time may be great for individual productivity, but it's absolute poison for team productivity.

>The best way to get rid of things you don’t want to do is to begin.

I think I'm going to print this out and put it on my wall. Old concept but this says it in a very simple way.

I used to be a 10x developer when I was younger. I would produce huge amounts of bug free, high quality code at a rate much higher than my peers.

I'm older now. I produce about as much functionality as my peers, and at comparable time, but I do so at about 1/10 to 1/100 of the code length.

I haven't tried going back to crunching code at the 10x rate, and I'm not sure I can - I spend the majority of my time now figuring how to NOT write any code (or very little), and still achieve my goals. In a way, I'm still a 10x programmers - 10 times less code, works as well, and is usually much more future proof.

If I wasn't coding for my own startup, that might have hurt my compensation, but I think in the long run, I'm doing as good or better job than I did 15 years ago, even though I'm not faster than my peers these days.

This is bunk. The true 10x developers of the world are simply wired differently than normal. It is not about environment, at all. It is about intellect and drive.

FWIW, I use Dave Cutler as my prototypical 10X developer.

Cal Newport's actually made a career out of debunking the "simply wired differently" hypothesis: http://calnewport.com/blog/.

While structural differences in neurology might grant an edge at the very peak of performance (compare to Michael Phelps and his extra-long torso), the vast majority of performance differences come down to effective training. We're talking 9-9.9x out of the "super-developer's" 10x.

I don't know what kind of programmer I am, but I do know that most of my leaps in productivity come from three sources (I am a web developer):

* experience

* really understanding what the client or business needs, so I don't spend my time building something that doesn't meet the needs of the user

* finding a tool or library that gets 80-100% of the job done rather than me writing the code (my favorite scenario!)

I believe there are many domains where the above factors are enough to make you a great developer, though perhaps not a 1000x dev.

The total span between the best developers and the average is probably 100-1000, because there are a variety of x-factors (i.e. they compound multiplicatively) some of which can easily become a factor of 10.

10x Work: this is the state of flow OP described, that can only be achieved in a healthy environment. I also think OP was right to emphasize trust. It goes both ways. Managers who ask for status (context switches) leave the engineer unable to trust the environment.

See also: What Programmers Want ( http://michaelochurch.wordpress.com/2012/10/30/what-programm... )

10x Learning: pick interesting projects, and socialize with people doing different kinds of stuff. Attend conferences. Take MOOCs. If you can help it, try to limit work that you don't learn from to 2 hours per day. (This may lead to political adversity, so be prepared for that.)

10x Experience: related to the above, it's hard to become a great (2.0+) programmer if you don't get a continuing stream of good projects. It's hard to de-crap your work life and it's a process that requires social skills, which leads into...

10x Communication: your work will have much more of an impact if you are able to communicate to other people how to use it. Make it easy for them. Don't write some software-as-spec system that turns into a black-box, then a legacy system. Build visibly awesome things instead.

10x Problem: this is more of a CEO/founder concern. Some problems are just 10+ times more important or rich in opportunity. Others are unimportant.

Of course, each of these factors can swing the other way and become 0.1x or even 0x (annihilating everything).

There is a talent factor, but I don't know how much of a swing it is. I've seen very smart people write awful code.

I really like this analysis - it (seems to me) to say that most of the 1000x that is available is not because this guy can manipulate the AST really well and I cannot but that a huge variety of dimensions are involved - so ial skills to project choice to Lin term investment in deliberate practise all on top of actual keeping track of ten variables in your head

I often think of football (soccer) players who are rewarded 1000x - the top flight players are clearly not 1000x better at penalties or free kicks than say 4th division players but Their total skill set is 1000x more valuable

The other factor is environment. High stress environments are a killer. Reading The Programmer's Stone (http://the-programmers-stone.com/about/) was a real eye opener for me in terms of mental state and what was possible if given enough space.

Shut up.

You are going to be interrupted and there's going to be meetings. It's the nature of the beast in a business environment. If you can't function in that sort of environment, then you are a poor programmer for that sort of business, and they are better off hiring someone who can, even if they're not a "10X".

If your boss favors open-plan offices to foster collaboration, maybe it's just because he values something besides raw productivity, like being a team player and making sure everyone is on the same page when undertaking a major project on which millions of dollars and perhaps the lifeblood of the business are riding. When you're paying the bills then you get to build your own coder mancave, invincible against the slings and arrows of the outside world. Till then, either shut up and roll with the punches or work someplace else.

Did you just use "team player" without irony?

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