Tuesday, May 16, 2006

Egoless Programming

Okay, this was a great read about something I've never really thought much about. In the post he quotes a book by Jerry Weinberg titled, Psychology of Computer Programming. In the book the author talks about "Egoless Programming".
Egoless programming occurs when a technical peer group uses frequent and often peer reviews to find defects in software under development. The objective is for everyone to find defects, including the author, not to prove the work product has no defects. People exchange work products to review, with the expectation that as authors, they will produce errors, and as reviewers, they will find errors. Everyone ends up learning from their own mistakes and other people's mistakes. That's why it's called egoless programming. My ego is not tied to my "perfect" or "imperfect" work product. My ego is only tied to my attempts to do the best job I know how, and to learn from my mistakes, not the initial result of my work.
The last sentence is what really caught my attention. In the post, Jeff talks about the problem that I also have -- I care too much.

I really like the idea of having the team review each others code in a attempt to find errors. We all want the same thing -- better software. Why do I let it bother me so much to be told my code is "buggy"? Why don't I take the opportunity to learn from my mistake? I think I do learn from my mistakes, but I know it would be much more beneficial to me if I didn't take offense to the errors in my code. The errors are going to be there anyway, why not take them as an opportunity to learn and improve the software?

I think I might try doing this more on my current projects.

No comments: