Sunday, June 10, 2007

Pragmatic Programmer

I just finished reading Pragmatic Programmer recently. Its been on my to-read list for about a year and half now, never got a chance or the urge to read it. My recent job change gave me a chance to take public transit to work instead of driving which all of sudden freed up about 2 hours everyday exclusive reading time (vs. staring at total strangers otherwise), so I just started plowing through all my to-read list. Initially even before I picked up Pragmatic Programmer, I was still not very thrilled or feeling the urge to read it since just by going through the index I thought I knew pretty much all the topics in this book already, and the only reason I picked this book was because I need a light weight book for my business trip to Vancouver, and little did I know how much I would enjoy that trip just because the lightweightness I picked. Pragmatic Programmer is not only a book that was written by veteran and sucessful programmers who had been there and done that, but also written with great sense of humor to make it a very enjoyable ride through it. For beginners it is the only book I found so far that covers such a wide range of topics from algorithm to leadership, from requirement definition to software development process, and from database design to work ethic. It covers almost every topic you need to know as a professional and soon-to-be pragmatic programmer with vivid example and real world stories that vastly expand your experience, I consider it as a short-cut to seniority. Or if you are a seasoned veteran in the trench, or a already pragmatic programmer, I think it is still a must-read since the most valueable asset I gained from this book is not the methods or theories, but the stories and metaphors such as the Tracer Bullets, Broken Windows, and Boiled Frog theses metaphors are particularly powerful when used consistently within your team or even your company to describe a complex situation. For example, you can either spend half an hour to describe the idea of fast retaining prototyping strategy with short and highly iterative development process model to your team member and project manager, or just mention two words Tracer Bullets. I found these stories and metaphors improve communication drastically if applied properly, kind of similar to the domain language mentioned in Domain Driven Design, and similarly it can too form an ubiquitous language from a more technical and process point-of-view. Again a highly recommend must-read from me, pick up one from Amazon if you have not already.