5 Books to read as a developer.

5 Books to read as a developer.

·

4 min read

1. Algorithms to live by

“Our judgments betray our expectations, and our expectations betray our experience. What we project about the future reveals a lot—about the world we live in, and about our own past.” American authors Brian Christian and Tom Griffiths’s self-help book Algorithms to Live By is an exploration of how insights from computer algorithms can be applied to problems from everyday life to help solve common decision-making problems. The book describes how our brains use them all the time to complete incomplete information or focus on the facts at hand, allowing us to make a decision without being paralyzed by indecision. It gives several scenarios where algorithms can be used to make life easier, including cleaning up a home using sorting algorithms, limiting the time used on time management with to-do list patterns, and using game theory and mechanism design to improve decision-making skills. Since this book draws inspiration from real life to explain the concepts, no such technical knowledge is required to understand it.

2. Pragmatic thinking and learning

“However, for programmers, combining rich, flexible human thought with the rigid constraints of a digital computer exposes the power and the deepest flaws of both.” Andy Hunt’s Pragmatic Thinking and Learning is a practical and extensive collection of ideas, frameworks, tools and tips to supercharge one’s learning, and help manage one’s knowledge more efficiently. This book is helpful, not just for programmers but for anyone who plans on hacking their learning at school, home and work. It uses the ‘Dreyfus Model of Skill Acquisition’ to help a reader gain better understanding over concepts and explores the architecture of the brain in order to help strengthen different thinking modes. It does involve some technical terms but one can easily read it without any technical knowledge too.

3. Refactoring: Improving the Design of Existing Code

“ I’m not a great programmer; I’m just a good programmer with great habits.” Refactoring is the process of rewriting software, without changing the way it functions, in order to improve its readability, testability or maintainability and Martin Fowler’s book aims on teaching exactly that. While the first edition of the book was written at a time when IDE’s did not support advanced refactoring and so most of the methods described are fully automated in modern IDE’s, the second edition of the book is more than just an update. It switched from Java to JavaScript for most of the examples, which led to renaming of many refactorings (for example: extract function instead of extract method). The most significant change besides the programming language is that the author uses more and smaller steps to explain the refactoring. This makes it much easier to apply it to a code. Over all, the book is a great read and one must have some technical knowledge in order to enjoy it.

4. Code Complete

“Reduce complexity. The single most important reason to create a routine is to reduce a program's complexity. Create a routine to hide information so that you won't need to think about it.” Steve McConnell’s code complete is divided into seven parts through which the author discusses about various principles like conquering complexity, picking a process, writing programs for people first and computers second, programming in terms of the problem domain, iterating repeatedly etc. The first section of the book talks about the general process of software development and the role of construction (a.k.a. programming) in that process. The book also talks about "Pseudocode Programming Process", which is a process of developing code by starting with detailed pseudocode. The final section of the book is "Software Craftsmanship", which talks about good practices in actually structuring code and how to write good, effective comments and code that documents itself as much as possible. All in all, this book is a very rich read with detailed lessons and one must read it to seek inspiration for becoming a better developer.

5. Atomic Habits James Clear

“goals are good for setting a direction, but systems are best for making progress.” An atomic habit is a regular practice or routine that is not only small and easy to do but is also the source of incredible power; a component of the system of compound growth. James Clear’s atomic habits is a must read for developers not just because it will inspire them to change their lifestyle for the better but also because it preaches the same principle that developers follow, ‘working in steps’. This book doesn’t have technical terms but it teaches about some significant principles which can be applied in every field of life, be it about how bad habits repeat themselves again and again not because one doesn’t want to change, but because one has the wrong system for change, or how changes that seem small and unimportant at first will compound into remarkable results if one is willing to stick with them for years; this book is definitely the perfect catalyst for success.

Contributed by: Vanshika Tandon (Twitter) (Instagram)