During each project the goal should be, in addition to the technical execution, to be able to rationalize about the project's usefulness to a hypothetical user. It is an important and valuable aspect of creating user-facing software to be able to understand the decision making process behind the technical implementation.