In a similar topic of books about system design, someone on HN recommended A Pattern Language and The Timeless Way of Building by Christopher Alexander et. al.<p>They're not about designing distributed software systems... they're a complete design language for the proper design of a city, from the grossest elements to the most granular. You can flip to a random page and understand what makes a front yard really fulfill its purpose, or you can flip to a different page and learn why some public plazas just don't get used, while others flourish.<p>It's a template system for designing a room, a house, a neighborhood, a city, etc.<p>Makes you think about what a component is, what makes it "good" or "bad" at what it's supposed to do, and what makes it harmoniously integrate with other components.
I would suggest Essense of Decision (<a href="https://en.wikipedia.org/wiki/Essence_of_Decision" rel="nofollow">https://en.wikipedia.org/wiki/Essence_of_Decision</a>)<p>Because when you're working on a larger software team, or even a small software team within a larger company, understanding how organizations <i>actually</i> understand the world and make decisions is invaluable.<p>A person can drive themself crazy expecting groups of people to behave like a monolithic rational agent.
I feel like there must be better mathematics books than those two if what you want is a taste of mathematics. What you get from Euclid is the idea of proofs from a set of axioms, but Euclid in the original is quite a painful way to get introduced to that. And I've never understood the obsession with Spivak. Of all the calculus and analysis books I read, it definitely wasn't up there as anything special.<p>Not sure what the best books are these days to give people a flavour of university style mathematics. I quite liked Introductory Algebra and Analysis by Geoff Smith when I was teaching first year mathematics years ago but I assume that was published 25 years ago so I imagine has been superseded.
On the note of Euclid's Elements, I took a short course on Plato's "Theory of Forms" when I was just learning to really code and it's what helped OOP click in my head. It's fun when totally random subjects help you get an insight into one another.<p><a href="https://en.wikipedia.org/wiki/Theory_of_forms" rel="nofollow">https://en.wikipedia.org/wiki/Theory_of_forms</a>
> Proclus (ca. 335 BC)<p>Proclus, whose quote opens the section on Euclid, lived more than 700 years after this date, well into the 5th century AD. Euclid himself wasn't born till about decade after, in 325 BC.
Just wanted to thank the author for his project of translating the Lessons In Electronic Circuits in romanian. It was so useful to me when I was a student at UT Cluj. I remember recommending that website to all my peers.<p>Thanks for your amazing effort!
Has anyone here read <i>LISP in small pieces</i>? I've never used LISP but would still like to read it. Would you recommend it? (it's not cheap, otherwise I'd just buy it without the due diligence)
I can't comment on the compsci books (they do seem interesting), but I can comment on the mathematical ones where I have expertise:<p>- Using Euclid is manifestly a really bad idea, since his way of formalizing geometry is not the sharpest. Mathematical logic has developed since Euclid published his book thousands of years ago and Euclidean geometry has been re-formalized a number of times to really flesh out the theory behind it (where the word theory is a precisely defined mathematical word), the most well known being oerhaps the one by Hilbert (still 100 years old).<p>- Motivating Spivak with "the most important thing to learn is the method. That is, to develop a method for thinking, based on demonstration following a fixed and known set of starting-points or axioms ...". This can be actually said of any mathematical theory (here I use the word 'theory' in its colloquial meaning). Studying calculus in particular makes little sens for compsci. Rather, graph theory or abstract algebra might be more worthwhile to learn - basically any subject that touches theoretical computer science significantly.
Spivak, 2nd Edition, is how I taught myself calculus. Teaching myself calculus was the deal I made so that the head of the university mathematics department would let me take numerical analysis as a nonmatric. I have Pearl's ("fancy curve fitting") _Heuristics_ on my bookshelf as well.
This looks great - thank you for sharing. Now, if this (getting rapidly older) software engineer just knew how to find a mid-(late?)-career job change where the interview consisted of geeking out about these books instead of if I know how to reverse a queue with the least amount of memory...
Good books but still quite standard. Spivak’s is standard on initial calculus courses at universities.<p>If you really wanted non-standard but relevant authors I would add Feyerabend, Kuhn, Kahneman, Dostoyevsky, Borges, Taleb, Montaigne, Popper, Hofstadter, Don Norman, Alexandrescu. Add something about systems of representation by Kierkegaard or Nietzche or some interpretations by later authors.