My Bookshelf Part I

Working in the IT industry means learning continuously, and keeping lots of information in your brain at once; this, in turn, means subscribing to key newsletters, reading online forums and blogs, and last but not least, reading a bunch of books and PDF papers every year.

I try to read at least 6 books per year, covering some of the following subjects:

  1. Programming Languages, Platforms & Frameworks
  2. Software Architecture and Design
  3. Security
  4. Project Management and Methodologies
  5. Computing History and Industry Trends

Since I assume that if you are reading this, you work in IT, more particularly in software development, in this article I will give you a list of some books that I consider fundamental in my own career. That is, years worth of reading :) This is the first part of the article, giving the list of Programming Languages books; stay tuned for the next chapters covering the other topics.

The list is not exhaustive nor mandatory; I just consider it to give me a fine background for being productive and proficient in today’s software development tasks. And while some of this books are old classics (one of them already more than 30 years old) the ever-changing IT environment will probably make this list become obsolete in less than 5 years. I think, however, that many of the titles listed below will remain as classics…

About the List

First I will explain what I mean when I say “6 books per year”: believe me, I don’t necessarily mean those 700 to 1000 pages long books with the name “Bible” on it; some very good IT-related books are less than 150 pages long, and still ground breaking.

And no, the “XXX for Dummies” nor the “YYY in 21 days” series books are to be taken into account. Period. They just do not compare to the O’Reilly or Addison-Wesley books.

And, please, do not try to convince me saying that you do not have time: as Joel says that writing is a muscle, I say that reading is another; the more you read, the easier it is to read faster and more accurately, and to retain what you just read; you surely know the frustrating feeling of not remembering the contents of the page before, because you just cannot focus your attention on the book.

I usually take 10 days to read a 200 pages book, but this average can change, mostly depending in whether I enjoy the book or not, and whether I have enough quiet moments during the week. For example, weekends are great moments to read, mostly under the sun, in my balcony or in the park near my home. You must find the right environment to read, and take the chance to relax and enjoy your book. Another great place for reading is the train; commuting from Lausanne to Geneva, every day back and forth, gives me lots of quiet moments to read (Swiss trains are something really out of this planet). The important thing is that you should enjoy reading what you read; if you don’t stand a particular book, drop it, do something else, plug into your iPod, read Dr. Dobb’s Journal, anything else. Don’t force yourself to finish a book (unless you must because of some valid reason).

Another important thing about this list is that the order that I suggest does matter; even if you know most of the concepts in these books, some of them act as “frameworks” and are useful to get a stronger background on the subject. Lots of other books use these “framework books” as the base reference to expand the subject and present new viewpoints.

This is, actually, how I built my bookshelf: in a backwards manner; I jumped from one to the other, reading the references at the end of the books. The rule of thumb for creating your own list is: if you see the same title being referenced in a lot of books, then buy it. You will not regret it. Another useful way to find interesting books is to read the user comments in Amazon; they are often a good reference for me.

For each referenced book, I will give the corresponding Amazon link, which contains the ISBN number, and if it has a related website, I will add the link as well (back in the 90’s they used to include a CD with source code or software, and even before they used to carry a floppy disk…).

Index

  1. Books about Programming Languages, Platforms & Frameworks
  2. Books about Software Architecture and Design, and Security
  3. Books about Project Management and Methodologies, and Computing History and Industry Trends

1. Programming Languages, Platforms & Frameworks

JavaScript Definitive Guide

by David Flanagan (ISBN 0596000480) http://www.oreilly.com/catalog/jscript4/ http://www.amazon.com/exec/obidos/tg/detail/-/0596000480

O’Reilly books are, in my opinion, among the best on the market; this one is no exception. If you do serious web development, don’t think twice about it; buy this book right now. It is the absolute reference of the JavaScript language, with an excellent theoretical introduction to the language, and a deep reference of the different versions of the DOM as well as of the “core” JavaScript language. A definitive guide, but definitely not for beginners; a solid understanding of OO concepts is needed.

