I was recently interviewed by Fog Creek and one of the questions was about my favorite programming, coding and development books. I got very excited by this question as I'm a huge book nerd. And by a huge book nerd I mean I'm crazy about science, computer and programming books. Every few months I spend a day or two researching the latest literature and buying the most interesting titles. I could probably go on forever about my favorite books. I've so many.

I was so excited about this question that I decided to start a new article series here on catonmat about my top 100 programming, software development, science, physics, mathematics and computer books. I'll do five books at a time as breaking huge tasks in tiny sub tasks is the easiest way to get things done.

Here's my bookshelf just to prove my nerdiness:


My super nerdy bookshelf.

In the first post in the series I'll re-share the same five books that I recommended in my Fog Creek interview. I expect this article series to go on for quite some time so if you're interested in this topic, you can subscribe to rss feed of my blog and follow me on twitter for updates.

Enough talking. Let's get to books!

#1 The New Turing Omnibus


The New Turing Omnibus.

A must read for anyone interested in computers. This excellent book contains 66 short essays on the most important and interesting computing topics, such as compression, Turing machines, recursion, formal grammars, non-computable functions, neural networks and algorithms. The writing style of this book is casual and it contains almost no math. It's my favorite book of all time.

Author: Alexander K. Dewdney.

#2 The Little Book of Semaphores (free pdf)


The Little Book of Semaphores.

This book teaches how to think about multithreaded execution and how to solve synchronization problems. I highly recommend it, especially if you're self-taught and have never had an Operating Systems course. This book leads the reader step by step through a series of classical and not so classical synchronization problems. It's great fun to work through the problems and I've been recommending it to everyone ever since I found it.

Author: Allen B. Downey.

#3 Programming Pearls and More Programming Pearls


Programming Pearls and More Programming Pearls.

Classic programming books. Jon Bentley knows how to write clearly and enthusiastically about algorithms. These books are timeless and they teach you how to reason about problems, break them apart, and efficiently implement the solutions. You'll pass the Google interview if you read and understand these two books.

Author: Jon Bentley.

#4 The Little Schemer


The Little Schemer.

The Little Schemer teaches you a little bit of LISP in the most fun style ever. The book is a dialogue between you and the authors about hundreds of tiny Scheme programs and it teaches you to think recursively. This book will make you think and will stretch your mind a little. It's one of the most fun programming books ever written.

Authors: Daniel P. Friedman and Matthias Felleisen.

#5 The Elements of Style and The Elements of Programming Style


The Elements of Style and The Elements of Programming Style.

The Elements of Style is not exactly a development or coding book but a book on writing. To be a great developer you need to communicate clearly, simply and directly. Strong writing skills are essential to success. The book is just 100 pages long and you can read it in one evening. Re-read it every couple of months for full effect.

Authors: William Strunk Jr. and E. B. White.

The Elements of Programming Style is a classic programming book by Brian Kernighan. The form of this book is strongly influenced by The Elements of Style. It's an old book but mostly everything it teaches still applies today. It contains 70 rules of programming such as:

  • Write clearly – don't be too clever.
  • Say what you mean simply and directly.
  • Choose a data representation that makes the program simple.
  • Let the data structure the program.
  • Modularize...

Authors: Brian W. Kernighan and Phillip J. Plauger.

As a bonus, I recommend my own book Perl One-Liners, published by No Starch Press. My book teaches how to be fast in the command line and get things done quickly there. Being fast in the command line will save you thousands of hours throughout your career. Once you master one-liners, you'll be solving quick one-time tasks in seconds. I've seen programmers spend hours writing programs for tasks that can be done in 20 seconds with a one-liner. Don't be that programmer.


Perl One Liners.

I hope you liked my first five book recommendations. Let me know in the comments what your favorite books are and until next time!

Comments

Algorithmique Permalink
April 26, 2015, 20:55

Hello Peter,
Its a good idea, life is short and we need to choice rocks ;)

This is my list:
*-Kiselev's Geometry I&II(new Elements's book!)
*-The Art and Craft of Problem Solving(I've used 2nd ed) by Paul Zeitz(Psychological approach to mathematical problem solving)
*-Calculus(I've used 4th ed) by Michael Spivac (Unique book in calculus's world books!)
*-Discrete Algorithmic Mathematics(I've used 3rd ed) by Stephen Maurer, Anthony Ralston (Discrete + Algorithmic , Put it beside Concrete Mathematics;) )
*-The Art Of Probability by Richard Hamming (There are many many probability books but this one is the art of probability!)
*-Number Theory: A Lively Introduction with Proofs, Applications, and Stories(MatheMythical approach to the numbers)
*-Algorithms: A Creative Approach by Udi Manber (most inspiring algorithm's book forever!)
*-Computer Organization and Architecture_Themes and Variations by Alan Clements (Not so famous but really best COA book so far!)

Regards,

April 26, 2015, 21:48

Code (Petzold)
How to Solve It: Modern Heuristics (Michalewicz/Fogel)
Eloquent Ruby (Olsen)
Thinking Fast and Slow (Kahneman)

I have a copy of Pearls and periodically tackle some of the problems in it with Clojure. I am going to read The Little Book of Semaphores and I just bought a copy of The Elements of Style. (This has to be the third time I've seen this book recommended by another engineer.)

Nick Permalink
April 27, 2015, 02:26

Where do you find the time to read?

April 27, 2015, 02:32

Hi,Peter

This is my list:
1.Code Complete ( Steve McConne)
2.The Clean Coder: A Code of Conduct for Professional Programmers(Robert C. Martin)
3.Are Your Lights On?(Donald C. Gause , Gerald M. Weinberg )

Leave a new comment

(why do I need your e-mail?)

(Your twitter name, if you have one. (I'm @pkrumins, btw.))

Type the word "browser_455": (just to make sure you're a human)

Please preview the comment before submitting to make sure it's OK.

Advertisements