
Steve Jobs on Average vs Best Software Developers - benlakey
http://benlakey.com/2012/07/04/why-you-need-to-hire-great-developers-part-2/
======
oacgnol
A bit of a meta question: As someone who feels like a 'B' or even 'C' at
times, what would it take to become an 'A' player? Is it predicated on pure
talent alone, hard work, or experience?

Even though I know I'm still a junior developer (~1 yr exp), I feel hopeless
at times that I'll never approach being 'A' status especially knowing that I
have many peers my age that are already far and away better than me. How would
I overcome that?

~~~
dabent
I believe that the top trait in A players is the same as in the top founders,
which is determination [1]. That determination often manifests itself as the
desire to understand how something really works, rather than glossing over the
details, the drive to learn a new language well enough to use it to implement
ideas, to take on the learning curve for a new tool or system, to automate
something, or to test their code before releasing it into the wild.

I've seen less-than-enthusiastic programmers who release shoddy work, expend
more effort moving work onto other's plates that they'd expend just doing it
themselves, let bad ideas stand without a fight, and never bother to keep up
with changes in technology.

I've also seen very smart developers who've constantly been taken in by the
latest shiny new thing to cross their path, think that testing is for the
weak, and have no real determination to get something up and running
completely.

If I have to be honest, I would describe very few of the developers I've
worked with as "dumb". But many of them are either too passive [2], or lack
the determination or desire to really compete a project.

One thing I've done to grow is to not try very hard to gloss over the details.
Software is supposed to abstract away details, but it's too easy to think
"I'll never learn that." or "Who cares what's under the covers? It just
works." Understanding the subtleties isn't just an intellectual pursuit.
Knowing the internals of a system allows a developer to know the limitations
and strengths of a system, so it can be built upon or even repaired and
improved.

1\. <http://paulgraham.com/determination.html> 2\. Sadly, in some situations,
these are people who've simply been overwhelmed by the bureaucracy of their
workplace. Fortunately, we are currently in a job seeker's market, and
determined people can find better work conditions.

~~~
arthurrr
I don't really think determination is the magic ingredient. Personally I think
the process of writing software is very similar to writing a song. (is anybody
here also a songwriter)? Because if you try to write a song before you're
ready, it just doesn't work no matter how hard you try, but once the idea has
fully formed inside your head, it's as if the song writes itself, i think
software is the same way. i remember hearing jobs talk about how a lot of the
A players would also write poetry.

when i think of A players i always think of the musician who is able to
improvise with another A musician instinctively, without needed time to
rehearse. A players are able to communicate faster with each other than with B
or C players. a so-called "A" player who has a big ego and can't play with
others isn't actually an A player, but has managed to convince others (and
himself) that he is.

seriously, if you want to become a better hacker, learn how to write a song,
it's pure creation (or try painting, but songwriting is more creative imo)

~~~
benlakey
That's a pretty romantic way of putting it, but I agree mostly. You're dead on
about so-called 'A' players who have big egos and can't communicate or play
well with others; They might even be 'A' in terms of technical expertise but
that's not the whole picture.

------
6ren

      > it used to be the case in hardware
    

I think it's fair to say that Woz was a 50:1 or 100:1 guy.

Jobs isn't saying A players are as common as straight-A students (it comes
across that they are extraordinarily rare; it takes " _incredible work_ " to
find them), it's just that (as he plainly states), unlike in most other
fields, instead of performing 30% better or twice as well, they can do x50 or
x100 times as well.

Perhaps better examples are fields where output scales easily: e.g. one
novelist can sell many more books than another. This performance is not
related to not how quickly they type, but what they type. It reflects the old
idea of "I'm sorry to write you such a long letter, I didn't have time to
write a shorter one". The hard bit is in asking the right question, seeing the
problem in the right way, redefining the problem - then, solving it is
(comparatively) easy. It's about understanding what the problem actually is.
Then, things can become radically simpler. Any sufficiently advanced
understanding, if implemented as a technology, is indistinguishable from
magic.

Programming dramatically rewards such understanding, because understanding can
be realized so easily implemented in a working technology (i.e. a program).

------
saddino
IMO truly great developers are not just developers. They are also software
architects, UX and UI designers, network engineers, etc. "A" developers knock
down learning curves and assimilate everything about software creation
_innately_.

