Well, what did I do this weekend?
I finally re-read Programming Ruby by Dave Thomas and Andy Hunt. I bought this book a few years back and have only managed to get around to reading it again. Ruby is a very impressive language. It is fortunate to have Andy and Dave as advocates. They write well about it and use simple, but powerful, examples to show its power.
Andy and Dave are the Pragmatic Programmers. Their first book The Pragmatic Programmer: From Journeyman To Master is a great read. When I first read it I was in something of a lull workwise. I had become jaded and was fed up with the continual stream of new technologies which were hurtling into my world. I was not very impressed by them and thought that many of them were nothing more than hype. Their book reassured me that I was not turning into some crusty old fogey who was always looking back. I was not being a naysayer, or looking backward. I was applying critical judgment to what I saw and heard. The discomfort that I felt was tinged with a lot of experience.
When I was a young programmer, I thought that I could write code to do anything, if I felt inclined. As I got older, and acquired more experience, I began to realise that writing code is the last thing I should attempt to do. Taking time to understand your problem is so much more important. When I fully understand something, or when I get a good understanding, I generally end up writing code that is shorter, simpler and far easier to test.
Unfortunately, every few years , I forget this lesson and fall into a trap of thinking I may have some godlike genes within me. Naturally, I end up re-learning this lesson very soon thereafter. At least, I re-learn the lesson a bit more quickly than I used to.
My other pragmatic book this weekend, which I am only dipping into, is Pragmatic Version Control Using CVS. I have read lots of CVS books and manuals. Andy and Dave’s book is simple and workmanlike. It describes the philosophy of CVS which I consider to be important. However, it mainly follows a recipe-based approach with neat, small examples that beautifully illustrate complex points. I particularly liked section 6.11, Removing a change (pages 86-88), which describes how to use the -j option on update to back out previous changes that introduced defects into the code.
I still haven’t finished reading Pragmatic Version Control but I am definitely going to have it sitting on my desk at work. It is just too damned handy not to have close to hand.
A wonderfully pragmatic weekend.