Om The six mistakes of man The Golden Stairs Search
Playing with Words Do Not Believe Recent & Popular Categories

carnatic.com > Karmasaya > Articles > Ten Commandments of Egoless Programming

Note: I didnot write it ! If you know who wrote it... please email to kishore at carnatic dot com - Thanks ! - Chandramouli Mahadevan forwarded it to me

Dan MacNeil? <dan at lctc dot org> : ...the term "egoless programming" was created in The Psychology Of Computer Programming... - Can anyone let me know if these commandments are from that book !

2004-04-25: David Cary suggests two links

1. Understand and accept that you will make mistakes. The point is to find mistakes early, before they make it into production. Fortunately, except for the few of us developing rocket guidance software at JPL, mistakes are rarely fatal in our industry. We aren't surgeons; we can learn, laugh, and move on.

2. You are not your code. Remember, the entire point of a review is to find problems and problems will be found. Don't take it personally when a problem is uncovered.

3. No matter how much karate you know, someone else will always know more. This fact kept the Samurai from indiscriminately attacking people in Imperial Japan. In our less violent times, the individual who knows more can teach you some new moves if you ask. There will always be people who know more than you. Seek and accept input from others, even when you think it's not needed.

4. Don't rewrite other programmers' code without consultation. There's a fine line between "fixing other programmers' code" and "rewriting other programmers' code." The former implies that a bug or other functionality problem exists and needs to be fixed; it can also refer to correcting gross readability problems. The latter, however, refers to changes made to code for the sake of style. Programmers fresh from college are often guilty of this. Things like renaming variables, the use of a different construct, recommenting, or gratuitous reformatting of white space fall into this category. Such activities, even with the purest of motives, are high hubris and detrimental to team mentality.

5. Treat people who know less than you with respect, deference, and patience. Nontechnical people who deal with developers on a regular basis almost universally hold the opinion that we are prima donnas at best and crybabies at worst. Becoming angry only reinforces this perception and teaches people to avoid asking questions. This can only harm your work in the long run.

6. The only constant in the world is change. Be open to it and accept it with a smile. Look at each change to your requirements, platform, or tool as a new challenge, not as some serious inconvenience to be fought.

7. The only true authority stems from knowledge, not from position. Knowledge engenders authority, and authority engenders respect so if you want respect in an egoless environment, cultivate knowledge.

8. Fight for what you believe but gracefully accept defeat. Understand that sometimes your ideas will be overruled. Even if you do turn out to be right, don't take revenge or say, "I told you so" more than a few times at most, and don't make your dearly departed idea a martyr or rallying cry.

9. Don't be "the guy in the room." Don't be the guy coding in the dark office emerging only to buy cola. The guy in the room is out of touch, out of sight, and out of control and has no place in an open, collaborative environment.

10. Critique code instead of people be kind to the coder, not to the code. As much as possible, make all of your comments positive and oriented to improving the code. Relate comments to local standards, program specs, increased performance, etc.


Categories : (  Article2004 > 04 > 25 )

FindPage or view Recent & Popular

10 best incoming links:
Articles (425)
Programming (188)
RecentChanges (6)
10 best outgoing links:
Kishore Balakrishnan (806)
Chandramouli Mahadevan (757)
Articles (425)
David Cary (5)
The Psychology Of Computer Programming (5)
10 most popular nearby:
RecentChanges (48087)
Articles (8610)
Kishore Balakrishnan (6321)
Programming (4016)
Chandramouli Mahadevan (2588)
The Psychology Of Computer Programming (2368)
David Cary (1897)

(last edited April 24, 2004 by Kishore Balakrishnan. Contact for feedback and suggestions) [info] [diff] [full] EditText of this page

Projects: Namaste Netizen, Karmasaya, World Wide Wisdom
Etc: Contact, Donate.