This is my small attempt at adding something to Xp: DontMakeTheSameMistakeTwice We, as programmers, all make mistakes. We are only human. But, making the same mistake twice shouldn't be acceptable. UnitTest''''''s are a big step in this direction. Even PairProgramming can help to eliminate repeating the same mistake. But, I think that what is important is to learn from mistakes and to work so as to not to repeat previous errors. This may entail changing working procedures, building some tools or just adding another UnitTest. Any additions ? NissimHadar ''A wise man learns from his mistakes. A truly wise man learns from the mistakes of others.'' I'm always proud if I don't make same mistake three times. Sometimes failure is not solely ones mistake, it could be lack of effort, lack of lack or lack of preparation. ---- '''Critical analysis''' It's the same as saying "don't make mistakes", which is both too restrictive and too general at the same time to be helpful. The reason it's the same is because the first mistake is part of the discovery. The test is, if you're about to do X, which you've never done before, but you're convinced anyway that X is a mistake in this context, do you do it or not? The other area that needs examination is, how many attempts at X (which will prove to be a mistake at the end of the story) does it take to convince you to your satisfaction that X is a mistake and not the silver bullet you hoped it was? Typically more than one, so again the learning process is violating this rule. And then there's the possibility that X is a mistake in one context and a triumph in a different but quite similar context. How do you avoid "horse with blinders" syndrome if you follow this rule faithfully? How do you define "risk taking" within the context of this rule? ---- Additionally, following this rule too closely can lead to SecondSystemSyndrome. "I got burned by X when I did that on the last project, so now I'm going to do everything in my power to do the opposite". ---- See TwoIsAnImpossibleNumber Let me re-phrase the idea .... when you find you have done a mistake, you should look for a method to stop the same mistake from happening again. This isn't always possible, of course, but I keep thinking how I feel when something goes wrong a second time, I really should update my unit tests, add asserts, clean up my desk ... NissimHadar