The Art of UNIX Programming by S. Raymond, Addison-Wesley

25 July 2014

The Art of UNIX Programming is another one for the bookshelf. It is jam-packed with insights into the philosophy, mindset and approach a Unix developer has when tackling software design the Unix way. While I have been involved with software development for a number of years, nearly all the systems I have worked on have been focussed towards the Microsoft stack. After finishing this book I now appreciate how the “other” side thinks - and I wished I had known about their philosophies and mindset years ago. Many of the things I have only recently learned to embrace in the Microsoft world appear to have been common practice in the Unix world for decades.

The book is divided into 4 main sections: Context, Design, Implementation and Community. I really enjoyed the sections on Context and Community although there were nuggets of gold in all 4 sections.

As far as I am concerned the whole of Chapter 1 is required reading for serious software developers. It includes a series of rules that one should apply to make effective design decisions. Some of the rules it includes are the Rule of Modularity, Clarity, Composition to name a few.

Another section I really enjoyed was found in Chapter 4 where it discussed Top Down vs. Bottom Up approach. I have been a strong advocate for the top down approach to design for a while now, but the arguments they put forward in favour of the bottom up approach really has made me question this stance and gain some insights into when the one approach is more beneficial over the other.

Chapter 14 on language evaluations I found interesting. The comparisons between languages like C, Python & Perl shed more light on what my ‘next’ language is going to be.

Chapter 16.7 has some enlightening notes on what Open Source software is, the benefits of this approach and the mindset one should have towards it. I have battled to understand the concept of how open source software works - finally I found a clean and understandable explanation of why it is so important.

The book ends off with what I would consider some of the most entertaining writing I have read in years regarding the software mindset with section ‘D’ - the “Rootless Root - The Unix Koans of Master Foo”. I found this section hilarious and enlightening.

Overall its a big read - just under 480 pages of condensed material. At some stages I lost a little focus, but the book is so full of the good stuff that the dry stuff is tolerated.