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