~~~
taligent
This is absolutely the right answer. I would add that the BEST developers are
those that have some business or project management background.

That way they can put what they are doing in the greater context of the
organisation. As well as add a lot more weighting to maintainability and
future flexibility over the "latest cool thing".

~~~
philwelch
At this point you're getting a little overgeneral, I think. One of Steve Jobs'
A players was undoubtedly Bill Atkinson, but what he lacked in business
knowledge, he more than made up for in technical skills. If you're an A player
working in one of Intel or Microsoft's compilers teams, you win based on deep
technical knowledge, not understanding the "greater context of the
organisation".

------
ksolanki
I think there is a lot of talk about hiring an "A" developer, but almost
nothing on _what_ makes an A developer an A developer. More likely than not,
it a continuum, and that a lot of engineers have the potential to be an A, but
don't end up getting there due to one reason or another. It would be great to
see some discussion on what environment could one provide that would enable A
players to thrive and reach their potential.

~~~
sliverstorm
_It would be great to see some discussion on what environment could one
provide that would enable A players to thrive and reach their potential._

Pay them enough, give them an interesting problem, and lock them in a room
with a bunch of other A players

~~~
benlakey
Pay is actually quite low on the list of things that a great developer will
value when choosing where to work. And I think it's dangerous to just lock the
A players in a room amongst themselves; they need to communicate closely with
others in the organization, otherwise the value they try and add might be
missing the target.

~~~
sliverstorm
That's why I said "enough", not "a lot". Everybody has to eat food, have a
place to sleep, etc.

I know, I was being somewhat facetious. More what I mean is, put them in a
tight-knit group, and you are right- it is very important they interact with
the rest of the organization too.

------
diminium
Plus A players have a tendency to care a lot more about their own knowledge
that it allowed Steve Jobs to yell at them to improve their efficiency.

If Jobs yelled at a typical B player or corporate drone, they would just take
it and go on and maybe sit at the bar wallowing in their sorrows.

With A players, Jobs would tap into their insecurity that they might not be
smart enough causing them to want to learn more to close that insecurity which
then allows then to produce a better product. Their fear that they may not be
smart enough would cause them to become even smarter.

Jobs needed A players otherwise his "motivational techniques" would fall flat.

------
zwieback
We hear this a lot and somehow feel it's true but there are no reliable
metrics and little verifiable data so ultimately it's just talk.

~~~
omgsean
Agreed, I'm getting kind of sick of these articles. It's like if the developer
community here started posting fluff pieces about how you need to use the best
programming languages and the most optimized frameworks.

Maybe I'm out of step with the recruiting community but are there people who
are sitting around going "let's round up some really mediocre candidates?"

~~~
yen223
[Maybe I'm out of step with the recruiting community but are there people who
are sitting around going "let's round up some really mediocre candidates?"]

There are a lot of people going "let's round up the cheapest candidates we can
find".

Said cheap developers will eventually wind up costing the company more than
they make back.

------
kamaal
One of my mentors(Who also happens to be my Uncle) is a great guy. He is great
Start upper, who has done some amazing things in Embedded electronics space.
While making tons of money.

A while back, I saw him fixing some bugs in the code. I saw he had an editor
open(Notepad basically). And I was like 'You still code?'. And he replied
yeah, I like to do this work sometimes, sometimes not always. He told me he
was not a very great programmer, but he had the quality 'To convert time into
something which is useful and sell-able'. You will need to be good at
programming to do that, but you don't have to be too great.

I think his advice and what I could take from him was, Never go fancy and too
much into the tool religion. Begin with the end in mind, and execute. Do what
it takes to achieve something. Be productive, plan and work on focused goals.
Track and review your course. Getting a time table helps.

Provided you are productive you can learn and do anything. Focus on the big
picture and try to solve problems that matter.

What will it take to be a great programmers. Its just the same thing that
would take to be with any other profession. You have to just execute like
crazy until you win.

Shipping and problems solved count. Everything else(Blogs, tweets, whining etc
noise) is pointless.

