One of the principals listed in Extreme Programing Explained is the idea of Self-Similarity (taken from Mathematics and fractal geometry). The idea in XP is to copy the structure of one solution into a new context, even at different scales, and is often used to help think about testing, and forms a good starting point for thinking about what structures or processes to apply.
In the Ephox development team we do this at a number of different levels. We practice reflection regularly at a weekly basis with a weekly retrospective. On a roughly quarterly basis we review our current state of play from a process/methodology standpoint. We will often look back over things at a small level with coding. I've recently noticed myself doing the same thing at a micro level, helping myself to learn keyboard shortcuts for IntelliJ.
In summary, some of the good spots for reflection for a development team are:
- Weekly - helping to see what can be done to learn from the previous week and do better in the next week.
- Quarterly - helping to see what can be done to generally improve process, taking a bigger picture view.
- any-time – when you notice something that is interesting (for example a pop-up in your editor) stop and reflect on what has happened – you might just learn something.
Reflection is a great practice to follow at different times. When do you find reflection useful?