Introduction

This bookshelf (see it here in real life) is all about software development. I am particularly interested in software project management, process models, object oriented design and programming (mainly Java and .NET). Another fascinating area is the microcomputer revolution, and the history and the legends of silicon valley. Those books I have either read in the past (so one by one I will try to provide more short reviews), or that I am currently reading resp. plan to read in the near future. I would appreciate any recommendations for more quality books covering similar topics, that are worth being added to this list.

Past reading

The Pragmatic Programmer
By Andrew Hunt, Davis Thomas

"The Pragmatic Programmer" unfolds possible paths to modern software development. By covering a wide range of topics, like prototyping, utilizing an appropriate tool suite, module decoupling, design by contract, refactoring or automation, it illustrates best practices as well as major pitfalls. And at the same time is very entertaining to read.

Many propositions stated in this book simply made me nod my head, as the quoted anecdotes reminded me of common mistakes in software projects, some of which I have experienced myself in the past. 

In my opinion, lots of issues boil down to a programmer's attitude: Do you keep on questioning your current approaches? Do you consider coding as a non-mechanical process? Are you willing to invest some time and effort in your personal knowledge portfolio? Are you a pragmatic programmer?

Software Craftsmanship
By Pete McBreen

This book propagates craftsmanship as a new metaphor for software development. It focuses on the human individual, and states that experienced software craftsman can make all the difference between project success and failure. As with traditional craftsmanship, becoming a craftsman is only possible when being dedicated to lifelong learning. Apprentice developers first have to learn how software development is done (which is not the same as being taught how to program). They are mentored by a master craftsman, and benefit from observing his work. Apprentices become journeyman once they developed a deep understanding of their craft. When journeymen master their craft, they turn to be master craftsmen.

I sympathize with a lot of Pete McBreens statements. He just tends to be a little bit too harsh on classical software engineering. In my understanding, a focus on a systematic, scientific approach to software development, a well-defined process model, that is both scalable as adaptable, should be a fine accompanist to the software craftsmanship paradigm.

Effective Java
By Joshua Bloch

Not only the title resembles Scott Meyers "Effective C++" and "More effective C++". Just as Meyers' C++ books, "Effective Java" contains dozens of rules of thumb and describes challenges that most Java developers encounter every day. The content covers topics like immutability, favoring composition over inheritance and interfaces over abstract classes, substitutes for C/C++ constructs, performance pitfalls, threads, synchronization, and serialization. The book provides a great deal of help on producing robust and efficient code.

Not being aware of the issues explained in Effective Java means not knowing enough of the language. Isn't it a common misconception for someone to be proclaimed a qualified Java programmer, once he or she knows the language syntax and some of the most common APIs? In my professional career, I went through more than one nightmare caused by the work of unexperienced Java developers (and to be honest: looking back at some stuff I coded back in the days of Java's dawn today, I just also have to shake my head in disbelief). I wished I would have had one copy of this book back then. Things sometimes just seem too simple on the surface. These potential pitfalls are what no one talks about in many of the dispensable Java books that keep on being published each month, and I recommend to avoid them by reading this book, or one will have to figure it out the hard way. 

Peopleware
By Tom Demarco, Timothy Lister

This all-time-classic focuses on the social aspects of software development. Success or failure of software projects are influenced not only by technical, but also by human factors, and many technical leaders tend to deny that. Build together a "jelling team", avoid those cubicle offices, instead give your programmers the environment they need to make the best out of them. This book is full of wisdom, aerated with douzands of funny anecdotes, a must-read for software managers (and software developers too).

Design Patterns
By Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides

The first strike of the notorious "Gang-of-Four". Object oriented design patterns have existed before, but this was the first time the most universal of them were collected and well-documented within one writing. Besides providing a catalog of proven software design idioms, it also helped to establish a common "language" within developers, when it comes to talking about design ideas.

The first print of this book I ever possessed was the german translation, but I did not discover the exhaustive beauty of design patterns, unless I bought the original english version, and John Vlissides follow-up "Pattern Hatching". 

Patten Hatching
By John Vlissides

The Mythical Man-Month
By Frederick P. Brooks

Refactoring
By Martin Fowler

Extreme Programming Explained: Embrace Change
By Kent Beck

Service-Oriented Architecture: A Field Guide to Integrating XML and Web Services
By Thomas Erl

C Programming Language
By Brian Kernighan, Dennis Ritchie

C++ Primer
By Stanley Lippman, Josee Lajoie

Effective C++
By Scott Meyers

More Effective C++
By Scott Meyers

MCSE in a Nutshell: The Windows 2000 Exams
By Michael G. Moncur, Paul Murphy

Programming Windows. The Definitive Guide to the Win32 API
By Charles Petzold

Programming Windows With MFC
By Jeff Prosise

Teach Yourself Visual C++ 6 in 21 Days
By Davis Chapman

