[HN Gopher] A non-standard book list for software developers
       ___________________________________________________________________
        
       A non-standard book list for software developers
        
       Author : molteanu
       Score  : 226 points
       Date   : 2022-03-12 13:43 UTC (9 hours ago)
        
 (HTM) web link (mihaiolteanu.me)
 (TXT) w3m dump (mihaiolteanu.me)
        
       | WinterMount223 wrote:
       | Good books but still quite standard. Spivak's is standard on
       | initial calculus courses at universities.
       | 
       | 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.
        
         | dhosek wrote:
         | I think Spivak is _way_ less common as an initial calc text
         | than Stewart. Spivak 's approach is much more rigorous than
         | most calc textbooks, and is in many ways almost an introduction
         | to real analysis. Note, for example, that Spivak prefers to
         | view the definite integral as the proper form of an integral
         | rather than the typical approach taken by many introductory
         | texts where the integral is viewed as the anti-derivative and
         | then for [?]_a^b f(x)d(x) they just take F(b)-F(a) and call it
         | a day. I would imagine that most introductory calculus students
         | do close to zero proofs with most of the time spent on
         | memorizing the various rubrics for finding derivatives and
         | anti-derivatives. Spivak covers those, but the exercises are at
         | least 50% proofs rather than being 90-100% calculation.
        
         | civilized wrote:
         | The Calculus pick is completely fungible. There are at least
         | two other popular Calc books that different people would say
         | the exact same things about.
         | 
         | Euclid as the ideal place to learn logic seems debatable,
         | although I can't think of a better resource off the top of my
         | head.
         | 
         | The Xinu OS and LISP recommendations I've never seen before, so
         | those were potentially valuable for me at least.
        
           | jamjamjamjamjam wrote:
           | What calc books are those? Reading a calculus book is a
           | massive investment because I will be rereading pages. So I'd
           | like to find the best one first
        
             | WinterMount223 wrote:
             | Depends enormously on your level and willingness and
             | dedication. At that level the best ones are Spivak,
             | Apostol, Fichtenholtz, Kudryavtsev.
        
               | molteanu wrote:
               | Just be careful in mixing the "best one at teaching" with
               | the "best one at the level of detail and correctness".
               | One is good for aha moments, the other for going into
               | research. Depends on your needs. Similar to the question
               | of "what is the best language to learn?". Depends on your
               | needs.
        
               | Turing_Machine wrote:
               | If I remember right, Apostol uses a non-standard sequence
               | (integration first, then differentiation). That probably
               | only matters if you might be using a different book for
               | another part of the sequence, though.
        
             | civilized wrote:
             | I self-taught from an early edition of Stewart and loved
             | it.
        
             | harshreality wrote:
             | _Calculus Made Easy_ by Thompson (now in a new edition
             | revised by Martin Gardner) was a former classic used by all
             | sorts of people, and Feynman learned calculus from
             | _Calculus for the Practical Man_, which was hardly
             | sophisticated by modern standards. As long as you stick to
             | a book some sizeable number of people think is okay, I
             | don't think it matters that much what you learn from; the
             | important thing is that you work through theorems carefully
             | enough that you really understand them. Whether it's Spivak
             | or Velleman or Thompson or OpenStax or Stewart (only for
             | those who are assigned it, since otherwise there's no
             | reason to spend >=$100 on it--it's not worth the premium)
             | or Ross (his _Elementary Analysis_ book), worry about
             | learning the concepts more than worrying about which book
             | you chose. You can always refer to alternative books or
             | youtube videos if a concept isn't clear in the primary book
             | you chose.
        
             | ivan_ah wrote:
             | Others have already mentioned the classics, but if you're
             | looking for something more off the beaten path, you can
             | check out my book: _No Bullshit Guide to Math & Physics_
             | which covers calculus in approx. 150 pages (Chapter 5).
             | 
             | You can see an extended preview of it here: https://miniref
             | erence.com/static/excerpts/noBSmathphys_v5_pr...
             | 
             | And a standalone concept map here: https://minireference.co
             | m/static/conceptmaps/math_and_physic... (bottom of the
             | page)
             | 
             | Check out the reviews on amazon if you're interested. It
             | hasn't been adopted as the main textbook at any university
             | yet, but many teachers recommend it as supplemental reading
             | for their courses.
        
             | molteanu wrote:
             | I, for one, couldn't find a better one at the time I've
             | read it. There are a lot of crappy ones, on the other hand.
             | You are right in affirming that this is a massive
             | investment.
        
         | morelisp wrote:
         | It's horribly inaccessible but while we're throwing out truly
         | nonstandard recommendations, and apropos to the connection made
         | elsewhere in this thread between the theory of forms and
         | object-oriented programming, Whitehead's _Process and Reality_
         | is good for the same reasons OOP sucks.
        
         | unfocussed_mike wrote:
         | Hoftstadter is fairly near standard isn't it? Assuming you mean
         | actually reading GEB and not _The Mind 's I_ or _I Am A Strange
         | Loop_. Not generally a course text but very common reading
         | among CS /AI students. Some of whom even read all the way to
         | the end instead of just pretending to!
         | 
         | The book I would most recommend software developers read is
         | _Mindstorms: Children, Computers and Powerful Ideas_ by Seymour
         | Papert.
         | 
         | It's a lot shorter. And probably more valuable.
         | 
         | And one random side recommendation: _The Daughter Of Time_ by
         | Josephine Tey. It 's a narrative exploration of how to
         | challenge consensus belief, explore gut instincts and follow
         | research leads, expressed as a perception-challenging
         | historical review of Richard III by a fictional detective.
         | 
         | The BBC audio book is worth a go. My copy of this book (which
         | was my mum's copy) is one of the few things I'd rescue from the
         | hypothetical fire. It stays with you.
        
           | Smaug123 wrote:
           | I found Hofstadter's _Le Ton beau de Marot_ fascinating, and
           | also almost nobody has even heard of it!
        
             | unfocussed_mike wrote:
             | I had not heard of it either. Very interesting. Thanks!
        
       | [deleted]
        
       | thwave wrote:
       | > Proclus (ca. 335 BC)
       | 
       | 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.
        
         | molteanu wrote:
         | That is true. I've updated the info, though I couldn't quite
         | find the exact date of the publication of "Proclus' Commentary
         | on the First Book of Euclid's Elements".
         | 
         | Good catch! Thanks for the heads-up!
        
       | jrjarrett wrote:
       | Holy crap, the Comer XINU book is still around. I used that in my
       | undergrad Systems course in the mid '80s...
        
         | garren wrote:
         | The most recent version targets the beaglebone black and the
         | intel Galileo (now obsolete, although you can still pick them
         | up.) I've encountered raspi repos on GitHub as well. I've found
         | it to be a great book since it gets you working with hardware
         | very early on.
        
       | mumblemumble wrote:
       | I would suggest Essense of Decision
       | (https://en.wikipedia.org/wiki/Essence_of_Decision)
       | 
       | Because when you're working on a larger software team, or even a
       | small software team within a larger company, understanding how
       | organizations _actually_ understand the world and make decisions
       | is invaluable.
       | 
       | A person can drive themself crazy expecting groups of people to
       | behave like a monolithic rational agent.
        
       | [deleted]
        
       | electrondood wrote:
       | 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.
       | 
       | 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.
       | 
       | It's a template system for designing a room, a house, a
       | neighborhood, a city, etc.
       | 
       | 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.
        
         | gumby wrote:
         | 25 years ago my (then) wife and I both read Christopher
         | Alexander while designing a house. It was great.
         | 
         | I'd heard of him, and read those books, because I was (am) a
         | computer programmer, and that was before we decided to build a
         | house!
        
         | blacksmith_tb wrote:
         | Alexander is fun for sure for thinking about how we got where
         | we are (I suppose if you were able to build your own house it
         | could also be directly used to achieve various goals, which
         | would be fun).
         | 
         | Along similar lines I would recommend Donella Meadows' work,
         | for example her essay Leverage Points[1].
         | 
         | 1: https://donellameadows.org/archives/leverage-points-
         | places-t...
        
         | bennysomething wrote:
         | I haven't heard of this book, is it actually about designing
         | cities? I'm probably way off but all I can't think of is that
         | once we started designing cities we built crap. Take the UK for
         | example all its beautiful amazing places were built before we
         | had planning offices. They seem to just have evolved.
        
           | gumby wrote:
           | No, houses. Each "chapter" is just a page (well both sides of
           | a leaf), sort of like The Society of Mind.
           | 
           | One example is (paraphrased) "find the nicest spot on the
           | property and don't build on it, because then you'll lose it".
           | Another is "corridors are dead spaces; you move through them,
           | and pretty much ignore them, on your way to do something".
           | Not gospel or absolute rules; rather rules of thumb, or ways
           | to talk about and think about what we wanted to accomplish.
        
       | lutarezj wrote:
       | I like the list. But, Lisp?
        
       | exdsq wrote:
       | 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.
       | 
       | https://en.wikipedia.org/wiki/Theory_of_forms
        
         | molteanu wrote:
         | Yes, those Forms have had a lasting impact on Western
         | Philosophy for a long time. I wouldn't be surprised if some of
         | it hasn't had some impact on the OOP thinking, in general, even
         | though indirectly. If you read on Hume and the British
         | Empiricists from the 18th Century, for example, you'd be
         | surprised how many "modern ideas" you find in there. After all,
         | programming languages at large have a long history of
         | philosophical ideas before them. Before they could come into
         | being, that is.
        
         | macrolocal wrote:
         | Absolutely this! Some Neoplatonist literature distinguishes
         | between God qua engineer of forms and God qua reifyer of them.
         | And there's object inheritance implicit in their hierarchy of
         | forms/angels, ie. Eriugena's that which creates and is created.
         | 
         | Platonism is like ontological OOP. :D
        
       | faizshah wrote:
       | Anyone got a non-standard Distributed Systems book pick? Also a
       | non-standard Concurrency book pick?
        
         | activitypea wrote:
         | https://teachyourselfcs.com
        
         | molteanu wrote:
         | Operating Systems: Three Easy Pieces,
         | https://pages.cs.wisc.edu/~remzi/OSTEP/
        
       | nomilk wrote:
       | Has anyone here read _LISP in small pieces_? 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)
        
         | ajsnigrutin wrote:
         | You can find it on the typical pirate sites (pdf and epub), I
         | haven't been able to find sample chapters elsewhere. Of course,
         | if you like it, buy the original to get the physical book :)
        
       | m3047 wrote:
       | 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.
        
       | irutirw222 wrote:
       | I can't comment on the compsci books (they do seem interesting),
       | but I can comment on the mathematical ones where I have
       | expertise:
       | 
       | - 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).
       | 
       | - 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.
        
         | neurohdmi wrote:
         | Having an understanding of mathematical foundations and proofs
         | can be very beneficial to software developers; but I agree
         | there are much better books than the ones suggested here.
         | "Elements" is an historically important book (arguably the most
         | important in math), but like you said is fairly outdated. Real
         | Analysis is critical for higher level maths and theoretical
         | computer science and does have some value even in software
         | development. But with books like Spivak's Calculus you spend
         | more time memorizing definitions and theorems than abstract
         | thinking or problem solving.
         | 
         | Some better math books that I would recommend off the top-of-
         | my-head:
         | 
         | * "How to Solve it" by George Polya - A great book on breaking
         | down complex problems.
         | 
         | * "Mathematical Logic" by Stephen Kleene - A much more
         | contemporary math book on building axiomatic theories from
         | scratch.
         | 
         | * "Godel, Escher, Bach" by Douglas Hofstadter - Also about
         | mathematical foundations but for a much broader audience.
        
           | irutirw222 wrote:
           | I agree that for anyone wanting to improve "logical thinking"
           | these books are a good start. In particular the last one is
           | recommended, if you want to start having doubts about logic
           | itself and the limits of logical reasoning ;)
        
         | lolinder wrote:
         | They don't recommending Euclid as a way to learn geometry, they
         | recommend him because his book has been the foundation of the
         | scientific dialog for the last several millennia. Regardless of
         | whether his formalization of geometry is the most up-to-date,
         | every subsequent mathematician and logician has been building
         | on The Elements. That fact alone makes it valuable to read, not
         | as a way to learn geometry, but as a way to understand where we
         | came from.
        
           | [deleted]
        
           | irutirw222 wrote:
           | Then you, as Moicanu below, didn't understood my point: You
           | learn less from the Elements than from later, curated
           | sources. Analogously, no one would advocate reading Newton's
           | Principia to "understand where we came from". You would first
           | learn the theory (geometry resp physics) with up-to-date
           | sources, then read a commentary of the original (which is
           | often longer than the original), and only then you'd be able
           | to get something out of reading a translation of the
           | original.
           | 
           | Thus, by reading the original works you will confuse yourself
           | with the obscure notation you will encounter, semi-circular
           | arguments and other problems (both the Elements and the
           | Principia are riddled with problems), which actually have
           | prompted many many scholarly works commenting and fixing
           | these.
        
             | mirekrusin wrote:
             | One of missing pieces in education is surfacing problems,
             | deadends and struggles of different sorts. Shame because
             | it's such an insightful part, often allows grasping
             | underlying reason for why things are the way they are.
        
             | molteanu wrote:
             | I've read the 'original' Elements, indeed. Apart from the
             | geometric figures which were not even available in the
             | original form of the manuscript, but added later as an aid,
             | there is no obscure notation whatsoever. Indeed, there is
             | no notation at all. It's all prose.
        
               | irutirw222 wrote:
               | If you want to read it more as a historical piece of art
               | I wouldn't object; if you want to actually get some
               | mathematical insight out of it on the other hand, this
               | would be a good starting point:
               | 
               | https://math.stackexchange.com/questions/845288/has-any-
               | erro...
        
           | molteanu wrote:
           | Nicely said.
        
           | Jach wrote:
           | There's a little story told about the philosopher Thomas
           | Hobbes, by John Aubrey:
           | 
           | "He was (vide his life) 40 yeares old before he looked on
           | geometry; which happened accidentally. Being in a gentleman's
           | library in ..., Euclid's Elements lay open, and 'twas the 47
           | El. libri I[Pythagorean theorem]. He read the proposition.
           | 'By G--,' sayd he, 'this is impossible!' So he reads the
           | demonstration of it, which referred him back to such a
           | proposition; which proposition he read. That referred him
           | back to another, which he also read. Et sic deinceps, that at
           | last he was demonstratively convinced of that trueth. This
           | made him in love with geometry."
           | 
           | Reading all of Euclid's Elements is a big undertaking, though
           | I think you can get a sufficient taste and appreciation of
           | iron-clad logical reasoning and demonstration from going
           | through some subset of it. Perhaps working through a single
           | proposition back through its base propositions, definitions,
           | common notions, and postulates will be enough to alter your
           | thinking and at least see what's possible. Unlike the author
           | I can't tell from discussion sampling if people are ignorant
           | of Euclid, but I have been frustrated by 1-on-1 failures to
           | win arguments by mathematical proof (e.g. that 0.999.... = 1)
           | and such an unwillingness to accept such things shows a
           | profound disconnect in how we look at the world. Reading
           | Euclid may help that.
           | 
           | On the other hand, lots of software developers are exposed to
           | proofs as part of their formal education (those who received
           | one), so how much Euclid can add here is questionable, vs.
           | actually putting proofs into practice by learning things like
           | TLA+, or learning about probabilistic inference which is more
           | needed outside crisp and clear worlds like Euclidean
           | geometry. Personally I'd sooner have software developers take
           | a few minutes to learn and reflect on Chesterton's Fence,
           | than working through examples of geometry proofs, and maybe
           | some can learn to reduce their bad habit of sloppily
           | "reconstructing things from first principles" (where "first"
           | is frequently "first thought of").
        
         | molteanu wrote:
         | You've missed the whole point.
        
           | AnimalMuppet wrote:
           | Could you elaborate? "You've missed the whole point" is
           | completely non-helpful.
        
             | throwaquestion5 wrote:
             | Quoting the article first paragraph I think is the best
             | response
             | 
             | "I view the field of software development as a big logical
             | system with highly interconnected and complex parts.
             | Understanding such a big systems naturally requires having
             | an excellent grasp on the tools used to build them. And the
             | most fundamental one is logic itself. What follows from
             | what, what are the starting-points or the elementary parts,
             | what are the ways of composing these into more complex
             | ones, ways to spot complete non-sense in the system and how
             | to decompose the complex parts back to more fundamental
             | ones to check their consistency and truth. The following
             | book list contain titles that are all playing fields for
             | one to start experimenting with such systems and gain the
             | required confidence that one can master them. "
             | 
             | The recommendation are from that point of view and the
             | authors selection from book he actually read and consider
             | good for it.
        
               | irutirw222 wrote:
               | Standards of rigor evolve with time and the level of
               | rigor in the Elements is abysmal compared to today.
        
             | molteanu wrote:
             | @throwaquestion5, thank you!
        
         | [deleted]
        
         | readme wrote:
         | >Studying calculus in particular makes little sens for compsci.
         | 
         | yeah it makes little sense if you don't want to be able to
         | write programs that solve the world's major problems
         | 
         | so if you are content with writing cat picture apps, skip
         | calculus
        
           | 0xabe wrote:
           | We were just talking about this over lunch yesterday
           | (software engineers at a medical device company). I won't
           | dismiss calculus, but it was generally agreed that linear
           | algebra and statistics were most important, at least for what
           | we're doing.
        
             | dhosek wrote:
             | Although for statistics (and probability as well), Calculus
             | has a way of sneaking in there.
        
       | zuzuleinen wrote:
       | 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.
       | 
       | Thanks for your amazing effort!
        
         | molteanu wrote:
         | I was a student at UTCN, as well, and I found it hard to get a
         | decent book on electronics to learn from. I've found the
         | lessons in Electronic Circuits online, used it and then
         | translated it for my fellow engineers, that's how much I liked
         | it. Unfortunately the original website got hacked, so I did my
         | best and recovered the content in its current format.
         | 
         | You're welcome! Thanks for your input!
        
       | dfaiv wrote:
       | 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...
        
       ___________________________________________________________________
       (page generated 2022-03-12 23:00 UTC)