Technical Reading List (in no particular order)

This lists most of my computer-related reading. Although, given the random assortment of articles on the web, it's a bit of a skewed view. I've omitted most of my college textbooks.
Where I found a good web site from the author, I hyperlinked it. Dr Dobbs has excellent reviews, so I used a few of those. The rest are to the publisher or  
 *  Indicates that I do only partially read the book. This is either because the book wasn't very good or I lost interest in the topic; or the book is a reference work and I just read sections.
 +  Indicates a book that I'm still working on it.
!!!Indicates a Favorite


An Introduction to Database Systems, 6th Edition - Date

A Guide to the SQL Standard - Date & Darwen

SQL for Smarties: Advanced SQL Programming !!! - Joe Celko

Introduction to Database Systems - Elmisri & Navath

Understanding the New SQL: A Complete Guide * - Melton & Simon

Oracle Database Administration: The Essential Reference - Kreines & Laskey

Oracle PL/SQL Programming, 3rd Edition * - Feuerstein

Oracle SQL*Plus: The Definitive Guide * - Gennick

Oracle SQL: The Essential Reference - Kreines

Optimizing Oracle Performance - Cary Millsap

The Guide to SQL Server - Nath

The Guru's Guide to Transact-SQL * - Henderson

MCSA/MCSE/MCDBA Self-Paced Training Kit: Microsoft SQL Server 2000 System Administration, 70-228, Second Edition - this book is embarrasingly bad - it has no author

Oracle SQL Tuning Pocket Reference - Mark Gurry

Mastering Data Warehouse Design: Relational and Dimensional Techniques - Imhoff, Galemmo, and Geiger


Software Engineering and other practical, language-independent development techniques:

Productive Projects and Teams (second edition) !!! - Tom DeMarco and Tim Lister
This book is referenced by so many others, I felt like I had already read it. A testament to its importance.

Refactoring !!! - Fowler

The Practice of Programming !!! - Brian W. Kernighan, Rob Pike
If you understand and appreciate this book, I have a job for you.

Literate Programming * - Donald Knuth

Code Complete, 2nd Edition !!! - Steve McConnell
This book changed my life! After studying Physics in college, I started programming without knowing the first thing about team work, software engineering, or computer science. But I had learned structure programming in Pascal and played with FoxPro). I thought what I didn't know, but had a co-worker who introduced me to Dr Dobbs. It was clear I didn't know shit, so I tried to read as much as possibly could. This book taught me many practical things I could change about my own work habits and my teams - now I'm a member of the ACM and have the IEEE's Software Development Professional Certificate!

Rapid Development !!! - Steve McConnell

Writing Solid Code !!! - Steve Maguire

Dynamics of Software Development - McCarthy

Software Engineering (6th Ed.) - Ian Sommerville

Facts and Fallacies of Software Engineering !!! - Glass

Software Craftsmanship !!! - McBreen

The Pragmatic Programmer: From Journeyman to Master !!! - Hunt and Thomas
After reading many of these general, how to work better kinds of books, this one was still an eye opener. Convinced me to try Ruby, a great scripting language.

Data Crunching - Greg Wilson
This is a great introduction to massaging, munging or crunching data. It's not about heavyweight statistical analysis, but stuff like getting data from one application into another. Also covers lots of little techniques that add up to a lot of value.

Literate Programming – Knuth


Software Modeling/Architecture/Design:

The Elements of UML Style - Scott Ambler

The UML Toolkit * - Erikson

UML Distilled !!! - Fowler
Note that this book and the one above are not really about design, but about how to document design in UML. Both are good, but the 2nd is much shorter and to me, more approachable. The UML Toolkit is stricter and focuses on real time vs business apps.

Programming Pearls & More Programming Pearls!!! - Jon Bentley

Design Patterns: Elements of Reusable Object-oriented Software * - Gamma, Helm, Johnson, Vlissides

Enterprise Integration Patterns - Hohpe and Woolf

Software Architecture in Practice – Bass, Clements, Kazman

Software Management / Process / Commentary :

The Mythical Man-Month, 1st Edition - Fred Brooks
Adding people slows down projects in the short term, and in the long term does not increase productivity in proportion to the number of people added.

Anti Patterns: Refactoring Software, Architectures, and Projects in Crisis - Brown, Malveau, McCormick, & Mawbray
I love the contrarian approach to learning. Ouch! That sucked; let's try not to do it any more.

Extreme Programming: Embracing Change - Kent Brock
Interesting. This didn't change the way I work at all, but gave me comfort that others used some of the same techniques.

Wicked Problems, Righteous Solutions - DeGrace & Hulet Stahl

