Book Recommendations for Software Developers

Some time back I prepared a list of books for C/C++ developers based on my experience. Similarly this is a list of books, about general software developments (not specific to any programming language or technlogy). I am linking the book titles to their wikipedia pages or their author or book site.

Practice of Programming

Authors : Brian W. Kernighan and Rob Pike

This book focuses on topics like testing, performance optimization, portability, design, good coding practices,etc. Each chapter introduces the topic with case study. It is like reading 'stories' about programming told by a master story teller. Each story teaches an important aspect of programming.

Book Website

The Pragmatic Programmer: From Journeyman to Master

Authors : Dave Thomas and Andy Hunt

This was the first book in 'Pragmatic Bookself' series of book. It is also one of the BEST. It is most practical advise to practicing software developers that I have seen. Especially for developers who want to develop and improve their skills.

Official "pragmatic programmer bookself" site is http://www.pragprog.com/

Pragmatic Version Control for Subversion

Author : Mike Mason

There are 3 variations of this title. (For Subversion, For CVS and For Git.) Anyone using Subversion for their project, this book is a must read. It explains practical aspects of using Subversion in day-to-day work (e.g. repository layout of directories, subversion hook scripts etc, handling binary files and best practices in using subversion).

Pragmatic Project Automation

Author : Mike Clark

"project automation" is an often neglected part by project teams. Usually a good 'automation' infrastructure is developed by product companies. This book talks about continuous build/integration, one click releases, integrating automated testing in the build process etc. The examples are about Java. But the concepts are applicable to every project.

Design Patterns: Elements of Reusable Object-Oriented Software

Authors :Erich Gamma, Richard Helm, Ralph Johnson and John Vlissides

No introduction required. If you have not read this book, then you are seriously missed an important book.

Code Complete

Author : Steven C. McConnell

As the name suggests this book is about practical aspects of entire SDLC. It talks about everything from estimation, design to good coding practices, naming conventions, good testing practices, debugging. Just have a look at 'detailed contents'. In short, this is a 'must have' reference book.

Beautiful Code Leading Programmers Explain How They Think

Authors : Andrew Oram, Greg Wilson

On internet you will find conflicting opinions about this book. Personally I liked it and I recommendation it. It is great experience learning from the thoughts of software designers like Sanjay Ghemavat (architect behind the google map-reduce), Small regex matcher from Kernighan, Design of Subversion Delta Editor, Design of NumPy iterators, Desing of Pythons dictionaries. Many of those we are using regularly. Its nice to have some understanding of what is going behind the scene. Each author has his own view and ideas about what is a 'beautiful code'. Understanding those different aspects and view points is an education.