I enjoy reading well-written books on technical topics in my spare time but when reading for fun I prefer lighter and wittier text than the standard school textbooks tend to be (but of course classical textbooks are a great resource for learning and I use them a lot when studying). I have gathered a list of my favorite tech or mind-enhancing books that I have read the past year. Enjoy:
C.O.D.E – The Hidden Language of Computer and Software, by Charles Petzold.
This book is so cool and different from other programming books I have read, it is teaching for example how Morse code and electricity are related to programming languages and computers. I read some of it in the Christmas break after my first semester of studying Computer Science. It helped me gain deeper insight into what lies behind computers and to see the things I learned at school from another perspective, I especially love the way the book explains binary numbers and its resemble to Morse code and how it works in the same way as electric switch . I never got around to finish the book, but what I already read was very promising I plan on finishing the book sooner than later. The biggest pros to this book are its fun ways of explaining difficult topics.
Thinking fast and slow, by Daniel Kahneman (winner of the Nobel Prize).
I found this book very interesting since it explains many aspects of the mind that I had not considered before. It helped me realize how my mind works and how I can think better being aware of my “two selves” that affect my perspective on things. The author provides numerous examples of how our mind is constantly contradicting itself and misleading us. It thus reminded me of constantly questioning things and to not always go with my first instinct (despite a common belief) or at least double check my initial thoughts. I also liked that from examples in the book I could explain some of my own behaviors, for example:
- When I am busy at school and must do a lot of constraining mental work, I tend to forget more at home and lose my belongings, even though I usually succeed at the projects in school and don’t forget any details there. [Similar examples are explained in the book]
- When I have examination session at school and I must give up on all the things I enjoy to do for 2-3 weeks and just study all day I crave much more candy and pastries than normally – and I do eat more of it. [According to the book, this is both due to the fact that I am really pushing my self-disciple limit, which will lead to less self-discipline in other areas and that I am doing mentally constraining work which is proven to drop the blood sugar level so the craving for sugars increases].
In short, this is a book that will get you thinking about thinking and I highly recommended for those who want to strive for being more rational in everyday life!
CLEAN CODE, by Robert C. Martin (a.k.a. Uncle Bob).
The overall theme of the book is to emphasize simplicity in programs and after reading the book one should have acquired skills in writing readable, clean code and moreover in converting a badly written code to a nicely written code. The book, for example, covers in detail the classical case of dividing the logic up into many small functions and to make sure each function only does one thing. But it also covers other simplifying methods I personally hadn’t thought of as much, like to strive for as few arguments to a function as possible and to think twice before using a Boolean control argument to a function, since that is an indicator that one could (and should) split up the function to smaller ones. The book then covers many other topics, such as good error handling, how to (NOT) comment, and best practices in naming functions and variables. The book is very fun and catchy and has many nice metaphors; I, for example, liked how the author compares the organization of a source code to organizing a newspaper article. The book also shows example programs that are badly written and how they can be refactored by using all that has been learned in the book. By that, the reader can practice himself. I recommend this book for programmers of all levels that want to make sure their code will not become a legacy.
Elon Musk – Inventing the Future, by Ashlee Vance.
I love reading biographies so it did not surprise me that I immediately fell in love with this book. The story is very well written and cached me from the beginning. It is very interesting to get an insight into the mind of one of the most successful, ambitious and unpredictable entrepreneur in tech today. Elon’s story is empowering and reading the book encouraged me to go for things and believe in myself. It also helped me realize what tech is really capable of, the sky is the limit.
The Head-First series.
The Head-First series are brain-friendly books that in my opinion should be used for teaching in schools. The books combine expertise and readability, everything is explained very well with many illustrations.
The next tech-related books that I want to read (and have just bought woohoo :D).
- Soft skills, The software developer’s life manual, by John Z. Sonmez
- Pragmatic Programmer from journeyman to master, by Andrew Hunt and David Thomas