Dynamic languages have good generic forms of memoization, but I haven't found one I'm happy with in C#. This is a sketch of a generic memoization in C#.
Agile is not about iterative development. It's not about user research or TDD. Agility won't be found in open workspaces - or in cubicles. Agile is an attitude.
... the more I think that simplicity is one of the most critical aspects of quality software. All things being equal, simplicity outweighs abstraction.