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.

Check all the books in Classics of Software Development list as well.

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

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.

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.

Clean Code : Handbook of Agile Code Craftsmanship

Author : Robert Martin

Robert Martin (famous for SOLID design principles) writes about 'clean code'. The source code that readable and understable. He starts with 'meaningful names for variables, functions, classes etc' and then goes on to more complex topics like impact of bad comments, design classes, writing unit tests, etc. Even if you follow 10% of his recommendations, it will make you way better programmer than masses.

Algorithms to Live By

Authors :

Typically you see algorithms developed by observing human or animal behaviour. However, this book goes reverse. It explains how to use algorithms to solve 'human problems'. For example, you are searching a girl/boy to marry, when do you stop searching. There is an algorithm for 'optimal stopping'. There are algorithms to schedule your work.

Phoenix Project

Authors : Gene Kim,Kevin Behr, George Spafford

Best explaination of Lean Software Development/DevOps but in the form of a novel. Many people don't like reading 'technical concepts' as novels. The appendix of the book has lot of useful information.

Effective Programming is More than writing code

Author : Jeff Atwood

Jeff Atwood 'Coding Horror' blog articles are published in this book. It does explain ideas like how good formatting , use version control impacts good programming practices

9 Algorithms that changed the future

Author : John MacCormack

John explains 9 important algorithms like PageRank (key algorithm behind google search), Public Key Cryptography, Error Correcting Codes in communication etc and how these algorithms have impacted and radically changed our world. Even though we are developers we are not aware of at least some of these algorithsm and their impact. Read it and re-read it after few months at least 4-5 times.

The Nature of Software Development

Author : Ron Jeffries

Learn Scrum from the author/inventor Scrum. This book is the 'best' common sense introduction/explaination of Scrum. You will get 'fundamentals' of Scrum and this book will answer 'why'. If you read this book and understand it, you can go and implement it in your team.