One of the most exciting things I encounter in teams is co-innovation. I love being part of a group who are creating something together, something that no one person could do by themselves. Today I happened across a great example of co-innovation, in the field of fridge stacking.

My partner and I stock the fridge once a week with a major shop. There's often more food to go into the fridge than it will accommodate, so we often end up sort of wedging things in. Over the course of the next few days, the fridge slowly becomes more ordered and it's great to watch. It happens because she and I need to access things in the fridge so we take things out and put them back again, typically in a better way.

This is exactly what happens in well-managed programming teams. If all the developers share the same expert understanding of the code, when one refactors something (takes the code out and puts it back again) the code is better afterwards than it was before. Unfortunately the reverse is also true. If sites are poorly documented, with little or no test code (unit tests, regression test suites), then the refactoring can be disastrous.