The major problems of our work are not so much technological as sociological in nature. We are not in a high-tech business, but in a human communication business. Our successes stem from good human interactions by all participants in the effort, and our failures stem from poor human interactions.
Peopleware
The Passionate Programmer
You can’t be remarkable if you don’t love your environment, your tools, and your domain. Leading a remarkable career is the best way to kick start that same desire for leading a remarkable life—one where you don’t just become a better and more valuable worker, but you become a better human too.
This book is not just about making better widgets and feeling secure in your job. It’s just as much about developing the skills and sensibilities for leading a more rewarding life filled with many remarkable aspects, with work just being one of them.
On Writing - A Manual of the Craft
Although I have never read any of Stephen King’s novels, I have heard about the man enough to respect him as a writer. So when I found out that he wrote a book on writing, I immediately bought a copy and read it over the weekend.
This book offers many practical ideas that will make you a better writer. In addition, many of King’s suggestions to become a better writer also apply to becoming a better programmer. Just replace writing with programming, and you are good to go.
Ask Your Developer
Last year, when I was building Virtual Inspections, a product that lets city inspectors have virtual meetings with inspectors in the field using Twilio Video, I read Jeff Lawson’s book Ask Your Developer.
Metaprogramming Ruby 2
Metaprogramming enables you to produce elegant, clean, and beautiful programs as well as their exact opposite programs. This book will teach you the powerful metaprogramming concepts in Ruby, and how to use them judiciously.
Programming Pearls
This books contains Jon Bentley’s essays from his column in Communications of the Association for Computing Machinery. It describes practical programming techniques and fundamental design principles.
Unix: A History and a Memoir
Bell Labs, where Unix began, was a remarkable institution that produced many good ideas and capitalized on them.
Smalltalk Best Practice Patterns
This book is about the simple things experienced, successful developers do that beginners don’t. It is a style guide, in a sense, teaching you how to communicate most clearly through your code. This book is for developers who want to program and want to do so as quickly, safely, and effectively as possible.
The Elements of Style
This is the classic text on writing. It offers practical, highly useful advice on improving your writing skills. This book will help you communicate more effectively and in a simple, concise way.
A Philosophy of Software Design
People have been programming for more than 80 years, but there has been surprisingly little conversation about how to design those programs or what good programs should look like. Though much has been written on development processes and techniques like agile and object-oriented programming, but the core problem of software design is still not explored.
Deep Survival
Deep Survival is less about outdoor survival and more about life. Its lessons go far beyond the wilderness and help you not only survive, but thrive with the challenges that life throws at you. Really well-written book. A must read. Here are my highlights.
Rework
Rework redefines how to start and stay in a business. It is full of contrarian ideas, such as staying small is good for you and your business. I have read this book multiple times over the last decade. Every time I read it, I learn something new. The advice doesn’t only apply to the founders but also employees and management. A must read.
Refactoring
Whenever you read [Refactoring ], it’s time to read it again. And if you haven’t read it yet, please do before writing another line of code. - DHH
The Fieldstone Method
Gerald M. Weinberg is one of my favourite writers when it comes to explaining complicated ideas in simple terms. This book explains his writing process and contains valuable advice for aspiring writers. What’s funny is that all the advice for writers is equally applicable to software developers. Just replace writing with programming.
Show Your Work
People are interested in how you work, if only you presented it to them in the right way.
Why We Sleep
This book taught me a lot about the activity that everyone just takes for granted. It’s more important to understand what a lack of sleep will do to your health than the benefits.
On The Shortness of Life
One of the classic Stoic texts that has stood the tests of time for over two thousand years.
A Wealth of Common Sense
One of the best books on finance. Doesn’t delve into complex formulas, saving money on lattes, or maths. Instead focuses the fundamentals. Simplicity, discipline, patience, and a focus on the long-term.
Docker in Action
I have started diving deeper and deeper into Docker. Currently, I am reading “Docker in Action” by Jeffrey Nickoloff and Stephen Kuenzli. It’s a very well-written book, in an easy to understand language. I highly recommend reading this book if you want to understand Docker and containers. Here is a brief summary of the first chapter, which gives a detailed introduction to Docker and related technology.
Are Your Lights On?
A classic text on problem-solving by Jerry Weinberg. The book is short, but packed with wisdom. Especially useful if you are a software developer trying to build yet another feature for your application.
Six Easy Pieces
A really good introductory book to big ideas in Physics, by Richard Feynman. It is very approachable, and can be read by a high-school student as well as someone doing a PhD. He explains some really advanced concepts by relating them to everyday objects and events in life. The book literally changes the way you look at the world.
The Google Resume
While preparing for the Microsoft and CityView interviews, I did a lot of meta reading on interviews and resume building. I came across a few really good resources such as The Google Resume from Gayle Laakmann McDowell. I also read a bunch of blog posts which I have grouped in this same post.
Age of Absurdity
I usually don’t read satire, but so far the best one has been “The Age of Absurdity” by Michael Foley, and it was one of the best books I read in 2017. It critiques the eccentricities of modern life, revealing some rather uncomfortable truths. I have tried to summarize the book to the best of my understanding, but it goes much deeper than my naive first impressions.
Hit Refresh
The son of an Indian Civil servant studies hard, gets an engineering degree, immigrates to the United States, and makes it in tech. But wait, there is more to it. Hit Refresh is less about the personal life of Satya and more about the amazing transformation happening inside Microsoft. This is my informal summary of Hit Refresh, an autobiography of Satya Nadella.
Being Mortal
While medical science has given us the ability to extend life, it does not ask – or answer – the question of if that extended life still has meaning. In this book, Dr. Gawande calls for change in the way medical professionals deal with illness and final stages of a patient’s life.