views:

135

answers:

8

Seriously, is this a good idea?

Is it reasonable to instruct your team to read certain books - outside of business hours!

Before you write me off as a crackpot, bear with me...

I head a medium-sized team (6 developers and 5 testers).
We have quite a well documented software dev process that we adhere to most of the time.

In order to avoid stagnation within the team, and to inject new ideas / methodologies, what usually happens I either get in expert training on a particular topic (usually 1 week per year) or I introduce a change to the dev process (after suggestion, research [mostly online by me] and discussion).

I should add that the expert training is usually decided upon by me (mostly after online research).

I'm not getting the feedback from my team that I expect regarding evolving the software dev process - and I'm sure it's by no means perfect.

What I want to do is broaden the team's horizons - get them to think outside the comfort zone that they occupy and contribute radical (or even incremental) improvements to the way we work.
In an ideal world - they would inspire me.

I have a reading list that I try to work through when I can find the time (a lot of the time from bed!)

I got to thinking that since we are a team of 11 (I'm one of the devs as well as the lead) then we should be able to read 11 times as many books if we all read simultaneously.

At the next team meeting, I want to propose a library of books that we as a team must work through.
Everyone on the team must take a book and read it cover to cover.

Team members will then (at some later date) give a short (10-15 minute) presentation on the best ideas of the book.

The guiding principle when reading the book will be to find nuggets / ideas / new paradigms / whatever that can be incorporated into the team's software development process document.

As a bonus, (hopefully) the individual will get to learn something new and ideally develop a renewed interest in their career.

Is this madness, or might it just work?

There's dozens of lists online (including one on Jeff Atwood's Coding Horror).
Below is a list I've started...

Code Complete
Writing Secure Code
The Pragmatic Coder
Clean Code
Art of Unit Testing
Working Effectively with Legacy Code
The Mythical Man-Month
Refactoring: Improving the Design of Existing Code
Test Driven Development: By Example
Test-Driven Development: A Practical Guide
Effective TCP/IP Programming: 44 Tips to Improve Your Network Programs
Rapid Development: Taming Wild Software Schedules
Software Estimation: Demystifying the Black Art
More About Software Requirements: Thorny Issues and Practical Advice
Beautiful Testing: Leading Professionals Reveal How They Improve Software

EDIT:
Ok, enforced reading is bad mm-kay...
I will:
- Present a suggested reading list
- Request additions to the list
- Request people to nominate books they will read (if they want) [they need to nominate so we can buy the book]
- Request a short presentation on completed books
- Discuss how we can include this in our dev process

+2  A: 

I'm against forcing people to read these books. You will only gain value from these books if you're reading them to be a better programmer. If you're forced to reading them you'll be reading them to be finished, not to get better.

JaredPar
Agreed. There's a difference between self-motivated reading and required reading. I think programmers would get more out of these books if they're reading them out of their own drive to improve their skills.
Ryan Rivest
Especially since he proposes to make them do the reading on their own time. If you're going to require someone to do a task, whether that's reading or coding, they're entitled to do it on company time. Forcing them to give up their own free time to read books will create resistance, not engagement.
itowlson
unknown: If it's a "nudge," then it doesn't need to be mandatory. You can instead propose *suggested* books and ask "does anyone fancy giving a presentation on this one? Or this one?"
itowlson
A: 

Why not try and give your team some R&D time and monitor and review that by injecting some ideas. Most of all - your team is the most important thing not a set of good ideas from books. I'm not saying that reading books is a bad idea but applying knowledge and making it work for your team is the goal IMO.

Inspire them, give them room to breathe and don't dictate is my advice. Books and a team library is an important part but not the be all and end all.

==Edit==
OK, slightly missed the point of the question so apologies. Having your team read and expand their skills is very important but IMO make it part of your team culture not an extra-mural activity.

zebrabox
I'm not suggesting this is the be all and end all. At the moment, we have no recommended team reading list. I want to propose a list and ask people to pick from it (or add their own to the list). Main reason for this is to assist evolution of how they do their day job. Question really is: Is it reasonable to ask team to do homework?
OK question is answered (by me). I'll give you the kudos as it was the most helpful of a fairly dismissive bunch of answers. Sometimes a simple yes or no is not the best answer to a yes / no question.
OK I get your point. Yes it's important that a team read but make it part of your work culture not an enforced homework exercise.Have edited my post to reflect that
zebrabox
@unknown - "... a fairly dismissive bunch of answers." I take it you're not a fan of critical feedback?
jball
+3  A: 

