Started listening to Brian Fitzpatrick and Ben Collins-Sussman's talk on "The Myth of the Genius Programmer" during Google I/O 2009. This is the talk's abstract,
A pervasive elitism hovers in the background of collaborative software development: everyone secretly wants to be seen as a genius. In this talk, we discuss how to avoid this trap and gracefully exchange personal ego for personal growth and super-charged collaboration. We'll also examine how software tools affect social behaviors, and how to successfully manage the growth of new ideas.
I'm not sure if I entirely agree with their opinions. If you take a look at sports, the world's best athletes all have huge egos. But their egos do not prevent them from learning from coaches, working effectively with their teammates and leading their teams to championships. Why lose the ego? Is it a bad thing to want to be seen as a genius, as long as you can continue to accept criticism, learn from your peers, work with your peers, accept failure, admit mistakes? The desire to be seen as a genius programmer can be a great motivating force for programmers, just as the desire to be the best can be a great motivating factor for athletes. A healthy ego is not mutually exclusive with super-charged collaboration, although that's the feeling I get from watching the video.
In my ten years of programming I often wished some of my colleagues had bigger egos. I generally find those without healthy egos often don't care about their work. The programmer who wants to be seen as a genius will put in the extra effort to clean up his code, make his algorithm more efficient, track down subtle bugs, because he wants to be seen as the best programmer. The genius programmer walks around with a bug count hovering over his head--and he's intent on keeping that bug count low. The ego-less programmer will call it a day to go home and catch American Idol. Then again, I've also worked with developers whose ego prevent them from admitting to bugs and design flaws. The key is not to lose the ego but to have the right kind of ego, the ego that will motivate but not stifle.
Now this might be a stretch but I get the sense that Brian and Ben want a Communistic approach to software. First they talk about losing your identity (your ego). Then they talked about the community as stronger than the individual using the Apache Foundation example. I don't know, it just sounds kind of like Communism. There's no "me" in Communism, just the state. Everybody is collaborating to further the state. Well, we know how Communism turned out.
Capitalism, on the other hand, while certainly not perfect, has brought more benefits to more people than any social-economic system in history. At the core of Capitalism is the individual. I would argue that healthy egos drive Capitalism and innovation. This works because in Capitalism what is locally optimal for the individual is globally optimal for the state. There's no shortage of collaboration in Capitalism, why would it not be the same in a team full of genius programmers?
Perhaps it depends on your goal. My goal isn't to be seen as the smartest programmer: my goal is to make those around me capable of being the smartest programmer. I don't *want* to be the "go-to" guy: I want a *team* of go-to-ees.
Posted by: Dave | June 08, 2009 at 08:02 AM
Surrounding yourself with great programmers is jut shifting responsibility. You are saying let someone else solve everything. Everyone should look inwards to bring out some degree of a great programmer (should be their goal at least).
Posted by: Bruce Goldstein | June 08, 2009 at 10:15 AM
Capitalism has not brought the benefits you describe. The peak era of capitalism was the 19th century and early 20th century - when children were forced to labour for 12+ hour days for a pittance, and corporations were backed by governments who would send in the Army to slaughter striking workers who wanted such incredibly evil things as a safe working environment and a salary high enough to be able to support their families.
Communism was a direct rebuttal to capitalism, which was (and is) a truly foul and disgusting social creed. Modern capitalism is very different, as it has been locked down and tamed by socialist principles, such as "it's bad to poison your customers with addictive and cancer-producing chemicals".
But yeah - a healthy ego is good, as is incentive-schemes that reward the egos. Pride in workmanship isn't valued as high as it should be.
Posted by: Robert | June 08, 2009 at 05:49 PM
Think of "ego-less" more in the Buddhist sense than in the communist sense. That means being less attached to your own personal creation and being able to adapt.
Posted by: Chris | June 23, 2009 at 02:30 PM
I think the question is "what defines your ego?"
If your ego is defined by how other people see you, then you can't admit mistakes, or be seen learning something new. You have to be perfect. These guys might have high IQs, but they're not good employees.
If your ego is defined by what you can do, then it doesn't matter how big that ego is. You're driven trying to increase the number and power of the things you can do. These guys go beyond their IQ.
Posted by: AndrewS | June 03, 2010 at 10:34 AM