I learn by doing. I have plenty of books on software development and I like to read about different technologies, but the only way for me to feel I know a technology is to actually use it to develop software. This doesn’t apply just to languages or technologies, but to methodologies as well. I had read plenty of books and posts on Agile, but it wasn’t until I did my first project using Agile methods that I really “got it”. Understanding the notions of iterations, velocity, and all the other buzzwords is one thing. Putting them in use in a given company culture is another matter entirely.
It is not always possible to put new technologies into practice at our “regular jobs” given the particular problem domain we might be working in. That is why I like to work on what interests me on my time, in my own personal Skunk works. It keeps me up on technologies, gives me something new to work on that I can choose, and can be fun. It also positions me to be ready when the time comes that the technology might be needed on an actual commercial project.
That said, I have been reading a lot lately about NHibernate. I know it’s not exactly bleeding edge, but I haven’t had a chance to use it and thought it might be a good time to put a little of that into practice. Reading an article or a quick start tutorial is all well and good, but it is no substitute for actually doing it. Not to mention a big part of good software is figuring out how to get around the problems that arise, even when you follow all the steps and do everything “right”.