As a programming student i feel sometimes we go a bit too technical and we lose the philosophy and the main point of what we are doing.
What are some great books (classics and none) to read on programming?
I’m interested to the topic of programming and computer science in general but especially to the cypherpunk philosophy and to concepts like the story of internet, the philosophy that led to the beginning of it etc…
The Mythical Man-Month is a classic
Weinberg boiled it down to a single axiom for me: “If builders built buildings the way programmers wrote programs, then the first woodpecker that came along would destroy civilization.” I’m not sure if they’re still in fashion, but two other things that inspired me were The Cathedral and the Bazaar and the front material of the original Gang of Four book *Design Patterns."
Although I also read and was influenced by The Cathedral and The Bazaar shortly after it was published, I find it difficult to recommend, given that ESR went off the deep end. The book is a good interesting read, just get a PDF of it and don’t go digging.
I was curious about what you meant by “went off the deep end”, so I digged and… ooof… His Political Beliefs and Activism section in his wiki is not good, that’s all I’ll say.
Defending Kyle Rittenhouse… holy fuck.
A not technical book about programming I would suggest: https://themediocreprogrammer.com/what-is-the-mediocre-programmer.html#what-is-the-mediocre-programmer
A declaration of independence of cyberspace by John Perry Barlowe
Not really related to political philosophy but Uncle Bob’s book on the philosophy of a good programmer also comes to mind: Clean Coder
The Wizard Book is a classic that basically “builds” programming as a concept.
(it is very technical though. So not sure it’s something you’re looking for)
In a similar vein of perhaps too technical but ultimately very informative, there’s The Secret Life of Programs. The author introduces you to how a bit works, and then walks through how to build a computer and web browser and such from it.
I had more of a boot camp education for computers, I find this stuff fascinating even if I don’t really ‘get’ it
Not a direct answer to your question but here’s what I’ve learned and am learning:
It all boils down to “finding the right balance between the costs of implementation, the value the implementation offers given the circumstances and constraint.” Essentially, the foundational guideline of engineering across all engineering principles.
Usually every decision brings about about a series of advantages/improvement but it’s important to remember that “one must lose in order to gain.”[1] That is, every improvement (value) comes at a price (cost). Unlike other principles of engineering (which are closer to bare maths), software engineering more closely resembles something intuition-based like art. That is what makes it difficult to see the values and costs and measure them. It takes lots of practice and introspective and extrospective (!) effort; doing things and potentially making mistakes and learning from them is as important as observing others do things and make mistakes.
In other words, it boils down to honing your intuition to “do the right thing, at the right time, the right way.”
PS: Please note that I used the word “right” and not “correct.”
[1] Dialectically speaking, every material good contains w/i itself its own seeds of destruction 😆