Sunday, January 23, 2011

Book Learning

The other evening I was discussing old computer technologies with a colleague and he talked about programming with punch cards. While I am not that old my early programming days were very different from today. During my first few years of formal computer science lessons I only had access to a computer for 1.5 to 2 hours a week. To be able to get my assignments done on time, I had to do much of the programming on paper and pencil away from the computer. Maybe its just that experience, but I still find that the best way for me to learn a computer technology is to step away from the computer. Obviously, the hands on aspect of using the technology is invaluable but stepping away from your specific problems and thinking more general is crucial to true understanding. This is the reason that despite the fact that computer books are static, and hence quickly outdated, and the internet provides an almost unlimited source of reference material, books still have a place.

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.

Ulterior Motive
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.

1 comment:

Jessica said...

You also share your knowledge of the wonderfulness that is Ruby on Rails with others. Best of luck in the contest!