I'm a fan of books and like the deep understanding one can achieve with them. But in a corporate world the is seldom the time to read a heavy tome. Some managers think that focused trainings with a maximum of a few days would be better. I doubt that theses trainings are a silver bullet. The knowledge you gain remains often on the surface.
What do you think is the most efficient and effective way to learn new (software development) skills?