Meta

This section describes guiding principles and methodologies.

CUPID

CUPID is a set of properties/characteristics that aim to make software a joy to work. The five CUPID properties are:

  • Composable: plays well with others

  • Unix philosophy: does one thing well

  • Predictable: does what you expect

  • Idiomatic: feels natural

  • Domain-based: the solution domain models the problem domain in language and structure

Pragmatism

Pragmatism is a philosophical tradition that considers words and thought as tools and instruments for prediction, problem solving, and action, and rejects the idea that the function of thought is to describe, represent, or mirror reality.

There is often tension between the desire to create a high quality code and delivering value to end-users in a timely fashion. Pragmatism may be applied when it is necessary to focus more on delivery than on the quality of the code.

Iterative Development

Developers shall use methods that support iterative and incremental development. Applying Test-Driven Development principles where possible is therefore encouraged. However, while TDD is not strictly required, all new code should be tested to a reasonable degree before being merged into the main branch.