
The Myth of the Genius Programmer - mlinsey
http://code.google.com/events/io/sessions/MythGeniusProgrammer.html
======
gchpaco
This is a bit of a diversion from Fitzpatrick and Collins-Sussman's talk, but
I run into this belief a lot, and want to make a point.

I see little evidence here that Collins-Sussman has finally understood DVCS as
a social entity, although he certainly seems to have the technical details
down. The strongest argument for DVCS--any DVCS--that I have found is the
periodic fights over "committer access" or project direction generally for
projects like NetBSD, XEmacs, gcc/EGCS, or glibc/eglibc disappear.

I've seen more times than I can conveniently remember a _perception_ of a
cabal of committers who communicate exclusively with each other. This looks a
lot like the structure of some sort of conspiracy, even though that is rarely
the purpose. Even when it is, it's usually trying to work around some
productive but extremely difficult person like Ulrich Drepper or Theo de
Raadt.

DVCSes have the critically important property that there is no longer any
inherent _technical_ center of development but that the _social_ center of
development is retained (usually). So while there is a technical hierarchy of
git repositories that goes to Linus, if you think he's an idiot and want to
take it a different direction, it's easy to do that--and if he decides you
have a good idea in the end, he can merge with you without huge amounts of
effort.

Collins-Sussman has been concerned, publically, that there's some splintering
process that DVCSes enable and that SVN prevents. But this perception is one
you can only arrive at if you are in control of the SVN repository--if you are
trying to submit patches to somebody doing this, and you don't have write
access on the SVN server for branches or whatever (which imposes a nontrivial
amount of effort), you more or less have to do this splintering on your own,
without any tool support. In my experience DVCSes don't make this any more
common than it was once; it's just that now these private splinters are
visible, and can be integrated.

Another secondary thing that's very convenient for me is that I can make many
small changes and push them all at once when I'm happy with them--because
they're small they're easier to review. But this is a workflow issue, it's not
that one couldn't do this with SVN.

~~~
delano
_DVCSes have the critically important property that there is no longer any
inherent technical center of development but that the social center of
development is retained (usually)._

This is a really good point. It allows the social structure of the project to
grow and change in a very natural way which makes it not only easier to adapt
as committers come and go, but effortless.

~~~
stcredzero
The social center is also decided by a kind of marketplace.

With central control of a repository, you can have what amounts to an
"irrigation rights empire" -- a totalitarian regime (perhaps with some
democratic window dressing) based on one party's control over some sort of
infrastructure.

------
alavrik
These guys look like being advocates of mediocrity. I haven't seen such
radical egalitarianism promotion even from junior managers.

I especially disliked the moment when they interrupted the criticizer who was
talking that there are a lot of evidences of geniuses existence and highly
productive programmers in particular.

And rather than advising to learn from the best programmers, they are advising
to learn from ephemeral "community" and trimming ones ego and ambitions.

~~~
dreish
You seem to be making the same effort to miss the point as the man that ran
through a litany of objections starting at 45:18.

I don't like the "there are no geniuses" phrase, especially since they then
have to back down and say, "Well, it isn't that there are no geniuses -- just
that they're extremely rare," which just obscures the point further. The point
I think they're trying to make, though, is that the myth of the hero
programmer who writes a perfect program and releases it to a world full of
unhelpful clods is counterproductive.

If you want to dispute their point, then answer their question: What
successful, widely-used project was created entirely by one lone genius?

~~~
quellhorst
Git and Linux started out as creations of Linus.

~~~
rjurney
And they only took off because Linus is not a total dick, and he published his
code very early so that collaborators could hack on it. Those two things were
important in Linux and Git's success.

Thats all the talk is about. And the only reason anyone is arguing with it is
the very insecurity the talk seeks to address.

~~~
frisco
> And they only took off because Linus is not a total dick

Have you ever seen Linus on usenet? I'd argue that his Real Programmer
protective stance towards Linux was more helpful to it taking off than being a
really Nice Guy.

~~~
stcredzero
>> And they only took off because Linus is not a total dick

> Have you ever seen Linus on usenet?

"Not a total dick" in Internet terms is something like "A little to the left
of Mao." However, Linus is also very astute and capable. People will tolerate
"does not suffer fools gladly" if they are not a fool, or if they like the
person's work.

Every programmer with an ego should ask themselves, "Am I an unjustified
asshole?" Consider:

    
    
        - Do a lot of people mostly like your work?
        - Does the cost/benefit of alienating people vs. 
          shutting down the fools generally work out positively?
          (For the community not just for your personal 
          gratification.)
        - Do people complain about you profusely, but for 
          some reason still grudgingly respect you?
    

Answer yes 3 times? Congrats: you are _not_ an unjustified asshole!

Are you a delusional asshole?

    
    
        - Do only a select few understand your work, and do you
          think even they are all inferiors?
        - Are you *always* right?
        - Do the people who are trying to do something valuable 
          generally try to ignore you?  
    

