During the implementation, or even after it I sometimes find a better design solution. I think it`s quite common thing for all developers as software once written can always be done better.
But how to analyze your mistakes to prevent similiar mistakes in future? I know 2 things for that: Code reviews and post mortal meetings.
Can you name more and describe how you do them. Also I`m interested in the way you checking that your method works and really reduces the number of design errors, making you a better designer.