Wednesday, 11 January 2012

Do You Read? (And Write?)

Whilst New Year's resolutions are still in our minds, I'm thinking about my training plans for 2012. One key element of my plan is attendance of SAS Global Forum in April, but at the other end of the scale is my choice of professional reading material - not just for the flight to Orlando.

Stephen King is widely quoted as saying "If you want to be a writer, you must do two things above all others: read a lot and write a lot." Stephen King is undoubtedly a successful author so I must assume he knows what he's talking about; and I think there is a significant degree of similarity between writing programs and writing novels.

Let's start with reading. In my experience, very few SAS developers own a SAS-related book or a software engineering book. If developers don’t know about the fundamentals of software engineering (not just code syntax but also issues like configuration management and testing) how can they explain them to non-technical folks like sales and upper management once they’ve become technical leaders?

SAS Publishing doesn't offer too many titles that address software engineering for SAS projects, but don't let that hold you back. There are plenty of good books that offer insight that is relevant to the SAS practitioner. My own bookshelf includes classics and contemporary books alike (in no particular order):
  • The Mythical Man Month, by Fred Brooks []
  • Refactoring: Improving the Design of Existing Code, by Martin Fowler []
  • Planning Extreme Programming (XP), by Kent Beck & Martin Fowler []
  • The Data Warehouse Toolkit: The Complete Guide to Dimensional Modeling, by Ralph Kimball []
  • The Data Warehouse Lifecycle Toolkit, by Ralph Kimball []
  • Waltzing with Bears: Managing Risk on Software Projects, by Tom DeMarco and Timothy Lister []
  • Head First Software Development, by Dan Pilone & Russ Miles []
  • Algorithms + Data Structures = Programs, by Niklaus Wirth []
  • What is Lean Six Sigma, by Mike George, Dave Rowlands & Bill Kastle []
  • UML Distilled, by Martin Fowler []
  • Information Revolution: Using the Information Evolution Model to Grow Your Business, by Jim Davis, Gloria Miller & Allan Russell [SAS bookstore]
And what about code reading? Peer reviews are a great driver for reading the code of your colleagues and learning from them, but if you want to really open your eyes to new and different techniques you might consider taking a look at the code of one or two of the many open source projects available on the web.

With regard to writing, you might feel you already write enough code to be able to tick this box. Have you ever stepped back to consider the amount of time spent reading and writing emails, reading and writing specifications, and attending meetings? Perhaps you don't spend as much time actually coding as you thought. Maybe you should consider doing “Code Katas” — little practice sessions, based on a concept borrowed from karate and other martial arts, where the practitioner fights against an imaginary opponent.

Practice for the sake of practice is commonplace in sports and many other pursuits, why not programming? The term coined by Dave Thomas, co-author of the book The Pragmatic Programmer, in a nod to the Japanese concept of kata in the martial arts. A code kata is an exercise in programming which helps a programmer hone their skills through practice and repetition. I'll return to this subject in subsequent articles.

In summary, don't leave your professional development in the hands of your manager. Consider adding a professional book to your bookshelf (and read it too). And challenge yourself to do a little off-topic coding in order to broaden your knowledge and experience. You'll thank me for it!