This is a list of some of the most useful and interesting reading I’ve come across. Most of it’s tech related, but I also include other topics that are useful to software developers.
Essays
This essay really hits the nail on the head when it comes to scheduling. I've made it a point to share this with all of my coworkers and it's lead to significant improvements in productivity.
The essays above describe a version of agile that is less about paperwork and more about producing working software.
It's a vision worth keeping in mind.
I love how the people at Stack Exchange take care of their employees.
Stuff I've Written for Other Publications)
Books
Software Development
This is my favorite programming book. It contains a ton of great advice about the craft of software development and how to become better at that craft.
Jeff Atwood has an excellent summary of the book here.
This is an excellent career development book for software developers.
This book will change the way you think about JavaScript.
This is an excellent career development book for software developers.
Another book from the people behind Basecamp (formerly 37 Signals). This one is about how we're moving to a world where work can be done anywhere. (I'm writing this from a coffee shop.)
Psychology
This is a great read for software developers because it makes you aware of the amount of thought placed into things you interact with every day.
This is a fascinating book about how the mind works and what you can do to make your mind work better.
One of the most important things you can do to become more innovative is empathize with and learn from people whom you disagree with. We live in a society that's increasingly polarized. This book the antidote. In the Righteous Mind, Jonathan Haidt explains the moral foundations for different political outlooks and makes a strong case for civility in political discourse. This is a must read if you have trouble dealing with people who don't share your beliefs. The lessons in this book also apply outside of political and moral discourse. The software world is filled quasi religious arguments (.Net vs. Java, emacs vs. vim vs. IDE's, etc...) and the lessons apply to them as well.
Stoicism is an excellent moral operating system for software developers. Our field is chaotic and stoicism helps you thrive in that chaos. This book is my favorite introduction to stoic thinking. It's both accessible and actionable. I highly recommend this to anyone looking to lower their blood pressure.
This is a great book if you want to learn how to reprogram your own habits.
Writing
While The War of Art is a book about art, it's lessons translate well to the field of software development.
Communication skills are extremely important and this book will help you develop them.
Innovation
Sapiens is a highly entertaining, unorthodox view of human history. Not only is it informative, it challenges basic assumptions about ideas that most people don't realize they're making. It's a great description of early human history and how we got to the modern age. It'll really open up your mind.
Innovation is not evenly distributed. There are certain times and places throughout history that have "golden ages" of innovation. Geography of Genius explores a few of these places and tries to find what ties them all together. This book is very interesting and you'll learn about some places that you don't see much of in the classroom.
Unlike what the history books tell us, innovation is more bottom up than top down. Matt Ridley does a fantastic job describing how in Evolution of Everything. He covers a several major innovations including religion, money, and government. This book challenges many deeply held beliefs and illustrates how innovation is an evolutionary process.
This book offers a more tactical look at creativity. It's also a great guide to improving other aspects of mental performance. Charles Duhigg does a fantastic job mixing science with fascinating stories.
Creativity requires concentration. A commodity in short supply in the modern age. In Deep Work, Cal Newport makes a compelling argument for making "deep work" (focused work) one of your primary priorities. I changed several of my habits after reading this one.
While I enjoyed the Lean Startup, I felt like it treated innovation more like a roulette wheel than a process you can influence. "Just pivot until you make it big or run out of money." In Competing Against Luck, Clayton Christensen describes a fantastic intellectual power tool for building new products. The "Jobs to Be Done" theory of innovation. If you want to build a product, I highly recommend this one.