Teach Yourself Database Programming With Visual C++ 6 in 21 Days
By Lyn Robison, Curtis Smith, Michael Amundsen

Thinking in C++
By Bruce Eckel

Essential COM
By Don Box

COM+ and the Battle for the Middle Tier
By Roger Sessions

3D Game Programming with DirectX in C / C++
By Stefan Zerbst

.NET Crashcourse C#, .NET Framework, ASP.NET, VB.NET, ADO.NET, Managed C++
By Vasters, Oellers, Javidi, Jung, Freiberger, DePetrillo

.NET Framework Essentials
By Thuan Thai, Hoang Lam

Microsoft Visual C Sharp . NET. Core Reference
By Mickey Williams

Applied Microsoft . NET Framework Programming
By Jeffrey Richter

Developing Applications with Visual Studio.NET
By Richard Grimes

C# Design Patterns: A Tutorial
By James W. Cooper

Advanced .NET Remoting (C# Edition)
By Ingo Rammer

User Interfaces in C#: Windows Forms and Custom Controls
By Matthew MacDonald

Expert Service-Oriented Architecture in C#: Using the Web Services Enhancements 2.0
By Jeffrey Hasan

.NET Enterprise Services
By Clemens Vasters

JAVA 1.2 Unleashed
By Jamie Jaworski

Designing Enterprise Applications with the Java 2 Platform Enterprise Edition
By Nicholas Kassem, Enterprise Team

Mastering Enterprise JavaBeans
By Ed Roman, Scott W. Ambler, Tyler Jewell

EJB Design Patterns: Advanced Patterns, Processes, and Idioms
By Floyd Marinescu

Enterprise JavaBeans
By Richard Monson-Haefel

Effective Enterprise Java
By Ted Neward

IBM WebSphere Application Server Programming
By Bassem Jamaleddine

WebSphere Studio Application Developer 5.0
By Igor Livshin

UNIX in a Nutshell
By Arnold Robbins

Windows Server 2003
By Martin Kuppinger

Oracle SQL
By David C. Kreines

Oracle9i PL/SQL: A Developer's Guide
By Bulusu Lakshman

Microsoft SQL Server 7.0 Administrator's Pocket Consultant
By William R. Stanek

Database Tuning: Principles, Experiments, and Troubleshooting Techniques
By Dennis Shasha, Philippe Bonnet

Communications in Distributed Applications
By Oliver Haase

Network+ Exam Prep
By Melissa Craft, Mark Poplar, David Watts, Will Willis

Networking Principles
By Microsoft Press

Algorithms
By Robert Sedgewick

Applied Cryptography
By Bruce Schneier

Internet Internals. Technology und Programming
By Michael Tischer, Bruno Jennrich

Software Engineering. Prototyping and Objectoriented Software Development
By Gustav Pomberger, Günther Blaschek

Software Project Survival Guide
By Steve C McConnell

Code Complete: A Practical Handbook of Software Construction
By Steve McConnell

Writing Solid Code
By Steve Maguire

Debugging the Development Process
By Steve Maguire

Software Requirements
By Karl E. Wiegers

Programmers at Work: Interviews With 19 Programmers Who Shaped the Computer Industry
By Susan Lammers

Becoming a Technical Leader: An Organic Problem-Solving Approach
By Gerald M. Weinberg

Classics in Software Engineering
By Edward Yourdon

Death March: The Complete Software Developer's Guide to Surviving 'Mission Impossible' Projects
By Edward Yourdon

Waltzing With Bears: Managing Risk on Software Projects
By Tom Demarco, Timothy Lister

The Soul of a New Machine
By Tracy Kidder

Microserfs
By Douglas Coupland

Hard Drive: Bill Gates and the Making of the Microsoft Empire
By James Wallace, Jim Erickson

Overdrive: Bill Gates and the Race to Control Cyberspace
By James Wallace

Gates: How Microsoft's Mogul Reinvented an Industry-And Made Himself the Richest Man in America
By Stephen Manes, Paul Andrews

Barbarians Led by Bill Gates: Microsoft from the Inside
By Jennifer Edstrom, Marlin Eller

The Plot to Get Bill Gates
By Gary Rivlin

Microsoft in the Mirror: Nineteen Insiders Reflect on the Experience
By Karin Carter

Microsoft Secrets: How the World's Most Powerful Software Company Creates Technology, Shapes Markets, and Manages People
By Michael A. Cusumano

The Road Ahead
By Bill Gates, Nathan Myhrvold, Peter M. Rinearson

Big Blues: The Unmaking of IBM
By Paul Carroll

Who Says Elephants Can't Dance? Inside IBM's Historic Turnaround
By Louis Gerstner

Building IBM: Shaping an Industry and Its Technology
By Emerson W. Pugh

The Legend of Amdahl
By Jeffrey L. Rodengen, Jon Vanzile

DEC Is Dead, Long Live DEC: The Lasting Legacy of Digital Equipment Corporation
By Edgar H. Schein, Peter Delisi

The Ultimate Entrepreneur: The Story of Ken Olsen and Digital Equipment Corporation
By Glenn Rifkin

Inside Intel: Andy Grove and the Rise of the World's Most Powerful Chip Company
By Tim Jackson

Apple Confidential: The Real Story of Apple Computer, Inc.
By Owen W. Linzmayer

On the Firing Line: My 500 Days at Apple
By Gil Amelio

Apple: The Inside Story of Intrigue, Egomania, and Business Blunders
By Jim Carlton

Netscape Time: The Making of the Billion-Dollar Start-Up That Took on Microsoft
By Jim Clark, Owen Edwards

Competing On Internet Time: Lessons From Netscape And Its Battle With Microsoft
By Michael A. Cusumano, David B. Yoffie

High Stakes, No Prisoners: A Winner's Tale of Greed and Glory in the Internet Wars
By Charles Ferguson

The Difference Between God and Larry Ellison: Inside Oracle Corporation
By Mike Wilson

High Noon: The Inside Story of Scott McNealy and the Rise of Sun Microsystems
By Karen Southwick

The HP Way : How Bill Hewlett and I Built Our Company
By David Packard

Backfire: Carly Fiorina's High-Stakes Battle for the Soul of Hewlett-Packard
By Peter Burrows

Just for Fun: The Story of an Accidental Revolutionary
By Linus Torvalds, David Diamond

Startup: A Silicon Valley Adventure
By Jerry Kaplan

Computer - The History of the Information Machine
By Martin Campbell-Kelly, William Aspray

Nerds 2.0.1: A Brief History of the Internet
By Stephen Segaller

How the Web was Born: The Story of the World Wide Web
By Robert Cailliau, James Gillies

A History of Modern Computing
By Paul E. Ceruzzi

Dealers of Lightning: Xerox PARC and the Dawn of the Computer Age
By Michael A. Hiltzik

Computing in the Middle Ages: A View from the Trenches 1955-1983
By Severo M. Ornstein

Fire in the Valley: The Making of The Personal Computer
By Paul Freiberger, Michael Swaine

Accidental Empires
By Robert X. Cringely

The Silicon Boys: And Their Valley of Dreams
By David A. Kaplan

The Home Computer Wars: An Insider's Account of Commodore and Jack Tramiel
By Michael Tomczyk

Zap! The Rise and Fall of Atari
By Scott Cohen

Hackers: Heroes of the Computer Revolution
Steven Levy

dot.bomb: My Days and Nights at an Internet Goliath
By J. David Kuo

In Search of Stupidity: Over 20 Years of High-Tech Marketing Disasters
By Merrill R. Chapman

The Assembler Book. 8086/88/87, 80186, 80286/287, 80386/387, 80486 and Pentium
By Trutz E Podschun

GFA Basic 3.0
By Uwe Litzkendorf

Atari ST Graphic + Sound Programming
By Frank Mathy

Atari ST Turbo C Programming
By Frank Mathy

Atari ST Assembler Programming
By Peter Wollschläger

Turbo Pascal
By Winfried Kassera, Volker Kassera

Commodore 64/128 Assembly Language
By Said Baloui

Programming the 6502
By Herwig Feichtinger

Current reading

Facts and Fallacies of Software Engineering
By Robert L. Glass

Secrets of Software Success: Management Insights from 100 Software Firms Around the World
By Detlev J. Hoch, Cyriac R. Roeding, Gert Purkert, Sandro K. Kindner, Ralph Muller, Sandro K. Lindner

Modern Operating Systems
By Andrew Tanenbaum

Microcomputer-Systems. Microprocessors, Memory, Devices
By Helmut Bähring

Core J2EE Patterns: Best Practices and Design Strategies
By Dan Malks, John Crupi, Deepak Alur

Programming Pearls
By Jon Bentley

How Would You Move Mount Fuji? Microsoft's Cult of the Puzzle - How the World's Smartest Company Selects the Most Creative Thinkers
By William Poundstone

Future reading

Blown to Bits
By Philip Evans, Thomas S. Wurster

Only the Paranoid Survive: How to Exploit the Crisis Points That Challenge Every Company
By Andrew S. Grove

The Deadline: A Novel About Project Management
By Tom Demarco

Software Runaways
By Robert L. Glass

Microsoft .NET Server Solutions for the Enterprise
By the Microsoft Corporation

Rise & Resurrection of the American Programmer (Yourdon Press Computing Series)
By Edward Yourdon

Decline and Fall of the American Programmer
By Edward Yourdon

The Psychology of Computer Programming
By Gerald M. Weinberg


Created: August 28th, 2001
Updated: December 22nd, 2003