Answer yes 3 times? Well, don't worry about it, you're probably one of the few
who are genuinely ahead of their time and misunderstood. ;-)

------
silentbicycle
While I don't have the time to watch a 50 minute video at the moment, a common
theme I see in the PDF is that people are reluctant to share source code until
it's reasonably "done". A lot of things that seem impressive as completed
works have spent most of their development messy and (by definition!)
incomplete. When coupled with potentially endless anonymous criticism via the
internet* , this can be pretty intimidating.

I get where they're coming from. I have several projects that I really need to
polish up and upload, and I want them to feel presentable; I don't really
understand how people get used to working in public (on github, for example).
I also do a fair amount of maintenance programming, and ... I want to make
sure my code is better than that. Just because I change my mind, make
mistakes, etc., it doesn't mean I need to publish sloppy code.

* Look at the comments in any discussion on Reddit. About anything. People get nasty, often just because they can.

~~~
swombat
_I don't really understand how people get used to working in public_

It's easy. Until your code is good, no one gives a damn about it. Even if it's
good, you'll still have to shove it down people's throats before they care. So
don't worry that "someone might see your bad code". They won't. Nobody cares.

~~~
staunch
Successful projects are not determined by the quality of the code, but the
utility of it. It's quite possible to have a very successful project, that a
lot of people use, made up of embarrassingly bad code.

------
yan
Love this: "The failures tend to get smaller over time, and successes get
larger. That's a trend you'll see, especially if you're learning, over time"

~~~
cubicle67
Wouldn't this be true only if you're doing the same thing over and over?

------
kunqiana
From my point of view the video is basically saying collaboration is most
important as a programmer. Unlike athletes, programmers have to work together
to achieve something great. Anything that is really impressive/great will come
from the contribution of many programmers (eg linux). The question is: what is
the most effective way to collaborate? Is there something about the ego that
makes us ineffective? It would be really interesting if they had elaborated
more on what makes a "healthy ego". Personally, as one of the critics has
said, "people have egos no matter how humble they appear to be." It is simply
human nature. Perhaps sometime it is more important to not to dumb down our
own egos (or other people's) but to be more empathetic and reasonable working
together.

~~~
pj
In all fields, there are soloists and there are teams. There are team sports
and individual sports. Michael Phelps is a soloist. S. Wolfram is a soloist...
he has a backup band though...

------
Iiis
Don't have time to watch the video, but I read through the PDF (which, btw,
consists of very brief notes, so it's not really worth reading. However I
think I got their basic thesis.)

I find it an interesting point of view, since I'm a total noob when it comes
to programming - first year CS student, only done a few tiny VB projects
before that. However, I really enjoy programming, work on a few projects in my
spare time, and plan to get some decent languages (a scripting language
(Perl/Python/Ruby), and maybe a functional language (Clojure?) under my belt
soon. I've used OO in class projects, but I want to figure out how to use it
in my own projects. I want to learn software engineering practices. I want to
learn graphics programming. That's just over the next couple of years! In 10,
20 years time, who knows?

The appeal to me is that I can never peak in programming, their will always be
new stuff to learn. Anyway, where was I? Oh yeah, my point was that I'm a noob
now, I'm very willing to be modest and learn from others, but the hope of
becoming a genius programmer I find very motivating.

------
stcredzero
Ward Cunningham is a great role model. He's super-smart, darn clever, and just
a really soothing sort of laid-back guy. He doesn't have to struggle with the
alienate/suffer fools conundrum because he's aware enough to be learning
something from the majority of his interactions with other people. If you can
achieve that, you can conserve all the energy you'd waste swatting at fools.

------
gchpaco
There's a flaw in the video around 27:55 that is obnoxious, but it seems to
just be local corruption.

------
spaghetti
When you finally reach enlightenment or a state of "genius" you won't be
thinking about what other people think of you.

------
joe_the_user
Looking at the handout too...,

I am a bit disappoint this talk was not an effort to address the old cliche
that some programmers are ten times as productive as other programmers and
similar things.

I already hate kind of thinking but I would like to have hard figures to use
in arguments against the kind of people who believe this bolox. I agree with
statements like "lose the ego" but I don't think that would fly in arguments
with my manager.

~~~
jimboyoungblood
It may be an "old cliche", but also happens to be true. Maybe you can quibble
over whether it's a 10X, 100X, or merely a 5X difference, but some programmers
are clearly much more productive than others.

~~~
stcredzero
It's also true that some programmers are more productive collaborators than
others. (In fact, some are effectively anti-collaborators -- less work gets
done when they pitch into a project.) If you are in a collaborative
enterprise, this might be something to consider.

------
Hexstream
No way I'm watching a 50-minute video I'm not even sure will be worthwhile. I
didn't find a transcript. I had a look at the PDF and there's nothing
groundbreaking in there IMHO...

