What could a company do to differentiate itself in order to attract talents? Many companies take pride in their innovative work environment. Benefits and salaries might be another way. But we are yet to see a company with an official policy saying “Come work for us. We will train you to become the best programmer you can be.“? You know of such a company? I would be happy to be proven wrong.
I’m not talking about having the employees take courses or read books all day long. I would rather see a collaborative effort to improve (yourself and the organization), such as a dedicated mentor for everyone, expert brain picking sessions, study circles (discuss a book, a bug, a piece of code or a paper together), knowledge transfer (weekly presentations of interesting topics), pair programming with an expert, software architects to discuss your design with, cross-functional training, panel discussions, required reading, you name it. All in the context of your current work assignment. Your personal development would be part of the company targets.
Many companies train their staff, but I would like to see it as an official policy. Such a company would certainly be able to attract talented people. The collaborative effort to improve would also benefit the company (e.g. improved co-operation, better code, fewer bugs, increased knowledge transfer). For the individual, working there would be a sign of quality.
I had the pleasure to have a coffee break discussion about this with James Coplien the other day. He said he both loved and hated the idea. It might be a bad idea since it does not bring any business value. But that aside, we both agreed it would be a fantastic place to work in.
Update (May 7, 2011): In the book “Implementing Lean Software Development” (see post), the authors talk about river companies: “The purpose of a river company, […] is to keep on flowing, that is, to stay in business and provide jobs over the long term.” and “The individual will deliver care and commitment in exchange for the fact that the company will try to develop each individual’s potential to the maximum.” This actually sounds a lot like what I described above. The term seems to have been defined in this article.