As a side note, I used it as the basis of a programming course that I taught last year, and the results were excellent. The problem with JavaScript is that it is the “World’s Most Misunderstood Programming Language” as Douglas Crockford says. This book shows clearly that JavaScript is an extremely powerful object-oriented language.

Applied .NET Framework Programming

by Jeffrey Richter (ISBN 0735614229) http://www.amazon.com/exec/obidos/tg/detail/-/0735614229/

If you really want to know how does the .NET Framework works, then this is the book you are looking for. The title is misleading; actually the book delves into the inner workings of the Framework and its most particular features (CLR, threads, delegates, attributes), helping developers understand better how to make better, faster, more secure applications. It is an absolutely required reading for any .NET developer.

Inside C# Second Edition

by Archer Whitechapel (ISBN 0735616485) http://www.amazon.com/exec/obidos/tg/detail/-/0735616485/

The perfect complement to Richter’s book; this is not only a book about C#, but also a complete description of why C# is the best choice among .NET programming languages for nearly every project. Every feature of the language is described in great detail, including the IL code generated by the compiler, explaining drawbacks and advantages. It must be said that this book is about C# 1.0, and as such it does not cover recent developments such as Generics. Other than that, the book is utterly excellent.

Learning Cocoa with Objective-C

by James Duncan Davidson (ISBN 0596003013) http://www.oreilly.com/catalog/learncocoa2/ http://www.amazon.com/exec/obidos/tg/detail/-/0596003013/

Another O’Reilly gem. I bought this book shortly after buying my first iBook in 2002, and I found it extremely easy to read, filled with short and clear examples. Cocoa is to Mac OS X what .NET is to Windows: a complete OO framework that allows to develop applications extremely quickly; but the comparison ends there: Cocoa is based in a dynamic typed language (Objective-C), similar to Smalltalk and Ruby, which makes everything soooo much easy to do.

James Duncan Davidson is a skilled Cocoa developer and consultant, and his blog is worth a read: http://x180.net/

Programming in Objective-C

by Stephen Kochan (ISBN 0672325861) http://www.amazon.com/exec/obidos/tg/detail/-/0672325861/

After reading Davidson’s book, I wanted to know more about Cocoa; that’s why I read Kochan’s book to get a complete overview of Objective-C, which is with Ruby one of my favourite languages. This book does not show Objective-C in the context of Cocoa, but also in other implementations as well; actually, it takes and inverted approach to other Objective-C books. The author does not begin teaching C and then jumping into Objective-C, but rather teaches first Objective-C first, and deal with C afterwards. The journey is rewarding; you get to learn two languages for the price of one! And both with simple, concise examples.

Cocoa Programming

by Scott Anguish, Erik M. Buck, Donald A. Yacktman (ISBN 0672322307) http://www.cocoaprogramming.net/ http://www.amazon.com/exec/obidos/tg/detail/-/0672322307/

Well, I admit, I liked Cocoa so much that I got this book… and I do not regret it. Even given the size (nearly 1300 pages) it is an incredible reading, full of examples, details, insider tips, you name it. Each and every feature of Cocoa (as of Mac OS X 10.2 Jaguar, it must be said) is described here. Unfortunately there has not been an update to this book for Panther nor Tiger, so that new features (Core Data, Cocoa Bindings, etc) are left to discovery in the Apple Developer Connection website.

Professional SQL Server 2000 Programming

by Rob Vieira (ISBN 1861004486) http://www.amazon.com/exec/obidos/tg/detail/-/1861004486/

Do you use Microsoft SQL Server 2000? You need this book. You must have it. 1400 pages worth of incredible details about the database engine, queries optimization, language features, you name it. It is a fundamental reference, and actually, the only Wrox book that I found worth buying (I tend not to like their books… well, actually they went bankrupt, so I think I was not the only one with such opinion…). Maybe they should change the picture in the front cover, the book may have better sales ;)

Coming soon

I will soon post more about my bookshelf…! Please do not hesitate to leave any comments… I would love to hear about you.