Where should employee training/reinforcement of new skills and techniques fall into the project life cycle? Is anyone able to find any studies conducted about how the end product is affected resulted if training is done on the production code during development as opposed to conducted between projects on non-production code.
My team just finished a few releases of different product variations. We now have some lull before our cycle picks back up. Being the team lead, I gave the team members an assignment to re-write an application (one used to gauge prospective employees) using things they've learned since joining the team. Things expected to see was use of dependency injection, unit testable code, and use of the MVVM pattern (a C# WPF design pattern).
My supervisor found out and didn't think this was the right thing to do with this down time. He believes that employees should learn the above things on production code/products to be shipped and that any additional learning and such should be done on their own time.
I do see the business perspective, but we currently have a product that we are about to redo from scratch because we employed this way of thinking in the past. I don't think we should do this, as that produces code that is hard to maintain and is usually buggy.
Did I make the right call for this lull or is there something better to do with the time? I was unsure what to search for and any studies conducted would be greatly appreciated.