Learning How To Learn

Warning: Hastily written post ahead.  I may return to put some English on it....

 

Once upon a job, I noticed that many areas of the codebase suffered from significant code quality issues, with the immediate consequences being more bugs, higher support volume, higher maintenance costs, and lower customer trust. This also affected company's ability to grow, as these issues made the code inflexible. 


To address these code quality issues, I started a training program. We did weekly lectures on development topics, taught by anyone from the team willing to teach. During that time, maybe a third of the team “upped their game” and started consistently putting out higher quality code. Another third dabbled with some of the concepts taught, and a few of those began limited inclusion of that material into their work. Finally, a remaining third essentially ignored the whole thing and hoped it would go away.

I treated it as a "land & expand" type of approach, focusing on the third that really jumped on board.  They turned out some excellent code that made the argument for unit testing, in particular.  Over time, most of the team picked up unit testing and improved their skills all around, but the program was never as effective as I thought it could be.

I realized the incentives were poorly aligned.  People could just show up to the trainings, put in zero effort, and leave - forgetting most of the content quickly.  There was no incentive to learn.  After a lot of thought, I revamped the effort as a developer learning program, with a focus on instrinsic motivation.  What follows is a rough outline.


Tl;dr

Give each developer a yearly learning budget to spend in pursuit of goals set during quarterly conversations with their manager. If developers set goals that stretch themselves, learning will be built in.


Getting People Motivated

For some, the core problem is motivation. Many people just don’t feel the need to grow. If this is the case in your org, you may want to start with a Work Engagement Profile to see where each person lies on the spectrum.  The goal-setting conversations managers have with each developer quarterly are the centerpiece and the push that starts the ball rolling. People value autonomy & agency - to take ownership and explore new ideas. Cultivate an environment that fosters many intrinsic rewardsNote: Even then some people may need a nudge (setting HARD goals, and all that).

Goals should grow out of need. Let people set goals that they care about and will take ownership of. Some people may also need goals specifically for learning.  Upon completion or failure, make Blameless Post Mortems standard practice. I think every book or article I’ve read from successful business person emphasizes the need to analyze both successes & failures with the express intent of learning from them.


Accountability

The goals they set with their manager should stretch them. There should be some learning required to accomplish the goal.  You also want this to be an ongoing conversation. Get people talking regularly about what they have learned recently and how those things can be applied to company projects.  I encourage managers to include learning criteria on quarterly evaluations.


Recognition

A carrot to go with the stick…


Long term, intrinsic rewards are highly important. The true, lasting rewards must come from the work itself.
 

Short-term rewards are also important and can help gain momentum.  Consider creative ways to do this. Recognition by or in front of coworkers, taking the project team to dinner, time off, gift cards, whatever. When someone kills it on their goals, celebrate.


Consider formalizing your bonus structure and tying it into quarterly goals. I have a developer friend who works for Mozilla (known for hiring strong & high quality code), and we discussed this whole issue. He said they give bonuses based on whether goals were met and the difficulty/impact of those goals. Someone who sets their sights high and knocks it out of the park stands to get a significant bonus
check (up to 10% of their salary in a quarter). That may or may not be the right number for your company (Mozilla is a bit of a unicorn company), but the concept is sound. He said especially for people closer to the senior end of the spectrum, goals are expected to involve greater risk and potential impact across the company.


Intermittent Reinforcement might be something you can leverage as well.


Buy In

The previous iteration of my training plan required very little effort on the part of the trainees; it was instructor driven. So, it gave them very little control over what they learned (unless they volunteered to teach).


I suggest giving everyone control over their own training. Many companies now just give their employees a training budget. Let employees learn in the way that best suits them, whether it be books, online training courses, videos, conferences, certifications, tuition reimbursement, new hardware to build prototypes, etc. All expenditures typically go through manager approval & are expensed. Expenditures should be at least loosely job-related, but not limited to technologies, techniques, etc. that are already in use by the company. These expenditures should be part of a larger conversation with their manager about their learning & performance goals.


Social Learning

Stereotypes notwithstanding, many developers enjoy social learning opportunities, and studies show social learning to be more important than coursework.
 

Conferences are a great way to do this, but many companies overlook them - missing out on many ideas & connections because of it. Besides the obvious benefit of learning new skills, they are a great place to have conversations you wouldn’t otherwise have, with people from a diverse set of development backgrounds. This spawns outside-the-box ideas you can use. The connections are also valuable because you can tap those connections when looking for qualified job candidates.
 

Social learning options could be it's own post, but suffice to say, it is worth considering.


Budget

I chatted with a number of developers at other companies and their reported budgets ranged from $1200 to $9000/developer/year.

Some companies let employees go over budget for something that is particularly applicable to the job at hand. On the flip side, most developers do not use their entire training budget every year.

Comments

Popular posts from this blog

Fixing Conan Lock Issues

Dynamic Object Oriented programming in ArchestrA

Permanently Mapping a Windows Share on Linux