Hey everyone!
I’m Sam Nolan, first year computer science student and known to know a lot of “classics in the field”. I’ll just go through a few of my favourite programming related books for you bookworms to put your nose through.
Code quality
Code Complete 2
If there ever was an introduction to code quality, it’s Code Complete 2. Completely non political or controversial. Other than the fact that it states that this style:
if() {
}
is in all ways superior to this style
if()
{
}
Which is obviously true. But other than that, it’s a good resource for beginners in any programming language to familiarise themselves with what makes good code and why. Very approachable.
Clean Code
This is what you read after Code Complete, the next level of code quality. Written by Robert C Martin, this one is a tad more political than the above, but contains some invaluable insights with how to make code more understandable. All it’s examples are also in Java.
If you can implement all the ideas in this book, you are well on your way to becoming a programming that won’t get shot by your other developing companions.
Refactoring
A classic in the field, this book is a reference manual with different ways that you can incrementally improve the structure of your code in order to make it more understandable. More technical than Clean Code, doesn’t lead with many valuable insights as much as a methodology that you should follow when writing quality code. But still worth the read, even if you skip most of the catalogue part as 99% of it is done in IDEs for you.
Design Patterns, (gang of four)
Another classic in the field. This book is a catalogue of different “patterns” or structures of code that achieve different purposes. If you get in the habit of using patterns, you are starting to become a software architect, which helps you design systems that are tolerant to change and maintainable.
I would recommend reading both Code complete and Clean code before this one. Most of the book is a catalogue and can be used as a reference, but it’s worth taking a skim through all the different creatures that you get to see or code in software development.
System’s thinking
Systems thinking is REALLY COOL AND YOU SHOULD CHECK IT OUT IMMEDIATELY. Although the stuff that you find on the internet isn’t that interesting (or correct to systems engineering), reading some of these books can get your feet in the water.
System’s thinking is treating management as a science, and simulating management situations using feedback loops. For instance, the human body is a system. What makes it a system is that all it’s physically change over time (cells die and create new cells), however, you stay being you. How cool is that! That comes from the bodies ability to stabilise itself by feedback loops, if the body requires energy, you get hungry etc. This type of model can be used to model so many really cool things! And it is worth checking it out.
System’s thinking - A primer
This book is written by a student of Jay Wright Forester, who pioneered systems thinking. It’s a small introduction that is almost impossible to get your hands on but nevertheless is worth it.
What interesting is that the author, Donella Meadows, is able to argue about terms that seem to most to be rather heuristic, such as environment conservation, holistic healthcare and genetically modified animals, in terms of engineering style systems. Which makes for very logical arguments to why things work the way they do that I’ve never seen before. Worth a read.
Industrial Dynamics
Written by the man himself, Jay Wright Forster, this book kicked off System’s thinking back in 1961. However, it’s almost impossible to get your hands on, the only copy that the RMIT library holds I have borrowed ;). It contains a more empirical and mathematical description of how to apply system’s thinking to different problems. Definitely worth a read, but make sure you read the primer above first so I have enough time to get through it.
Godel, Escher, Bach an eternal golden braid
This book wins a prize for the only non fiction book I literally could not put down. Although it’s not necessarily system’s thinking, I’m putting it here because I believe that it actually forms a mathematical basis for what system’s thinking takes for granted. This is definitely, a “classic in the field”
This book is a rollercoaster through art, music, artificial intelligence, literature, language, biology and most importantly, logic and philosophy. The book is quite large but does not waste a single word. Very highly recommended particularly for mathematics and logic geeks. Gives a complete explanation of Godel’s incompleteness theorem as well as it’s implications. Fantastic read.
What’s funny is that the book has a prologue that explains that many people were always confused of what the book was actually about. If your curious, it’s about artificial intelligence. I only worked that out in the last few chapters.
The future
Books that predict that try to predict the future are very interesting to read. They often however wildly differ from each other, so they should be taken with a grain of salt. I’ll go through a few books that make predictions about the future and their different viewpoints.
Homo Deus
This book is very easy to find, basically any modern bookstore will have it. It takes the assumption that humans will continue to try and make themselves happy and follow down the path of artificial intelligence and therefore speed up evolution through technology that will create immortal and super intelligent humans.
This book is pretty thick however, and off the top of my head goes on for a very long time on why Christianity in necessarily false. The book makes predictions on what will happen if nothing overly interesting occurs in the future, and we just get better at what we already do. As of such, probably should be taken with a grain of salt, as something unexpected is likely to happen.
Debt, the first 5000 years
Only read this if you are a very into books, this book is a reference to the history of money and all it’s uses since it’s inception, and as of such, is a LOT of history.
What’s good about history, as he points out, is that once you understand history you can be liberated from it. You understand where the modern culture comes from and think differently instead. This book tries to destroy the myth that barter ever existed and also shows that the entire concept of money, economies, trade and loans are not necessarily natural parts of a system. In particular, he makes the argument that money only comes into play when it is paired with a significant amount of violence.
Worth a read as it allows you to think about how society would look under different rules, even if you just read the bit at the end about today’s day and age and therefore what’s likely to happen. The author instead takes an approach to looking into the future by seeing how the past has operated, and observing the cycles.
Life after Google
George Gilder (the author) is looking at a more short term future based of the projects that exist in regards to the blockchain. The author wrote a book called “Life after television” which foreshadowed mobile phones, and apparently Steve Jobs read and distributed to his fellow Co-workers, and look where we are now! So George has some pretty good credentials for looking into the future! Although, I believe he talks about Godel’s incompleteness theorem’s in a bit of a naive way and doesn’t believe artificial intelligence will surpass human intelligence. Nevertheless, worth a read based off the blockchain knowledge he has collected.