This a list of priorities/guidelines to be employed when facing a conflict of different priorities. In any situation when there are multiple course of actions possible then look here to choose what is the best solution to the problem at hand.

Guidelines

  1. The reliability/correctness of the code is more important than some new cool untested or not mature features.
  2. The cost of maintenance is more important than the cost of prototyping. For example, it is not desired to use some new libraries to reduce the coding effort a bit.
  3. Each new library/dependency introduces a cost of learning for any developer within the project.
  4. Mainstream library even with limited features, known-issues is better than a new library that covers only a subset of requirements even if supposed to be better approach. For example, JUnit library is the obvious choice.
  5. Do not leave commented out code in the code base. If you are not certain if the code is correct then ask for review.