|
Steve McConnell's Code Complete is my bible! If I were to recommend one book on programming, this would be it! It's also one of the finest examples of a technical book in terms of stylistics: short sections, good use of callouts, highly organized information is small digestible chunks. If only all technical books were this well put together! I have also read McConnell's Project Management Survival Guide and his book on the discipline of programming: reviews of those two books will come here in the future, though I can say that I greatly enjoyed both of them.
Steve MacGuire's Writing Solid Code is similar to Code Complete, but doesn't approach Code Complete's richness and density of information.

I am a big convert to Design Patterns. The reason: in hiring new programmers, I found that they just couldn't be effecetive, because they didn't know how to design software for the applications they were assigned to. The reason: they just hadn't done it before, and thus hadn't learned "the lessons" you learn when you write several versions of several applications in a specific domain. Unfortunately, learned "the lessons" in this way is time consuming, and very expensive for the employer (which was me). Also, I was having trouble designing software that took advantage of particular programming techniques, because the technical complexity in implementing my designs caused them to be unwieldy. Reading about design patterns changed all that: now I can read about particular design solutions to known common problems, and apply them to my problems. For programmers who don't have my background, I can hand them some specific design pattern articles, and they start to understand how things are done well in our application domain, without having to make all the same mistakes. The Design Patterns book is what started this "revolution" in programming, and for that, I'm grateful (this book has been much complimented in the press, with the author's receiving Dr Dobb's annual award).
Ed Yourdon's Decline & Fall of the American Programmer received a lot of press. I doubt any of the reporters read his book, because the inside is not anywhere as dire as the
title. I found it to be an interesting overview of the options available to improve the programming process. It was critical of the USA, but didn't argue that any other nation was much better off. Besides, he never argues that there has been a decline or a fall of American programming, just that we haven't advanced enough. This book is useful more as an overview of the state-of-art of the-discipline-of-programming than a polemic against American programmers.

Fred Brooks' Mythical Man-Month is a classic in common-sense computer project management. I thought this was old news, but was surprised how many IS managers aren't aware of this stuff.

Gerald Weinberg's Psychology of Computer Programming and his Understanding the Professional Programmer are great fun, and look at the field of computer project management from a totally different angle. Both books are very well written, and can be finished in an evening.

O'Reilly's Multi-Platform Code Management is a useful book for people doing programming work on multiple Unix platforms. It's more a prescriptive book, detailing a system that the author has devised, that he feels works well. Instead of following the system the author outlined, I instead took some of the goals and techniques that were behind the system and applied them to my own environment. I think this book is especially relevant in cases where you aren't using any class libraries (java or c++) which do the porting for you -- ie, typical C based Unix programming.

Grady Booch's Object-Oriented Analysis and Design is the most famous, and most-oft recommended book about OO design. But, I have to admit that while it was one of the first books I purchased when learning C++ in 1995, I never got around to reading it. Whenever I would flip through it, it seemed dry, daunting, and not all that applicable. However, it's been several years since I've last flipped through it, and since I now think Design Patterns are lots of fun (and boy, are they dry) I might feel differently about Booch.

Anti-Patterns documents the counter-productive things that occur in software engineering. I have read good reviews of this book, but have not yet read it.

The book Dynamics of Software Development presents techniques for developing software in the time honored "rules to follow" format. I've not yet had time to read this book...review to come in the future.
|
|