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.
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.
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
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.
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.