Egoless Programming
Egoless Programming
Programming, like writing or creating art, is a very personal endeavor, and, like
artists, some of us just can't stomach it when someone else disparages our work.
Part state of mind and part QA philosophy, the term "Egoless programming" was
coined y Jerry Weinberg, ack in !"#! in his highly influential ook, The
Psychology of Computer Programming.
!. Understand and accept that you will make mistakes.$hepoint is to
find them early, efore they make it into production. %ortunately, e&cept for
the few of us developing rocket guidance software at 'P(, mistakes are
rarely fatal in our industry, so we can, and should, learn, laugh, and move
on.
). Youre not your code. *ememer that the entire point of a review is to
find prolems, and prolems will e found. +on,t take it personally when
one is uncovered.
-. !o matter how much "karate" you know# someone else will always
know more. .uch an individual can teach you some new moves if you
ask. .eek and accept input from others, especially when you think it's not
needed.
/. $ont rewrite code without consultation. $here's a fine line etween
"fi&ing code" and "rewriting code." 0now the difference, and pursue
stylistic changes within the framework of a code review, not as a lone
enforcer.
1. Treat people who know less than you with respect# deference# and
patience. 2on technical people who deal with developers on a regular
asis almost universally hold the opinion that we are prima donnas at est
and cryaies at worst. +on't reinforce this stereotype with anger and
impatience.
3. The only constant in the world is change. 4e open to it and accept it
with a smile. (ook at each change to your re5uirements, platform, or tool
as a new challenge, not as some serious inconvenience to e fought.
#. The only true authority stems from knowledge# not from position.
0nowledge engenders authority, and authority engenders respect 66 so if
you want respect in an egoless environment, cultivate knowledge.
7. %ight for what you belie&e# but gracefully accept defeat. 8nderstand
that sometimes your ideas will e overruled. Even if you do turn out to e
right, don,t take revenge or say, "9 told you so" more than a few times at
most, and don,t make your dearly departed idea a martyr or rallying cry.
". $ont be "the guy in the room.' +on,t e the guy coding in the dark
office emerging only to uy cola. $he guy in the room is out of touch, out
of sight, and out of control and has no place in an open, collaorative
environment.
!:. Criti(ue code instead of people))be kind to the coder# not to the
code. As much as possile, make all of your comments positive and
oriented to improving the code. *elate comments to local standards,
program specs, increased performance, etc.
Takeaway* +n a team)based de&elopment en&ironment# egoless
programming is a necessity. The human principles of software are truly
timeless, The Psychology of Computer Programming was written way back
in -./-. 0ow can this still be rele&ant1 Easy* People ha&en2t really
changed.