Examine each major piece of code (often a Python module that you implemented) and ask yourself the following questions:
Could I reuse it without changes?
How much extra code was needed to actually use the module?
Did you really understand the documentation (even if you wrote it yourself)?
How much of the code is duplicated?
How easy is it to add new functionality?
How well did it perform?
When we ask these questions about the entity and relation modules we developed, we see that:
It was quite easy to reuse the modules
But they do require quite a bit of extra code, for example, to initialize tables and threads
Also, we deliberately wrote specific modules to deal with domain-specific code, like input validation, but it is worth examining this code to see if we can discover patterns and enhance our framework to better support these patterns. One example is that we frequently require auto completion so it is worth looking at how this is implemented.
Performance...