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?