Slack - Tom Demarco
A book with one good idea (that's one more than most books). Companies need slack (bandwidth) to deal with immediate issue (aka fire fighting) without disrupting normal operations.

Hackers and Painters !!! - Paul Graham
I had to expand the categorization to fit this in. It fits with these other books more than any other group.

After the Gold Rush - Steve McConnell

Debugging the Development Process !!! - Steve Maguire

Software Project Survival Guide - Steve McConnell

Behind Closed Doors: Secrets of Great Management - Johanna Rothman and Esther Derby

Joel on Software !!! - Joel Spolky
Loved the web site, so i read the book.

Peopleware – DeMarco and Lister

Peer Reviews in Software – Wiegers

Balancing Agility and Discipline – Boehm & Turner

C & C++:

The C Programming Language !!! - Kernigan & Ritchie
A classic - other language books get compared to this one - mostly unfavorably. A much younger me stayed up into the wee hours doing exercises from this book. Obviously no longer as relevent as in 1990, but this is the best written book about a specific technology.

C++ Primer, 2nd Edition * - Stanley Lippman

Effective C++ &
More Effective C++ - Scott Meyers

STL Tutorial & Reference Guide - Musser & Saini

Expert C Programming !!! - Peter van Der Linden
I think of this as the next volume of "The C Programming Language". Lighter style, but still well written.

Programming C# - Jesse Liberty



Core Java - Cornell & Horstmann

Java in a Nutshell - David Flanagan

Java Servlet Programming - Jason Hunter

Just Java and Beyond - Peter van Der Linden

Java Performance Tuning - Jack Shirazi

A Little Java, A Few Patterns – Felleisen & Friedman

Unix & friends:

Unix in a Nutshell - Dan Gilly

The FreeBSD Handbook - various

Unix Power Tools * - Peek, O'Rielly, Loukides

Learning the bash shell - Newham & Rosenblatt

Learning Red Hat Linux * - Bill McCarty

The FreeBSD Corporate Networker's Guide * - Mittlestaedt


Windows / COM / .Net:

Effective Com - Don Box

Inside OLE, 2nd Edition * - Kraig Brokschmidt
Couldn't finish, too big, too boring.

Advanced Windows (The Developer's Guide to the Win32 API for Windows NT and Windows 95) !!! - Richter
This is the book I learned Windows programming with. Not as crisp as K&R, but really well done. Convinced me to read Richter's book on .Net, which did not disappoint.

Programming Windows 3.1 - Charles Petzold

Programming Windows 95 with the MFC - Prosise

Learning DCOM - Thuan L. Thai

VB and VBA in a Nutshell: The Languages - Paul Lomax, Ron Petrusha

Programming Distributed Applications with COM+ and MS Visual Basic - Ted Pattison

Distributed Applications with Visual Basic 6.0 - Microsoft Corporation

Windows NT Administration - Brain

Applied Microsoft .NET Framework Programming !!! - Jeffrey Richter

Win 2000 Active Directory – Lowe-Norris


Dynamic Html : The Definitive Reference* - Danny Goodman

Web Design In A Nutshell - Jennifer Niederst

Developing ASP Components - Shelley Powers

secrets of successful web sites - David Siegel

Computer Networks and Modern Operating Systems !!! - Andrew S. Tanenbaum
Ok, these are textbooks. But Dr Tanenbaum does such great work ... defending Linus Torvalds from idiots; aggregating election polls; building distributed OSs.

TCP/IP Illustrated, Volume 1: The Protocols - W Richard Stevens

In Search of Clusters – Pfister

Other Languages:

Programming Ruby - Thomas & Hunt (hope this language takes off :-)

Learning Perl on Win32 Systems - Schwartz, Olson, & Christiansen

Perl Cookbook * - Christiansen & Torkington

FoxPro 2.5 Advanced Developers Handbook - Adams & Powell

Event Driven Programming in FoxPro - Bard



Beyond Fear: Thinking Sensibly about Security in an Uncertain World - Bruce Schneier

This excellent book is easily accessible to non-computer people. I put it here because Bruce may be known to programmers as a cryptography expert (most of which is outside of my expertise, or "beyond me" in the vernacular). This book is mostly a discussion of public and private policy, where technology mixes with economics, psychology and the rest of the real world. He would make a great CTO for the Department of Homeland Security, if only they would listen to him.

Practical Cryptography - Niels Furgeson and Bruce Schneier

Fantastic. I have the utmost respect for these two. This book is well written, helpful (practical is in the title with good reason) and accessible to good engineers. Cryptography and more generally, security are both alien and difficult topics. In the rush to add features they used to mostly get ignored on software projects. In the new paraniod world post Sept-11th they get a lot more lip service. This book shows why security usually can't be added in at the end. Like quality, it must be a goal every step of the way. And it is hard. This book gives a practicing engineer or designer enough to be able to talk to an expert, which is ultimately what the book, quite reasonably, reccomends.

Software Testing Techniques * - Beizer

Testing Computer Software, 2nd Edition - Kaner, Falk, Nguyen

The XML Handbook - Charles F. Goldfarb, Paul Prescod

Algorithms in C++ - Robert Sedgewick

Mastering Regular Expressions - Friedl

Software Requirements - Karl Wiegers

Google Pocket Guide - Tara Calishain, D. J. Adams, Rael Dornfest

SharePoint User's Guide - Infusion Development Corp. I've been doing a few SharePoint project and decided I needed to understand some of the details. Normal books with team authors suck, this book suffers from that as well. However this has the appeal of being the smallest book on the topic at 120 pages. It really should have been 80, what with lots of step by step processes. e.g., "How to Remove a Site"... generally all you need are the first 2 or 3 steps to navigate to the function. If you can't figure out that you need to press the Delete button and press OK to confirm, you're dead in the water already.

Using SANs and NAS - W Curtis Preston



Dr. Dobbs Journal (subscriber since Jul-93)

MSDN Magazine - formerly Microsoft Systems Journal (occasional)

Communications of the ACM (subscriber since Sep-99)