Books

It seems that publishing anything these days is really really easy. A trivial search will reveal a plethora of terrible technical books about technologies nobody will remember a few years from now written in dry boring monotone. Rest assured, you won't find these books here. Looking for useful, inspiring, and interesting books isn't unlike looking for a few needles in a haystack. However, I'll have to disappoint you. You won't find these books here either. What you will find instead are books that are tremendously, extraordinarily, unbelievably mind-bending. Books that need to be read at least half a dozen times before you can acquire a more than superficial understanding of their contents. Books that will change the way you think. Books that will stretch your mind and will make you a better developer, forever and ever, till the end of time. What you will find here is a few needles in an endless field stacked with hay.

The Haskell School of Expression

Paul Hudak

The Haskell School of Expression

Haskell isn't an ordinary language. It's different. Really different. If you think learning Lisp requires flipping your mind inside out, take a look at Haskell. Its paradigm is equally hard to wrap your mind around, but in a very different way. With Haskell it's no longer about parentheses. It's worse. You have to get used to the fact that all variables can only be assigned to once. They're all constant. Final. Immutable. And the best part is that people manage to write compilers and web applications in Haskell that are much shorter and more maintainable than typical Java programs. This book does an excellent job explaining Haskell to a functional programming novice.

Modern C++ Design

Andrei Alexandrescu

Modern C++ Design

There is a lot to C++ that most programmers don't know. From my experience interviewing at various Wall Street firms, most developers that call themselves C++ experts couldn't imagine the techniques presented in this book in their wildest dreams. By a weird twist of fate C++ templating mechanism happens to be Turing complete. The book presents mechanisms that allow compile time operations on types: branching, iteration, etc. Modern C++ Design also develops an idea of "policy based design" that allows to combat multiplicity of choice so prevalent in developing software. The greatest value of the book, however, is not in its practical advice but in its mind-bending concepts and introduction of metaprogramming to C++ developers. This book will probably get you as close to the power of Lisp macros as humanly possible in a mainstream "enterprise-ready" language.

On Lisp

by Paul Graham

On Lisp

If you became an expert in mainstream imperative languages without seeing a line of code from an "alternative" language you're in for a long, painful, mind-bending ride. In Lisp everything is different. Everything looks alien, starting with the syntax and ending with the preferred way to express algorithms. Yet behind this alien landscape is a language of incredible uniformity and expressive power. Lisp allows one to write intelligent programs, programs that aren't possible to write in other languages without reinventing a Lisp interpreter. On Lisp does a tremendous job explaining these ideas and concepts to Lisp newcomers. After you understand this book, you will never look at programming in the same way. I have to warn you, this might be a curse rather than a blessing: you will never be able to program in C++ or Java without feeling suffocated again1.

The Road to Reality

by Roger Penrose

The Road to Reality

Every once in a while a book comes along that has no practical applications whatsoever. Learning about relativity and string theory and non-Euclidean geometry will not help you code a web-page faster, nor will it improve the quality of your code. What it will do is stretch your mind in ways that will make you an entirely different person. By the time you understand most of the mathematical concepts used in The Road to Reality you will not look at your work in the same way again. The first chapter of the book (which deals with the relationship of physics and mathematics) is alone worth the price of admission. If you're looking to gain insight into the way our world is architected and improve your knowledge of mathematics to the point where it will make you a better developer, this is a book for you. While the tone is interesting and pleasant, the concepts are extremely hard. Exactly the kind really smart developers that change the face of the industry love to tackle.

1This book is also available for free in electronic format here.