you don't even know what it is you don't knowWhen you teach yourself something new, especially in an ad-hoc way, there are bound to be gaps in what you know. Not only that, but there are gaps in what you know you need to learn. i.e. you not only don't know things, you don't even know what it is you don't know. This can cause you to work around problems the don't even exist, approach things in a way that is counter to the technology - giving you no end of headaches, or just concede that you can't do things that really can be done.
A good book can not only fill those gaps but show you were you have more gaps that need to be filled. The book can also provide the necessary context to help you glue all the pieces that you have learned into a coherent whole and see the big picture. Once you see the big picture it is easier to learn and retain all the details and to even anticipate how those funny corner cases, that every technology has, will behave.
I have to admit to having an ulterior motive to this post. A coworker referred me to a contest where I could win some Ruby on Rails books. I love Rails because I think it is such a clean framework for writing web pages and doesn't fall prey to problems in the commonly used .NET and Java frameworks that I've complained about before. However, despite my comments above, most of my Rails knowledge comes from building a few apps and using the web as a reference, not book learning. I have repeatedly bumped into problems that are caused by my lack of truly understanding Rails. I am definitely at a place with my Rails knowledge where I could benefit from reading a good book.
To win this contest I have to explain how I am working to succeed as a "Rails up-and-comer." Instead, this post talked about books. However, hopefully this will also show a little bit of who I am in the process. I write this blog to publicly show my thoughts and experiences in my attempt to be an "up-and-coming" software development expert. I hope that reflecting on my thoughts enough to write these posts, plus any feedback I may get as a result of the posts, will help me in this process.
Similarly I use Ruby on Rails on my personal projects not just because I think it is easier to use than the alternatives (and more fun), but because I think the software development ideals embedded in Rails and the way it accomplishes them will influence other languages and frameworks in the futue. At the very least, it influences me. I.e. knowing Rails helps me be a better all around software developer, just as "book learning" does.