In developing my own plans for continuous learning at various employers, I've decided to share some of my insights for creating your own culture of learning. Not just the training materials you need, but how to follow through and make sure it becomes a key part of your team's personal development success.

I believe these are the key pieces to having a successful and enjoyable continuous learning environment on an engineering team:

Start somewhere

I know that sounds cliché but it really is truth. Don't worry about having the perfect plan out of the gate. Just like any technical decision you make on your team this plan should also be iterated on.

Take fast feedback and make changes. Then send it back out into the wild with a sample of your team to try it out. Have a new doc system they should read from? Ask them their opinions on it. See what you can improve. Have a new vendor for training videos? Get trial accounts first and see how the quality is, what features they offer, and how your co-workers like the style of instruction.

Whatever you do don't sit back on your hands and force any particular methodology on to anyone.

Speaking of one-size-fits-all

Don't just provide a single method for learning. Not every engineer learns in the same way. I spend a lot of time on various developer Discord servers helping people and a question that comes up a lot is "How do I learn X?"

Inevitably people point out their favorite links to YouTube videos or some paid course they've taken.

But my first questions are always "How do you prefer to learn? Book? Video? Deep dive and then start a small project? Learn the bare minimum and then dive in head first to a big project?"

Have a flexible learning system and paths to increasing knowledge by offering a variety of sources for topics when you can.

Don't do it all yourself

Sure you might be photogenic and a wiz on the camera. But do you have time to make all the video content yourself? Likely not if you're like me and juggling this continuous learning program amongst other duties.

Seek out the best materials by talking to colleagues inside and outside of your company. There are professional developers, developer advocates, and just full-time trainers making amazing content. Find it and use it. And of course, curate it to keep it up to date.

Stay up to date

Curating the content means continuously curating it. Don't let it get stale or out of date. If you recommend a particular course about a subject make sure to see if new versions come out. If they keep pace with the changes to the language, framework, or platform the course is about.

And don't be afraid to reach out to vendors to let them know if their content is stale. Keep them on their toes and be the squeaky wheel. I'm sure they're already working on updating content if they're reputable, but it doesn't hurt to keep in contact with them. Especially if you're paying for a learning service.

Choose a great vendor

Though ultimately you're going to have a variety of sources for your team to learn from (as mentioned above not everyone learns the same). But you'll likely have 1-2 paid vendors where you can access their content and follow learning paths.

Make sure they have a great interface for keeping track of what track people are on, their progress, their "grades", and whether they're hitting milestones. This is often accompanied by awesome dashboards, graphs, etc. A shout out to sites like PluralSight of which I'm a big fan.

Even better if they have an API you can talk to because you should ...

Have a single pane of glass to show progress

Be ready to develop your own single pane of glass where you can show off all the progress being made on learning paths, certifications, and labs.

It is great that PluralSight has a dashboard to track those things for their content. But keep in mind you should have MORE than a single way to learn things. You may be tracking certification progress in Azure's or AWS's own interface. Learning paths from PluralSight. Book checkouts / book purchases. Proof-of-concept or experiments used to learn new frameworks.

Document all that progress and have it accessible to everyone in the company so they can see the engineers are knocking it out of the park.

Provide education budgets

You curate resources, gather materials, and point everyone to get going. But your co-workers are going to find other resources too. Be prepared to give them budgets to pay for their own books, videos, Udemy classes, or other related educational materials.

Then ask them how it went and if their material was great for that particular topic, go full circle and see how you can get it set up for others to learn from too. Envelop it into your on-going plans for education.

The more automated you can make this the better. Don't get hung up on expense reports, approvals, etc. Give them a monthly or yearly budget and get out of the way they're using it.

Be prepared to do the material too (at least some of it)

This is probably a little controversial as how can any one person make time to go through all the same training material.

It is potentially a lot, I know.

But the value is tremendous if you can have intelligent, deep discussions with learners as they're also going through the material. Even if you're already a CSS or AWS expert, when new hires are going through the material they'll likely need someone to talk to about what they're learning.