------
thomasjoulin
I've been a developer for more than five years now, and I met a lot of
brillant people that are more than a 100 times better than me. I also saw code
and people that are so bad that I would qualify as a A player... Compared to
them. I'm probably more than a 100 times better than them. So in my opinion,
in software development, there is a much wider range than 100:1, and if you
feel like you're an 'A' player, you're probably overestimating yourself.
Likewise, if you feel you're a 'C' player and are worried about it, don't
worry too much, go on StackOverflow, answer question, learn to get better, and
be confident that maybe you're not an 'A' player, but you're pretty good and
will be a 100 times better by next year.

------
jasonkolb
I normally don't participate in these threads, but I watched the interview
yesterday and I think Steve Jobs did a masterful job of explaining this
phenomenon and it is getting lost in this conversation.

Fundamentally, and he talks about this, computer programming is a way of
encapsulating _your thinking_ in code. You are transferring your thought
processes into computer code. A computer program is, quite logically, an
encapsulated and packaged thought process.

I don't think anyone can or should try to argue that everyone thinks the same.
Hence, not everyone's code is the same. And it follows that some people's
thought processes are more efficient or better structured than others. These
are the 50x'ers and 100x'ers. The A players. And I feel that just
understanding that what you are doing is packaging your thought processes
helps immensely in becoming more efficient, just because of the way you
approach the problem.

People who are the 50x'ers, or 100x'ers, just solve problems very efficiently
and are very good at packaging that problem solving logic in code. They are
probably not as good as the 1x'ers in other areas of life--perhaps they are
not as good at loving people, or raising children, or writing, whatever. They
can be (and in my experience often are) not as good at a million other areas
of life, many of which are far more important than programming. But they are
very good at problem solving and transferring that problem solving logic into
computer code.

I agree with Steve.

~~~
nahname
The hard problems in software are not adding features or coming up with crafty
efficient solutions. That is actually quite easy and I am constantly surprised
how mediocre to poor developers can consistently come up with workable
solutions.

The hard problem in software is writing code others can use. Everyone can
write a solution that makes sense to themselves. Few can write one that makes
sense to other developers. People who write code professionally will know what
I mean. When you get someone else's work and realize it is better than
anything you could have come up with. Not because it is extremely complex, but
because it is perfectly simple.

I completely agree that people do not think the same. Where you went wrong is
in believing an individuals thought process takes precedence over a teams.
That is exactly the opposite of what is required and what software development
spends a lot of time battling against.

~~~
jasonkolb
I disagree... the highest-value problems are often VERY hard.

Think of things like natural language recognition, predictive analytics,
statistical analysis, and so on. Things that seem like magic to the end user,
that they've never seen before, are very hard before they're abstracted into
something that B/C players can re-use. Woz, for example, worked some magic and
packaged a computer circuit board into something that tons of less-talented
people could build on. I would not even want to attempt what he did.

Yes, creating a feature like adding a Like button does not take complex
thinking, but moving the needle forward significantly often does. I believe
this is what Jobs was alluding to.

~~~
nahname
I feel like we are discussing this from very different perspectives. You raise
hard computer science problems and a Woz example that is hardware related. The
article was about software, not people who push the envelope of what is
possible with computers.

If you are tackling problems like natural language recognition you don't need
a superstar programmer. You need someone with a background in Computational
linguistics.

Assuming we are discussing software. Hard computer science problems are,
unfortunately, very infrequently brought up in a business setting. The biggest
challenge in software is building the right thing. Change is inevitable and
solutions are often large. This means you need to have teams of people working
together building solutions that are very malleable.

Here is another way to consider it from my perspective. The article is about
teams of 'A' players. I am guessing Linus meets your criteria, but you don't
hire Linus. You don't have teams of Linus'. Linus is something else...

------
chrischen
So what do B and C developers do? Not everyone can be in the A tier.

Wouldn't a better strategy for society be to focus on extracting maximum value
and output from people of all capabilities? Just pay less capable people less,
and give them smaller responsibilities.

~~~
tjmc
_So what do B and C developers do?_

I suspect the ones at Apple develop iTunes for Windows

~~~
sjwright
It's funny because it's true.

------
heifetz
that's true for any task that is mostly bound by intellect rather than
something else. The cab driver can only drive so much faster / better than
everyone else because he is constrained by the traffic and the car. In the
case of pure intellectual pursuits like writing a novel, or painting, there is
a vast difference between the masters and the average person. Same thing for
programming, it's part art, part science, mostly constrained by intellect.

