As a project manager, you want your team not only finishes within tight deadlines, but also develop. This is in fact a reasonable need that managers in general should think about.
My first advice is, like others have already comment: Don’t separate time to learn from time to work. Reason: Developers will see the “time to learn” as “time to do anything they want”, and that’s a waste of time. The best way is to create a learning & developing culture where everyone keep in mind that they must work and develop at the same time.
How to do it? There is no definitive answer for this, but I will share you real story of my company where I work as a PM. My company is 2 years old with less than 20 developers.
We don’t separate time to learn and time to work, but we encourage ones who learn and improve. We have a storage of “library” where developers can create and share their utility functions, slides, snippet of code, etc… all in one centralized place. They can register to be speaker at company’s restrospective meeting (We work in Agile/Scrum). So after the normal retrospective sections, we have 15-30 mins to discuss what our developers have learnt and will apply in their next tasks.
How do we encourage developers to do so? Simple, by incentive. During my time as a PM, I find out that it is very hard to create KPIs and assess developers’ performance. In our company, we use “learning attitude & result” as the most important KPI to assess our developers when thinking about bonuses and promotion. So in our retro meeting, the developers present new knowledge, and we rate their contribution from 1->5. The ones who contribute the most, and the ones whose contribution receives most rating, will surely have big bonus and promotion. So, in summary, instead of give them fixed time to learn, I ask them to show me their result of learning, and reward them for that.
There is no definite right and wrong about this method of assessment, but so far we are happy using our method. And we haven’t regretted it.