On GameSpot: Secret new peripheral in Guitar Hero 4?

Download the Builder.com Ten Commandments of Egoless Programming

Tags: Lamont Adams

  • Save
  • Print
  • 2

Takeaway: In a team-based development environment, egoless programming is a necessity. Download our Ten Commandments in tablet format as a reminder to keep your ego separate from your code.


Part state of mind and part QA philosophy, the term "Egoless programming" was coined by one of my favorite authors, Jerry Weinberg, back in 1971 in his highly influential book, The Psychology of Computer Programming. Weinberg was describing a development environment that involved heavy use of peer technical reviews. He used the term to describe the mindset that programmers developed after working in this environment for a time.

The basic idea behind Weinberg's philosophy was that a system of formal peer reviews effectively multiplied the number of eyes looking for logic problems, poor algorithm choices, or even syntax. These extra eyes could catch nascent bugs much earlier in the development cycle than traditional testing could, resulting in shorter project completion times and lower defect counts in live systems. For developers to accept this system, of course, they had to set their egos aside.

Popular peer reviews
Does that sound familiar to you? It should. The idea of formal peer code reviews has figured in a number of development methodologies (or "fads," for the more jaded among our audience) and has been getting more popular recently. Extreme Programming, with its trademark two-developers-per-machine standard, could be viewed simply as a peer-review facilitation strategy. Likewise, the open-source community development process, which has historically been successful in producing high-quality, low-defect software, could be seen as one giant peer review.

Obviously, thin-skinned developers (and some would argue there is no other kind) would be at a disadvantage when working in an environment where constructive criticism is handed out so freely. 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.

The Ten Commandments
What we need is a set of rules or guidelines to help developers keep themselves (their egos, actually) separate from their code. Hence our Ten Commandments for Egoless Programming, which you can also download in handy "stone tablet" format:
  1. Understand and accept that you will make mistakes. The point is to find them 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, so we can, and should, learn, laugh, and move on.
  2. You are not your code. Remember that the entire point of a review is to find problems, and problems will be found. Don't take it personally when one is uncovered.
  3. No matter how much "karate" you know, someone else will always know more. Such an individual can teach you some new moves if you ask. Seek and accept input from others, especially when you think it's not needed.
  4. Don't rewrite code without consultation. There's a fine line between "fixing code" and "rewriting code." Know the difference, and pursue stylistic changes within the framework of a code review, not as a lone enforcer.
  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. Don't reinforce this stereotype with anger and impatience.
  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.

Download the “stone tablet” version of the Ten Commandments of Egoless Programming.

Everything old is new again?
Those members who have been with us since our humble beginning as TechRepublic's Developer Republic may remember a shorter version of these Ten Commandments. This new Builder.com version has been updated with each commandment's amplifying text, which was missing from the original version. Enjoy.

 
  • Save
  • Print
  • 2

Print/View all Posts Comments on this article

covers both sidesshelleydoll  | 06/06/02
Who's rightStephenCairns  | 06/10/02
Error on PDF versionprivately_owed  | 06/10/02
Download link brokengrepjava@...  | 06/12/02
Download link brokengrepjava@...  | 06/12/02
RE: Download the Builder.com Ten Commandments of Egoless Programmingkarimmasry@...  | 08/30/07
RE: Download the Builder.com Ten Commandments of Egoless Programmingkodozani@...  | 06/14/08
RE: Download the Builder.com Ten Commandments of Egoless Programmingsarajchipps@...  | 06/16/08

What do you think?

Article Categories

Security
Security Solutions, IT Locksmith
Networking and Communications
E-mail Administration NetNote, Cisco Routers and Switches
CIO and IT Management
Project Management, CIO Issues, Strategies that Scale
Desktops, Laptops & OS
Windows 2000 Professional, Microsoft Word, Microsoft Excel, Microsoft Access, Windows XP,
Data Management
Oracle, SQL Server
Servers
Windows NT, Linux NetNote, Windows Server 2003
Career Development
Geek Trivia
Software/Web Development
Web Development Zone, Visual Basic, .NET
advertisement
Click Here