All the best practices in the world mean nothing if the software does not work.

Allow yourself to break your self-imposed rules while building a feature.

Once you have something working, go back and clean up the code with all the new knowledge you gained while getting it to work.