Sharpen the Saw for Developers
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?
Scott Hanselman is a former professor, former Chief Architect in finance, now speaker, consultant, father, diabetic, and Microsoft employee. He is a failed stand-up comic, a cornrower, and a book author.
I used to work somewhere that had a weekly presentation from different product groups and business groups to everyone. One hour a week and attendance was optional but taken from your normal work time. That was a good way to stay on top of what's going on. I don't think I'd appreciate being given homework or being *expected* to work extra hours all of the time. I punch out at 5 o'clock almost every day but I stay late if something needs to get done and it can't wait until the morning.
Work life balance is important too you know. I'm getting married on Saturday and I probably wouldn't be if I worked somewhere that uses all of your suggestions!
I make lots of time for the family. Just got back from a week-long trip to Rhode Island. No computers or connectivity taken along. :P
@Unmotivated - clearly you don't read this blog often.
Oh come on, have you met programmers? We smell and have poor social skills.
At a previous employer we introduced quite a few similar ideas to the above and saw enthusiasm climb through the roof. I remember some points where developers were staying many extra hours (unpaid) because they were so engrossed in their work that we'd have to tell them to go home.
A couple of the more successful additions to the workplace was as follows.
Have a solid rotation policy on projects. Every dept has both exciting development such as 'green field' and the more mundane stuff such as bug fixing, rotate staff so they get a crack at the good stuff as well as the boring stuff, too many depts use there lesser developers to constantly work on the tedium whilst only using their favorite developers to work on the good stuff.
Introduce a guru policy. Select various aspects of development where specialist knowledge will benefit your dept such as security, threading, accessibility etc and each year allow your developers to pair up and select one of the groups. Allow them time to study and work on their selected topic (throw in specific training if you have the budget) with the aim of knowing the topic inside out and producing an educational presentation for the dept, you can also included this as part of their goals to be used in their annual review. The end result is you have guru's which other developers and the company can refer too when needed as well as giving each member of the dept a sense of importance. Pairing provides the advantage of bouncing ideas as well as cover during holidays or retained knowledge if a staff member leaves.
Managers take note, In a place where you spend 30% of your life it's nice to be aware that somebody has an interest in you.
If you're really just content with knowing what you know and picking up your paycheck, its probably pretty easy to passively sabotage most of the ideas on the list. You can skim through whatever book they give you at work, say "meeh", and go on doing things the old way. You can never touch a book in the library. You can give really sucky mandatory presentations and not care. And so on and so forth.
I think the crux is to somehow make omega geeks not _want_ to be omega geeks anymore. How you do that is beyond me. It's for people with, like, people skills or something ;-)
Hypothetically, I would use this kind of sentiment towards unmotivated masses. "Look we realise by providing these training opportunities allied to your potential we risk losing you to another employer. But, it's in our interest to get the best out of everyone." I'm not a team lead so not qualified to verify this approach!
I like the idea of a "Thanks A Bunch Cabinet". Our performance bonuses are based on our attained level over 1 year as dictated by our non-tech manager. It is a source of de-motivation that the bonus is so negligible and the designation of your level is obviously so arbitrary.
I've never worked at a company that had one, but at one company I worked at - and probably head the best team spirit, the 3 team leads (I was one) had something similar - we had a bakery downstairs. If someone "did a good thing" - they would tend to come back from lunch - and find a box with a couple of cookies on their desk (one guy left M&Ms - his trademark), and a note "Thanks" - initial by who left the cookies
Well, within a couple of months - it was not only the team leads doing it. All the developers had gotten into the spirit - if someoneone went above and beyond - there would be a cookie, or a bag of M&Ms, sometimes flowers (yes, we had women on the team - and some of the guys liked them too) - whatever - usually something in the $1-3 price range on your desk when you got back from lunch, or a meeting, or whatever..
Our manager also allowed us another fun thing - Friday afternoons, around 3:30 or so, the developers from all 3 teams would get together in the cube farm, and play "stump the team leaders" - The got to ask us trivia about all our develiopment tools - and they kept score. It was also a good time for the teams to explain what they were doing in their projects, and WHY. We always made sure there was a fresh pot of coffee or 2, and some sort of snack
Moral was great - then the company comitted "teamacide" - sigh
For me as a young developer talking to
What’s really interesting to me, how do you motivate yourself to do all the stuff?
(Scott maybe you want to blog about your motivation and if you have some your motivation tricks)
More so, working with people/company that has this kind of attitude is important.
If I feel I am good & want to be great, I should join company where the path is laid (I have to walk the path anyways)
And also, I will have to convince them that I can do better (although, I am not one of them already)
Also, companies which do have people friendly attitude - would hire only people with proven experience/ability.
Isn't it for those companies to look at people, who can be potentially developed rather than saying "we hire top 2% of the developers"?
For companies, why would they hire people to develop them? they are not into training/mentoring
The practices you mentioned above are for people, who are serious about their profession & companies will have to do these things, if they don't want them to leave.
Nonetheless, its people who are serious will have to invest in themselves. Great post as always.
You definitely have to budget time for people to sharpen their saws,
whether they're motivated or not. Tie these things back into the teams evaluation criteria or goals (not grounds for dismissal of course, but you can't get an excellent or 5/5 eval without fulfilling these criteria).
If sharpening the saw is the goal, then some incentive to prove you've sharpened the saw may be a good idea. Maybe a bonus for passing a related MCP exam and reimbursement for the cost of the exam.
You missed out the main thing which is good pay. I work for a government institution where I am paid the least. And the ironic thing is that I am the only one who is reading books and staying up to date with the technology. For me personally a good pay is all I need to get motivated.
I've been lucky enough to be able to bring some significant change to the group of other consultants that I work with to some degree, but I can't say that this would happen on most independent projects. Am I wrong?
I do, however, very strongly agree about a formalized training program, and add that it should be a very well funded formalized training program. The mentorship concept is also absolutely essential. The most successful shops I have seen have a culture of mentorship, ans eschew the "figure-it-out-or-work-somewhere-else" mentality that sometimes infests our craft. Add to that, along with encouraging mentors to speak at user groups, to also teach college classes, even if not for credit. I learned more about my craft by teaching it than I did by studying it, and I was rewarded by passing knowledge along. It's one of the finest things you can do for your craft, if not your career.
Good pay does not make better developers but it keeps them motivated. I worked on 3 different projects alone (sole developer) but after the 3 projects my pay was still the same. It's just there is nothing to look forward to. You work for something right!! When there is no something then there is no use of the work.
As to your unwashed masses thing you're more right than you know. Jeff Atwood brought up something interesting (here's the reply)
along the lines of trying to get developers to sharpen the saw. And let's face it most people don't actually want to be all-stars.
Me, I'm loving your series on the code reading, I'll probably show this off to my co-workers soon :)
Also some of their links do nothing... like the link for .NET resources.
Not sure about this speaking about a subject thing! I am not the a lead dev though and my lead (and mentor ish...) does like to talk. Which suits me as I dont! I am not convinced on how public speaking can make me a better developer. I can read about a subject, know a subject, even blog about a subject but speaking about it...yikes, rather not!
Some of the ideas like the "Company code camp" and "Thanks a bunch cabinet" I think are really for larger companies - personnally I would prefer company outings to be some kind of adventure thing! Paint balling, go karting and the like!! But generally are just "offsite lunch down the pub"! Brown Bag thing - never heard of that, what is it?!?!?
On the comment of the masses being generally clock watchers, why would I want to go out of my way to change them? Surely, me being driven and motivated gives me the/an edge?? Not saying that I dont share stuff but seriously, you want the knowledge - read the book, not the review. Perhaps my view would change if I was the owner/boss/lead !?!
Adding antidepressants to coffee machine secretly may also be good. :-)
Not sure if I know exactly what I'm going to do, but at least I have a lot more to think about...
+1. Emphasis on shock
Set aside time to read -- where I work, "time to read" is considered by management as "you are bored, so you are twiddling your thumbs", or "only if you need to use it on your current project, then spend time at work reading." "Down" time between projects is frowned upon.
Technical brown-bags -- we do this, although not as much as we should.
Local .NET group -- I'm the co-chair of the local user group, but trying to get my staff to attend is like pulling teeth. A couple show up here and there, mainly because I'm involved, but most treat this as a "job", and don't have the passion. But there is one guy who will actually be presenting. He's one of the few with the bug for this.
Formal mentorship program -- great idea. It's very informal where I work, but one of the things I enjoy the most.
Give homework -- I would love to do this, but legally, don't we have to be very careful about telling employees how to spend their off-time? We do "suggest" this all the time.
Attend conferences -- Management does not consider conferences a true "learning" environment. I had to pay AND use vacation time to attend DevConnections last year, and learned more, and applied more to my than from any other training I've received in years. Explained this to management, and STILL got no reimbursement. Sigh...
Another thing I'd add is to have other "learning lunches" in addition to brown-bags, where you would project videos like dnrTV in a conference room, where everyone is invited to sit in and discuss. I've planned this for ages, but haven't committed to it yet.
This gets into the whole problem I had with college. I had 400 and 500 level classes where there was "assigned homework" and "attendance" and that always drove me up the wall. I wouldn't have been in a masters program if I didn't want to learn. Anyways, after thinking about why I was irked by this, I came to the following conclusion.
I think forcing people to do something is not the right way to encourage learning. In fact telling people what to do will only make them want to do it less.
Personally, I would treat people like intelligent adults. After all, these are most likely well educated and sincere folk (and if HR did a good job, they are also motivated and keen on learning in their own time). This is fostering the "culture of learning" which is on your list but its not just 1 or 2 people spearheading the way. The whole company is involved in this.
For instance, I eat lunch with a lot of my co-workers and inevitably, I will mention something I did or tried and that will peak the interest of the early adopters of the group. Then as they start talking about it more, others listening to us also consider trying things out themselves.
In conclusion, I would say again. Do not force/strongly encourage/place in head-lock/twist arm/negotiate to try to get people to learn. It might give temporary results but what about the next technology and the next. Also consider what that would do to morale and productivity not to mention that now, nobody will want to sit and chat with you for fear of being given something else to do. Learning should be fun and self-motivated. Nudge gently please. :-)
Technical training is good. But to make truly well rounded developers, let other departments such as marketing and sales or accounting etc. give talks to developers who are interested. The more a developer learns about his/her company and how it functions, the better off the company will be.
For instance, I would love to learn about how accounting works at my company. How do they predict the resources they need? How do they make sure that they are not in the red? In consulting, how does the bid process work? etc.
I am a little unmotivated at work, but outside of work I try to read, attend user groups and listen to lots of podcasts (1 hour commute each way). I tried starting a Lunch and Learn type session at work, but it did not last long.
Your blog and podcast have been a big part of my continuous learning. Keep up the great work.
They are the ones who usually control the working lifestyle and culture.
Yes, the Work + Life balance is a difficult one; especially being as passionate about technology as "we" are. I've pretty much cut out watching TV and that freed up all kinds of time. I'm even going to be working from home soon, so there will be no more 1.5 - 2 hours of commute driving each day. Now if only I could figure out how to live without sleep like Hanselman does...
Regardless, I like post and the more people talk about this the better developer's lives will get.
I guess another idea (that would be hard to get approved in a small business) is the Google method of allowing people to spend 20% of their time on new ideas. Wow, what a dream.
About Team Building
The technical brown-bags idea is horrible. The lunch hour belongs to the employee, not the employer. The suggestion that this time be hijacked by the employer is flat-out offensive. You might be able to get away with it by paying for the lunch but what are you going to do about the employees who like to do other things with their lunch time such as going to the gym?
Giving "homework" is even worse. I voluntarily do a large amount of work-related reading on my free time but the second you give me "assigned reading", I'm going to be a very unhappy employee.
I understand that these ideas are directed at the unmotivated masses but it seems likely to me that what you're going to accomplish by all of this is alienating the already motivated employees when some of these things start spilling into their lives. How would you even enforce any of this? What would the punishment be for employees who didn't do their homework?
I suspect the unmotivated wouldn't be particularly motivated by any of this since they're, by definition, unmotivated. Maybe the best way of dealing with the unmotivated masses is to simply avoid hiring the unmotivated.
I'm really surprised you don't like the brownbags idea. That's been radically successful at all the company's I've worked at.
At the same time, the people who do participate, and who do take the time to read at home, usually end up being those people who "get ahead" and get promoted before others, quite simply because they are more dedicated to increasing their skill level.
That's why, when I interview people for a job, I'm also looking for their passion level for the field. The people who don't just treat this as a "job," and who love doing what they do are always going to welcome these opportunities for growth. Then it's a non-issue, and none of these options look like anything but great opportunities and a great environment (save possibly the "required reading" -- but they'd naturally seek that out, anyway, without asking).
I am the alpha geek in my team. And also the one who works the fewest hours (I work very fast). The two are not incompatible.
Good Post, I like the Code Camp idea, when people leave a code camp they are much more motivated & educated.
* Giving the developer the choice of what they want to develop (“would you rather build component A or B”), so they feel more ownership
* Encourage developers to build reusable-components that others will use. Knowing that others will use your code makes it more interesting
* On longer projects, pointing to specific examples of how dong it “right” (which usually required active motivation) ultimately saves time and makes it more interesting.
Here are some other ideas:
1. Create a real culture in your team – same uniform(like t-shirt with team logo), same team signature in mail messages, cool team business card, put some pictures with your team members and some technical content and more…
2. Give them to be gurus in new technologies. Each developer will lead this new subject, give a lecture about it, write some infrastructure and documentation about how to use it and answers the entire questions about it.
3. About the user group – you should push them to lecture about some familiar technology for them in this conference. Help them to build their presentation, ask them if they want to lecture in front of you before the real lecture and give them a feedback.
4. Lead and help them to open a technical blog. Explain the benefits of it. Read their blogs and write some comment there (questions that you have or just a good compliment for a good post).
5. Ask your developers about their interest tasks and try fitting each one the most suitable task for him.
Comments are closed.