Kian Ryan reviewed Beautiful Code by Andy Oram (Theory in practice series)
Review of 'Beautiful Code' on 'Goodreads'
3 stars
The good, the bad, and the "ow my head hurts".
This is not a light book. It is not an easy book. It is not a book that I would recommend to those uninitiated into the rather painful world of computer science, rather than software engineering.
The book asked leading programmers to contribute commentaries on what they considered butiful code, and why they consider it beautiful. Some of the authors have managed to succeed in this (dare I use the word?) beautifully, understanding that their audience is likely to not be a specialist in the author's field and therefore need some background to the problems and languages they are likely to encounter in the chapter.
Other authors however, manage to fail very short of the mark, jumping right into problems and languages without even so much as a "how's your father?". To read this book well, you need to be …
The good, the bad, and the "ow my head hurts".
This is not a light book. It is not an easy book. It is not a book that I would recommend to those uninitiated into the rather painful world of computer science, rather than software engineering.
The book asked leading programmers to contribute commentaries on what they considered butiful code, and why they consider it beautiful. Some of the authors have managed to succeed in this (dare I use the word?) beautifully, understanding that their audience is likely to not be a specialist in the author's field and therefore need some background to the problems and languages they are likely to encounter in the chapter.
Other authors however, manage to fail very short of the mark, jumping right into problems and languages without even so much as a "how's your father?". To read this book well, you need to be versed in C/Lisp/Python/Ruby/C++/C#/Java and VB6. Haskell is omitted, since Simon Peyton-Jones makes an excellent explianation of the basics of the language before jumping into his respective problem domain. On the topic of problem domains, they are as varied as the languages used to implement them, from design patters, to MTAs, enterprise management software to concurrency and image processing.
For me, this book will require a second reading. It took me from Christmas to read it the first time through, since I needed to stop and explore some of the problems and languages before continuing with reading the book. My recommendation is to read this book with three things:
a) A pinch of salt. You are not going to understand the entire book in one go. To be fair I think some of the authors may struggle to understand some of the other chapters on a first reading.
b) Wikipedia. You are probably going to have a need to look up some of the terminology, and possibly languages. A few compilers/interpreters may come in handy to test some of the code samples and attempt to understand them.
c) A bookmark. This is not a book you are likely to manage in a single reading. In fact, I really don't recommend tackling this book in that manner. Read a few chapters, mull over the content, do some reasearch and a few proofs and carry on. Otherwise you'll get to page one hundred and simple be seeing "BLAH, BLAH, BLAH, BLAH" on the page.
Despite the rather heavyweight nature of this book, it is definately a worthwhile read. There are some very interesting topics discussed, my personal favourites being those looking at design patterns, software evolution and concurrency problems (my personal favourite from university). But I do think it suffers from "charity status" a little. Proceeds from this book have been donated to charity, and I think that has made the editor a little soft on the contributors. There are a couple of chapters, at the least, that would have benefited from being sent back with a little note saying "please make this chapter a little more accesible, not every reader has a brain the size of Belgium."