Applying Foundational Training Principles to Programming Practices