
The 10X Developer In You - chapel
http://gklst.tumblr.com/post/38424333039/the-10x-developer-in-you
======
nthj
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.

~~~
dirtyaura
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.

~~~
michaelochurch
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...](http://michaelochurch.wordpress.com/2012/01/26/the-trajectory-
of-a-software-engineer-and-where-it-all-goes-wrong/) ) 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...](http://michaelochurch.wordpress.com/2012/12/14/the-unbearable-b-
ness-of-software/) )

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.

------
freework
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.

~~~
thirdtruck
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.

------
dglassan
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.

~~~
xutopia
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.

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

~~~
lnanek2
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.

~~~
d--b
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.

------
Itaxpica
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.

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

~~~
Itaxpica
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.

------
d--b
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.

------
aardvark179
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."

~~~
sanderjd
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.

------
hndude
>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.

------
beagle3
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.

------
cek
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.

~~~
thirdtruck
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.

------
mooreds
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.

------
michaelochurch
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...](http://michaelochurch.wordpress.com/2012/10/30/what-programmers-
want/) )

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.

~~~
lifeisstillgood
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

------
bitwize
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.

~~~
michaelochurch
Did you just use "team player" without irony?