Fundamentally, asking them to do something outside of business hours is an imposition on their lives that you should, as a leader, already recognize as wrong. Give them time on the job to read if you think it will help them work better.

jball
Fair point. Maybe enforced reading is definitely wrong. But what about: "Here are list of books I think you should read. I recommend you pick one and read it in your spare time. It will make you a better developer / tester." If I had received this advice early in my career, I would have appreciated it (I think!)
My suggestion - get a bookshelf, fill it with interesting books, and then let your team know that they are welcome to borrow any of them at any time for as long as they'd like. You can include a mention that you think the books will increase their developer and testing skills if you'd like, but it's probably implied.
jball
Done that. Books unused, gathering dust.
That's a sure sign that making reading them mandatory would be a huge problem for team morale, and probably not instructive to any of the team members.
jball
+1  A: 

I worked at a compny where we had one day a week of undirected R&D. We could do whatever we wanted, including go out for a long lunch.

In practise some abused it, most made some little use of it, and some others really took it as a challenge and developed some interesting stuff.

My point is that I think a book list is a good idea, but not everyone is a reader. If you trust your staff and want them to improve, perhaps a freer hand is what is required, and a more diverse approach.

Phil Wallach
zebrabox
+1  A: 

Okay, your original idea seems like partial madness but you've realised you can't force people to do this, which is good. Anything you do can't be mandated from authority, especially as you are asking them to do this in non-work time. Some people are keen and want to develop their skills but some people just aren't engaged in their work and don't want to be and nothing you do will make them more engaged, it will just make them resentful.

One thing you could try is to start a book club. Aim for reading one book per month (the same book for everyone). Then have the discussion of the book and how it could change your development practices over a long catered lunch (which should cut across normal work time). No one is forced to create a presentation, its just an open discussion. Membership of the book club is completely optional and the group decides which book to read next, not you.

Those on your team that want to be more involved will join, get a free lunch and some time off work to discuss how to be better developers. Those that don't want to can simply get back to churning out code while the book club is on.

Chris Latta
A: 

The best idea would be to put up this suggestion in-front of the team. Let them decide as to how to go about this.

Some points:

  • Some people are not interested in reading books. Hence asking them to read them is an imposition. But some people will love to take up this challenge.
  • It would be nice to discuss on the list of books and arrive at the list based on the inputs from the team itself. After all, they are the one who is going to read them.
  • As suggested above, it would be nice to start a book club among the team members.
  • Those who are not keen on reading can take up some other activity like learning a new methodology and presenting it to the team, presenting case studies, small applications based on them etc.

Best Wishes with your ideas.

Techiegirl
A: 

Here's my suggestion instead:

Have a corporate library that anyone can suggest books for and anyone can borrow books from. Have a budget to buy so many books per year. Our library is continually being refreshed and the books are often borrowed.

When planning for time, plan for everyone to have 1 hour per week (or more if you can get it) for professional development. This can be reading, researching a topic on the Internet, etc. If you allow for this time up front and budget for it (A small additional cost to the client per hour will take care of the cost.) it is easier to do. If you plan for everyone to be productive 8 hours a day every day, then you are already failing as no one is. When I did manpower studies, the basic assumption in planning workload is that no one does more than about 6.25 hours of productive work a day. The rest is taken up in unavoidable delay (you are at the meetings but the team leader is not or someone takes a phone call in the middle of a meeting with you), bath room breaks, training, walking to meetings, non-productive but required tasks like performance appraisals or filling out timesheets. If you plan this way, you can still be financially viable because like any industry, you simply charge the client a slightly higher hourly rate.

Publish a list of recommended reading.

Hold weekly or bi-weekly one hour training sessions on a variety of topics. Rotate who will do the presenting each week. Assign topics both based on current expertise and what you would like the person to learn. If you have to give a speeach about it, you will dig in and learn it better. Give the person doing the presentation three hours to prepare. Do NOT hold the training sessions at lunch. If training and professional development are important to you, they are important enought to be done on company time not personal time.

HLGEM
+1  A: 

What you really want is a group of individuals each of which is passionate about programming. To achieve this you will need to, over time, replace the ones who are not while taking care not to disrupt the cohesiveness of the group you have. When you have achieved this, your team members will be spontaneously suggesting books to you.

You can lead a horse to water...

mickeyf