~~~
danso
I'd say it applies even more to great developers. Good programming greatly
multiplies a single person's work. When great developers get together and all
understand a set of best practices along with bringing in unique individual
talents, then their creative output will be exponentially better than a group
of lesser programmers.

~~~
heifetz
wouldn't that be the case with any sort of group project? i.e. hard sciences

~~~
WiseWeasel
The bureaucracy in the institutions doing hard sciences eventually wears down
even the sharpest mind.

------
stillmotion
His response reminds me a lot of what I have read in Valve's employee handbook
(<http://newcdn.flamehaus.com/Valve_Handbook_LowRes.pdf>) in regards to their
developer culture. By what I understand, Valve has established a self policing
system in which every employee has complete autonomy over what they decide to
work on or contribute to. Gabe Newell is emphatic about the flat hierarchy of
Valve and its peer-review system that replaces the need for managers. I've
struggled to understand why this has been successful for them as an
influential video game company, but it appears Jobs' insight underlines a
similar truth. Good developers are not only great problem solvers, but
managers in themselves that comprehend the work needed to be done and are
willing to work with those smarter than themselves to see it done.

~~~
InclinedPlane
Look at the story that was kicked around recently about the fired apple
developer who snuck back in to complete his work. That's the way the best
developers are. They are intensely passionate about their work, and very self-
driven. You can't get them to stop working on projects they care about.

------
andrewljohnson
Is the meta-leaning here that you should not hire programmers in the Bay Area,
until you can pay $120-200K + stock for experienced guys, and 80-90K for top
college grads?

Maybe that sets a hard target when you know to grow your start-up to the third
developer, when bootstrapping. Can you pay someone 100-200k per year? Time to
grow.

~~~
pbreit
No. For one, that was said 10 or 15 years ago and things change. Second,
talented engineers (like everyone) value a variety of things other than money.
Finally, other competencies are becoming as important or more so than raw
engineering for a lot of companies.

~~~
benlakey
Agree. Financial compensation is actually often much lower on the list of
things software developers value at a company, particularly when they are 'A'
players. Solving problems, working with other 'A' players, and stretching ones
abilities become more important. You do have to pay competitively though.

~~~
nandemo
I think "you have to pay competitively" is true and pretty much negates the
claim that financial compensation is low priority.

------
greggman
Video Game artists are 50 to 1, best to average. I've worked with 4-5 of best
and 50-100 of the average. The best are prolific, get stuff done on or ahead
of time and follow every technical detail required. They are technical enough
to know what's needed to accomplish a given goal without needing to be hand
held. Whether it's thinking through all the tiles need for a tile based 3/4
perspective game for making something beautiful with a limited polygon and/or
texture budget.

They really do get way more done than the average artist. Unfortunately there
just aren't enough of them so we do the best we can to help the average ones
be as productive as possible and keep hoping to find more of the amazing ones.

------
rizzom5000
As much as I enjoy the hilarity of psuedoscience and anecdotal evidence - this
oft-repeated plug has become tiring.

Will someone (other than Steve McConnell) who parrots these numbers ad nauseum
please provide some evidence for your claims? Really, the best car is only 20%
better than the average car? In what way? Define the best? Please, go on,
explain your methodology.

Do the people who continue to spew forth this gibberish actually claim to have
education and credentials of a scientific persuasion? Do they actually
consider themselves professionals in a field that requires logical and
critical thinking skills? Barf!

------
xiaoma
You can see the Lost Interviews on Youku:

<http://v.youku.com/v_show/id_XMzU4OTExMjY0.html>

<http://v.youku.com/v_show/id_XMzU4OTExNjEy.html>

<http://v.youku.com/v_show/id_XMzU4OTExMzk2.html>

<http://v.youku.com/v_show/id_XMzU4OTExMjIw.html>

<http://v.youku.com/v_show/id_XMzU4OTEwOTcy.html>

...

~~~
benlakey
You can also see them here:
[http://www.amazon.com/gp/product/B008GJVAW4/ref=as_li_ss_tl?...](http://www.amazon.com/gp/product/B008GJVAW4/ref=as_li_ss_tl?ie=UTF8&tag=benlakeycom-20&linkCode=as2&camp=1789&creative=390957&creativeASIN=B008GJVAW4)

------
lollancf37
What amazed in those kind of post, is that people who actually work in the
industry are not bother by the actual lack of evidence in those kind of claim.
I respect the opinion of Ben Lakey and Steve Jobs but they are opinions not
laws.

I mean seriously, regardless of the job or the level of awesomness of someone,
who likes to work with incompetent collegues ?????

They are thousands of bad developpers out there ? Seriously ? How do you judge
?? How do you know ??

Personally I know tons of developpers who works on awesome things at home but
do shit at work 365 days a year. Simply because that is what is required of
them. Careful here, I am not saying that, this is the case for everyone and
that I have explained everything. I'm just saying that it will be nice if in
our industry we stopped putting so much ego in everything we are doing. If you
are a A, A+, A++, S++X37 developper good for you, truly.

From my little experience ( ~= 5 years ) there is not much state of the art
project going on in the industry. Most project sucks from a technical point of
view.

Also from my little experience, recruitment is fucking hard. Ask Google.

~~~
lollancf37
You'll notice that I didn't talk about managment and the value that companies
put (or don't put) in IT ...

------
rodp
I believe there are many A players who perform on B or C level because they
are managed by B or C players. Steve Jobs was an A-level CEO, who knew how to
inspire his employees and ignite their potential to be 50 or 100 better. Not
many CEOs are like that.

If an A-level developer can perform 50x or 100x better than average, I'd guess
that an A-level CEO can perform 500x or 1000x better.

------
aik
The most important thing when trying to become an 'A' player in anything is to
always ensure you're engaging in deliberate practice. The simple truth is that
a very large majority of people switch to auto-pilot or stay within their
comfort zone as soon as they become proficient at something. It's easy to
think that the existing 'A' players were just born that way, when in fact they
probably spent thousands of hours in deliberate practice. It's very hard to
find an exception to this.

So if you do want to become an 'A' player:

\- Figure out a way to always be deliberately practicing.

\- Always be aware of whether you're doing something because you've always
done it, or whether because it actually is the best way.

\- Be around other 'A' players and learn from them.

\- Continually stretch beyond your comfort/"knowledge" zone.

\- Continually learn new things.

\-----

Some reading material on the topic:

Bounce by Matthew Syed

Talent is Overrated by Geoff Colvin

------
DaniFong
I think it's not the right metaphor. In class, the difference between an A and
a B is 10%. In, say, Chess, the difference between a master and a grandmaster
is that a grandmaster will win almost every time. I think that's a better
scale.

------
prezjordan
Off-topic, this is one of the most readable sites I've ever visited. What is
it, exactly, that makes that typesetting so pleasing to the eye?

~~~
alexpenny
Five reasons:

1\. Proper line height

2\. #404040 for text color instead of #000

3\. webkit-font-smoothing: antialiased;

4\. text-rendering: optimizeLegibility;

5\. Steve Jobs quote

Wow is this guy a designer?

~~~
tjsnyder
A designer would probably be a bit more consistent with the vertical grid. For
instance, the margins are inconsistent with the line height etc.

~~~
alexpenny
I kid, a baseline grid is the least of his worries.

~~~
benlakey
I'm most definitely not a designer. :-) If you're interested, it's just the
'Responsive' wordpress theme. <http://wordpress.org/extend/themes/responsive>

------
pessimist
I think this 100x rule is not unique to software. Consider athletes for
example. The best athletes are much much better than the merely very good. For
example, the top tennis player would defeat the 500th best every single time
barely losing a single game. And the world no. 500 would defeat a good amateur
6-0 6-0 (as David Foster Wallace found out).

~~~
AngryParsley
I think you're right about the disparity applying elsewhere, but I disagree
with your example of athletes. Beating an opponent consistently is not the
same as beating an opponent by a factor of 50. For example: I'm no sprinter,
but Usain Bolt runs less than 2x faster than me. And there are thousands of
athletes who are a few percent slower than the best. They don't even get to
the Olympic qualifiers.

On the other hand, I've seen productivity vary drastically among knowledge
workers. It would be interesting to see studies involving actual numbers,
since I think 10x between average and best is an exaggeration. Worst and best,
maybe. But a lot of that is because the worst programmers can cause more
problems than they solve.

~~~
daeken
I'd argue that in the case of something like sprinting, looking at it in a
linear way isn't going to get you much. I don't know much about it, but it
seems to me that every time you cut X seconds off your time, it's that much
harder to get down to X _2\. If you looked at it from some sort of a
logarithmic basis, I find it really unlikely that Usain Bolt is_ just* 2x
faster than you.

~~~
AngryParsley
(I'm not really sure why I felt the need to write this rant. It was an itch I
had to scratch.)

It may surprise you, but healthy adults don't differ much in terms of physical
ability. If you measure watts output or steps per second or anything
quantifiable, it's going to be less than an order of magnitude difference,
never mind a 100x difference.

I can run 100 meters in 15 seconds. That's 6.7 meters per second. Usain Bolt
can run 100 meters in 9 seconds. That's 11 meters per second. 11.11/6.67 =
1.67 times faster. If Usain could somehow cut 5 seconds off his time and do a
4-second 100 meter dash, he'd be moving along at 25 meters per second. That
isn't quite 4x faster than me. Such a feat would certainly be much more than 4
times as _impressive_ as me running, but it wouldn't be more than 4 times as
fast.

If you used some other yardstick, you could come up with some other number.
Usain Bolt is the fastest sprinter alive. That makes him one in 7 billion.
There are likely millions of faster runners than me. I'm maybe one in 100. 7
billion divided by 100 is 70 million, therefore Usain Bolt is 70 million times
better at sprinting than me.

Sound silly? I think so too.

When measuring programming ability, we don't grade on a curve. It doesn't
matter how much (or little) effort you had to expend. All that matters is the
result and how long it took.

------
sjwright
Anyone who _aspires_ to do their job better, wants to learn, hangs out in
places like Hacker News and Stack Exchange, takes an interest in at least
reading about new ideas, loves what they do, and has an upbeat attitude...

...anyone who ticks all these boxes is at least a B+ player in my book.

------
mkramlich
Considering this is a man who's built one of the world's most successful
computer software and hardware companies, I think it's safe to say he knows
whereof he speaks. And we can put this question to rest.

And I think the exact number or ratio is not important, and probably not
measureable. But I bet anyone who's been around long enough, exposed to wide
enough variety of programmers, will agree that there is a wide range of skill
& talent. But of course when it comes to pay, salary-wise, working for
somebody else, there really isn't. And that's a shame. Or at least an
inefficiency.

~~~
rizzom5000
I admire and respect Steve Jobs as a businessman. I don't admire and respect
him as an engineer, and certainly don't admire and respect him as a scientist.
The differences are subtle and staggering all at once.

I disagree that the question can be put to rest. Your logic follows from a
fallacy known as 'Argument from Authority' or 'argumentum ad verecundiam'.

I understand that the comments on this board are derived from a wide variety
of individuals, where there is a wide range of skill and talent. I completely
agree with your 2nd paragraph.

~~~
mkramlich
Don't think in terms of "the rules of debate". Think in terms of evidence,
experience and analysis. What I'm saying, and I think the place that Steve
Jobs was speaking from, and I think others are speaking from, is from actual
direct experience with lots of folks in the real world. Forget proper "data".
Forget authority, personally. What I was saying was, look, for the folks that
_do_ need an appeal to authority (because they have no experience themselves,
or can't do the analysis themselves) the Jobs quote should be money for them.
And it doesn't matter whether Jobs was an engineer or not. He worked closely
with and led, and hired/fired hundreds of engineers over the years, starting
with the Woz himself, and so he's seen firsthand the variety out there in
terms of talent, knowledge, skill, attitude, work ethic, etc. It's irrelevant
whether he's an engineer or scientist. By being an entrepreneurial business
guy in the computer field over the course of 30+ years, at the helm of a
company that "kicked ass and took names" in at least two distinct periods
under his watch, there's a reasonable case to be made that he knows whereof he
speaks. Could he be wrong? Could he be stupid? That's not the smart way to
bet.

Also, related: one doesn't need to cite data or academic papers or construct
airtight debate-worthy logical arguments to reach conclusions like, gosh,
pizza comes in a wide variety of topping mixes, flavors and quality levels.
Just experience a bunch of different pizza over the years! Done. :)

