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.
- The reliability/correctness of the code is more important than some new cool untested or not mature features.
- 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.
- Each new library/dependency introduces a cost of learning for any developer within the project.
- 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.
- Do not leave commented out code in the code base. If you are not certain if the code is correct then ask for review.