---
created_at: '2016-02-11T02:13:43.000Z'
title: The curse of the gifted programmer (2000)
url: http://lwn.net/2000/0824/a/esr-sharing.php3
author: nkurz
points: 381
story_text: 
comment_text: 
num_comments: 166
story_id: 
story_title: 
story_url: 
parent_id: 
created_at_i: 1455156823
_tags:
- story
- author_nkurz
- story_11077799
objectID: '11077799'

---
[Source](http://lwn.net/2000/0824/a/esr-sharing.php3 "Permalink to a/esr-sharing")

# a/esr-sharing


| ----- |
|  ![\[LWN Logo\]][1] |   |  
| ![\[Timeline\]][2] |  |
    
    
    Date:	Tue, 22 Aug 2000 16:00:52 -0400
    From:	"Eric S. Raymond" <esr@thyrsus.com>
    To:	Linus Torvalds <torvalds@transmeta.com>
    Subject: Re: [PATCH] Re: Move of input drivers, some word needed from you
    
    Linus Torvalds <torvalds@transmeta.com>:
    > 
    > 
    > On Tue, 22 Aug 2000, Eric S. Raymond wrote:
    > >
    > > Linus Torvalds <torvalds@transmeta.com>:
    > > > But the "common code helps" thing is WRONG. Face it. It can hurt. A lot.
    > > > And people shouldn't think it is the God of CS.
    > > 
    > > I think you're mistaken about this. 
    > 
    > I'll give you a rule of thumb, and I can back it up with historical fact.
    > You can back up yours with nada.
    
    Yes, if twenty-seven years of engineering experience with complex
    software in over fourteen languages and across a dozen operating
    systems at every level from kernel out to applications is nada :-).
    Now you listen to grandpa for a few minutes.  He may be an old fart,
    but he was programming when you were in diapers and he's learned a few
    tricks...
    
    > Face it. Every once in a while, you have to start afresh. Tell people that
    > "Ok, we can't share this code any more, it's getting to be a major
    > disaster".
    
    I'm not arguing that splitting a driver is always wrong -- I can
    easily imagine making that call myself in your shoes, and for the
    exact reasons you give.  I'm arguing that the perspective from which
    you approach this issue causes you to underweight the benefits of
    sharing code, and to not look for ways to do it as carefully and
    systematically as you ought.
    
    When you were in college, did you ever meet bright kids who graduated
    top of their class in high-school and then floundered freshman year 
    in college because they had never learned how to study?  It's a common
    trap.  A friend of mine calls it "the curse of the gifted" -- a tendency
    to lean on your native ability too much, because you've always been
    rewarded for doing that and self-discipline would take actual work.
    
    You are a brilliant implementor, more able than me and possibly (I say
    this after consideration, and in all seriousness) the best one in the
    Unix tradition since Ken Thompson himself.  As a consequence, you
    suffer the curse of the gifted programmer -- you lean on your ability
    so much that you've never learned to value certain kinds of coding
    self-discipline and design craftsmanship that lesser mortals *must*
    develop in order to handle the kind of problem complexity you eat for
    breakfast.
    
    Your tendency to undervalue modularization and code-sharing is one
    symptom.  Another is your refusal to use systematic version-control or
    release-engineering practices.  To you, these things seem mostly like
    overhead and a way of needlessly complicating your life.  And so far,
    your strategy has worked; your natural if relatively undisciplined
    ability has proved more than equal to the problems you have set it.
    That success predisposes you to relatively sloppy tactics like
    splitting drivers before you ought to and using your inbox as a patch
    queue.
    
    But you make some of your more senior colleagues nervous.  See, we've
    seen the curse of the gifted before.  Some of us were those kids in
    college.  We learned the hard way that the bill always comes due --
    the scale of the problems always increases to a point where your
    native talent alone doesn't cut it any more.  The smarter you are, the
    longer it takes to hit that crunch point -- and the harder the
    adjustment when you finally do.  And we can see that *you*, poor damn
    genius that you are, are cruising for a serious bruising.
    
    As Linux grows, there will come a time when your raw talent is not
    enough.  What happens then will depend on how much discipline about
    coding and release practices and fastidiousness about clean design you
    developed *before* you needed it, back when your talent was sufficient
    to let you get away without.  The code-sharing issue -- more
    specifically, your tendency to abandon modularization and re-use
    before you probably ought to -- is part of this.  Andy Tanenbaum's
    charge against you was not entirely without justice.
    
    The larger problem is a chronic topic of face-to-face conversation
    whenever two or more senior lkml people get together and you aren't
    around.  You're our chosen benevolent dictator and maybe the second
    coming of Ken, and we respect you and like you, but that doesn't mean
    we're willing to close our eyes.  And when you react to cogent and
    well-founded arguments like Rogier Wolff's as you have -- well, it
    makes us more nervous.
    
    I used to worry about what would happen if Linus got hit by a truck.
    With all respect, I still worry about what will happen if the
    complexity of the kernel exceeds the scope of your astonishing native
    talent before you grow up.
    -- 
    		<a href=""http://www.tuxedo.org/~esr/">http://www.tuxedo.org/~esr/">Eric S. Raymond</a>
    
    "...The Bill of Rights is a literal and absolute document. The First
    Amendment doesn't say you have a right to speak out unless the
    government has a 'compelling interest' in censoring the Internet. The
    Second Amendment doesn't say you have the right to keep and bear arms
    until some madman plants a bomb. The Fourth Amendment doesn't say you
    have the right to be secure from search and seizure unless some FBI
    agent thinks you fit the profile of a terrorist. The government has no
    right to interfere with any of these freedoms under any circumstances."
    	-- Harry Browne, 1996 USA presidential candidate, Libertarian Party
    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    Please read the FAQ at <http://www.tux.org/lkml/>
    

[1]: http://lwn.net/images/lcorner.png
[2]: http://lwn.net/images/Included.png