Encourage inter-team discussions and to speak with their supervisor as well. Ultimately though, you'll get seen as an expert and whether or not you can answer them is immaterial. You just need to be available to them and be available to help them figure things out even if you don't know the material in depth. Be good at finding answers and if you can, teach them how to do that better too.

Don't force certifications

Make official certifications available and obviously pay for them as well. But do not make them mandatory. They're nice to have and I feel like the studying up to the test and the tests themselves often teach a lot.

However, not everyone is great at taking those kinds of tests and there should be a low-pressure environment to learn in. Support them if they want to get certified; but be okay with individuals not persuing.

Learn, Share, Misc

At every company I've been at since 1999 I've set up bi-weekly meetings titled "Learn, Share, Misc".

The format is simple. Everyone looks out for awesome articles, great videos, how-tos, tweets, anything that they think is worth bringing up and they send it to you with a few words to synopsis why they want to share this with the group.

Prepare a deck or even just a list of links to these things and pull it up on a shared screen. Then, importantly, have the person talk about why this item is great. If it is new tech, they can say "We should look into this for our product because we've been needing X feature" or "Look at how Netflix handles their chaos engineering" or even the occasional "This comic from /r/programmerhumor really stood out to me and I wanted to share. Doesn't it remind you of that problem we had with memory leaks? Haha."

But also take this time to share internal knowledge and gains. Look at this cool new widget the UX team designed. Look at this proof-of-concept we finished and could use some volunteer testers for. Share all of those things too, but be careful not to let it turn into a sprint review session. Each topic covered should be thought of like a lightning talk -- 5 minutes or less of back and forth.

Then most importantly, collect the links, and share them on your company intranet, Sharepoint, or other knowledge sharing system. That way people that couldn't attend or want to dive deeper on some topic can find the links and do their own digging on the topic.

Have a knowledge sharing system

And of course, have a knowledge sharing system in place. Hopefully you already have a documentation system in place so see if it can ride along that. Otherwise, consider using any of the many free wikis out there, Confluence if you have it, or even a knowledge repo in your git system of choice like GitLab or GitHub.

What's important is that over time you grow out a huge list of topics of interest that can be revisted by anyone at anytime for learning or inspiration.

Let them apply the new knowledge

Nothing's worse than learning a new thing or receiving a new certification and then ... nothing happens with it.

This can't always be avoided obviously, but attempts should be made for those employees to put their new learning into action. Put them on a side-project they can do between sprints. Lend them to another team -- if your backend dev is growing their frontend skills, let them tackle some tickets from the other teams.

Don't let their hard work atrophy.

Have one on ones with people not on your team

Meet regularly with various members of the teams you serve. And not just the managers or directors, but the individuals that are new to the company too. Ask them how they've seen these programs run before and make sure to set up that you have an open door for new ideas.

It's important to talk to the managers too. Find out what they think is or is not working, but don't just rely on their word. They may be frustrated that so-and-so hasn't completed their Angular training yet, but likely you have insight into why that is because you've established a rapport with everyone.

Help them navigate that discussion with their employee. Find out what is roadblocking the slow-learner and help with those roadblocks if you can. Overall, you become responsible for helpign them educate themselves and if they can never get to the learning aspect of their job because they're swamped with work, talk to their manager about making time during sprints.

Make it a feature

Continuous learning is a feature too. Make sure everyone is making time for it from the c-level down.

There's no point in setting up a continuous learning plan for your company if they never make time for employees to learn on company time. If employees choose to learn on their own time, that's awesome -- hang on to those folks tightly.

But also don't expect all employees to do this. Everyone has different pacing and different responsibilities outside of work hours. Just like cleaning up technical debt, learning is often seen as "we will do it later" and that's going to bite you in the end.

Because your competitors are learning and pushing forward. They're upskilling their teams and they're going to eat your company for lunch unless you continue to grow your staff's capabilities. Invest in your employees and take care of them. They're just as important as any set of features you plan to add this quarter, if not more so.

Mentally stimulated employees are happy employees and happy employees do great work.