George emailed me with an interesting question. Paraphrasing George, liberally, what's are some good ways to keep developers sharpening the saw - Covey Habit #7? There's been lots of talk about being a better developer, but what about the unmotivated masses? (Don't worry, we can talk about them, because, since they are unmotivated, they aren't reading blogs.) ;)
The assumption being that for every totally-amped developer who is always striving to get better, there's at least 10 developers who are saying, "Hey, it's 5:01pm, I've just checked in massive changes, can I punch out?"
Here's some ideas, some mine, some Georges. I'm interested in yours:
- Give the developers actual set-aside time at work to read technical books.
- Build a library of technical books at your office, and dedicate a space or room for reading and reference.
- Host technical brown-bags at least twice a month and encourage everyone to present at least every year. (I would say even more...do them weekly at lunch and everyone needs to present at least twice a year)
- Encourage developers to attend a local Nerd Dinner to get in touch with other local developers. If you don't have Nerd Dinners, create one.
- Have all your developers attend your local .NET User Group. Go one further and get them to present.
- Create a formal mentorship program. Build it into the HR Title System. Senior Developers mentor Junior, etc. Formalize the goals for the program with HR and build it into their job description.
- Give homework. "We're doing a lot of Threading work lately, here's some assigned reading."
- Inspire a culture of learning. If you're (assuming you're the Alpha Geek) not giving off an encouraging and enthusiastic vibe, your developers have little reason to be excited themselves.
- Create a Thanks A Bunch Cabinet. Corillian had a great system where peers could reward peers. Our administrator, Kate, had a budget given her by the Engineering Department. I think it was less than $1000 a quarter. She'd go and get as much cool stuff as she could, each under $25. This included iTunes cards, stuff from Sharper Image, Flashlights, just nerdy stuff. If you went above and beyond in some aspect of your job, one of your peers could reward you by sending you to the TABCab. You get to go home with a cool, unexpected free gift, and your peers get to tell you you're appreciated. It was a great system.
- Have a real written-down Training Commitment. Your company likely has Health Care as part of the benefits system, and your Human Resources could tell you how much it costs per developer. Get an amount of money (usually a percentage of their pay) dedicated to training, where training is not just in-class time, but also books and conference attendance.
- Let your programmers attend Conferences. If culturally appropriate, use the attendance as a carrot.
- Twice a year, hold an offsite Company Code Camp. This was another cool thing Corillian did. We included everyone, admins, accounting, sales, everyone. We gave out an interesting problem, created diverse teams, and set them to work to design algorithms, define, write, document, and test some application. The application needs to have universal appeal, so sales and accounting can have fun. One year we did a Word Search (like the kind in the newspaper). Everyone participated and there were reasonably significant prizes.
What do you think, Dear Reader? How do you motivate, inspire, teach,
beat encourage your team?