1. 17
  1.  

  2. 23

    How about, “Four books professional server-side Python developers should read (and a few they don’t need to)”.

    As a client-side C++ programmer, that list doesn’t do me much good, except for “High Performance Browser Networking” which is a killer read for anyone involved in HTTP-based APIs on either end of the wire. (And OK, I do write some utility scripts in Python.)

    On the other hand, “Design Patterns” is a stone classic.

    1. 9

      The stone cold classic is SICP, to the point of cliche but no less valid for it. It doesn’t have the instant for-my-job practicality boost that a style guide like “90 Specific Ways to Write Better Python” does, but it’s in another ballpark of depth.

      @eatonphil I am curious if you had criticisms of it or if you think its lessons are just not nuts-and-bolts enough for your list.

      1. 5

        It’s a perennial goal of mine to finish SICP. 😀 If someone is coming to this list and sees value in four top books, I can’t really recommend a book in the same category here that’s taken me years to finish. But for people who read a lot, of course you can give it a go.

        I’m very much a PL nerd. As mentioned elsewhere, I’ve spent a lot of time programing in Standard ML (see ponyo on my github) and Scheme (see bsdscheme on my github). Forcing myself to spend years getting good at both has seriously improved my ability to write simple code.

        But I also can’t really recommend that to most devs either because who knows if you’ll enjoy it. Doing what inspires you is the most important thing so you actually complete what it is you want to do.

        1. 4

          Scheme and the art of programming by George Springer is almost the same material as SICP but in Scheme. Honestly if you have worked for years in ML or Scheme you probably don’t need SICP since it is a introductory level text.

          1. 2

            I just picked this one up a few weeks back and have slowly been working through it. I’m surprised that I hadn’t run into it before then. It’s a textbook and it reads like a textbook, there’s no getting around that, but it’s accessible and seems to be a great intro to Scheme in general.

            SICP is using Scheme too, isn’t it? I recall running across MIT being the recommended implementation, but I’ve had no problems with Guile, and there’s a language in Racket, too. I bounce between the Springer book, SICP, and Little Schemer when I’m not too busy. I’m in no rush, but I’ve found those three to be a great way to get acquainted with emacs/geiser & guile.

          2. 3

            I’m in the same boat with SICP and similar books with an academic feel. If it’s not project oriented, it’s usually too hard for me to focus on.

        2. 3

          I wish I could recommend books on other languages! But no book I’ve read on JavaScript (thinking JavaScript the Good Parts, How JavaScript Works), Go (there’s almost nothing here that’s not just reference), Java (Effective Java is massive and not all useful), or C++ (what, Meyers’ Effective C++?) is in the same category in terms of information density, being well-written, and still being applicable today. I’d be happy to take recommendations though for books not among these.

          1. 6

            Thinking Forth (1984) and Writing Solid Code (1993) are two books that radically changed how I approached programming. Yes, one is about Forth, and one is about C, but I’ve found them applicable to more than just those two languages.

            Edit: added years first published.

            1. 3

              Fully agree on both and in particular that TF is applicable beyond Forth. Great book.

              I wonder whether you might enjoy Elements of Programming and/or The Humane Interface (and here’s the bit I’ve quoted most often). Very different books, both of them insightful and hard. EoP is a C++ book that’s about C++ in the way TF is about Forth, THI is a UI book that uses phrases like “information-theorietic efficiency” instead of “at [famous company] we do this [this way]”.

            2. 3

              Personally, my qualm wouldn’t be about the language, it would be about the domain. I haven’t read the books, but those 4 titles really are web focused. I’m sure lots of those translate to other domains, but it’s clearly not aimed as the general purpose developer who doesn’t yet know which domain they will tackle. No, this is for backend web developers.

              Thus, your title should really be closer to: Four books professional backend developers should read. That way it’s more focused to your actual target audience.

              1. 3

                My point is that it wasn’t intended to be backends focused. I haven’t read any really great books on JavaScript (but HPBN is clearly browser, not backend, focused). And I genuinely wish frontend developers I worked with knew more that’s covered in DDIA.

                But I don’t pretend to speak for every domain of programming for sure.

                1. 1

                  It’s easy to for us to get myopic about stuff outside our domain.

                  Note that even here you seem to be implicitly assuming that not-backend = in-browser. That’s leaving out (native) desktop, mobile and embedded development.

                  I suspect there aren’t actually any books that are super important for all serious programmers. The books I learned the most from are way out of date (K&R, the Smalltalk-80 Blue Book, Advanced Cryptography) or very domain specific (Unix Network Programming) or both (Inside Macintosh.)

                  1. 1

                    Yes I’m definitely missing domains but mobile isn’t one of them! HPBN devotes a ton of time to the effect of protocols on mobile battery life of all things. There’s a chapter or two on the behavior of mobile networks. Mobile developers are also responsible for monitoring and alerting on their production deploys. And they’ll also be heavy users of backend systems.

                    All this isn’t to say that I’ve got the list perfect. I hope I change my mind on it over time as I’ve read new books, learned new things, and expired different domains.

              2. 3

                I feel The Go Programming Language is quite good; certainly more than just a reference.

                The Little Schemer is probably the best programming book I’ve read. While it’s quite limited in scope (functional programming in Scheme), it does explain it in such a way that’s very insightful and useful for other languages too, IMO. And the writing style is just fun!

                1. 4

                  I feel The Go Programming Language is quite good; certainly more than just a reference.

                  It’s not bad. And certainly new Go developers would do well to use it as a style guide since writing “idiomatic” Go takes a bit. I’ll consider adding it to a future version of this post.

                  The Little Schemer is probably the best programming book I’ve read. While it’s quite limited in scope (functional programming in Scheme), it does explain it in such a way that’s very insightful and useful for other languages too, IMO. And the writing style is just fun!

                  In the category of niche languages there is no shortage of gems. :) I haven’t read The Little Schemer but I’m working through The Little Typer at the moment. I’ve got a post in mind for a rundown of 6-8 Lisp books alone. But I wouldn’t consider recommending any of these to developers en masse (even though I believe programming in Scheme or Standard ML for a while helps you write simpler code).

                  1. 3

                    I don’t think the value of The Little Schemer is in learning Scheme, but rather in learning recursion and functional programming, and Scheme is just the tool that explains these concepts. The reason I got it in the first place is because it came recommended to better understand JavaScript’s functional aspects.

                2. 2

                  I highly recommend Eloquent JavaScript by Marijn Haverbeke. It has a great style of writing and starts from some really nice computing basics.

                  1. 2

                    Learn you a haskell has been transformative to me, for this reason

                    1. 1

                      You Don’t Know JS was an excellent language-specific book back in ~2013 when I read it, and I think it’s been updated after that.

                      I do prefer more general books these days, now that I know enough languages well enough. SICP is a famous one, but I think How to Design Programs might be a more approachable similar book. Nb. I’ve only worked about halfway through it.

                      1. 1

                        My copy of Effective Java by Joshua Bloch is 346 pages, are you perhaps confusing it with another? I found it useful, too. Some of it is a bit self-evident, but I opened my copy at a random page and read an item (46, pages 212-214, about for(:) compared to for(;;)) and still found it good.

                        It’s not a book on java, though. It’s for people who already know java, and who write or maintain large java programs, say 50kloc or more.

                      2. 3

                        I dunno, I’m reading through Designing Data-Intensive Applications at the moment, and it feels pretty language agnostic. I’ve seen some snippets of bash, but that’s it. Definitely not Python-focused.

                        1. 1

                          Language-agnostic, but server-oriented. That’s why I wrote “server-side”. As a client (mostly mobile) developer, I’m not much concerned with terabyte-scale data or with distributed algorithms that only make sense for clusters in a data center (because they assume latency is zero and uptime is 99% and all peers are trusted.)

                          I’m not dissing any of this, just pointing out the applicability is narrower than advertised :)

                      3. 13

                        Kind request - if you’re mentioning books, apart from exact title, please also include the author(s), year it has been published, edition, and - last but not least - ISBN.

                        Ta! :^)

                        1. 9

                          This is amusing to me because the only book you mentioned here on either list that I have ever recommended to someone is “A Philosophy of Software Design”. I’m not sure that there’s a single book on your “should read” list that would actually help me do my job better, whereas I felt APSD did.

                          I think maybe it’s a little unreasonable to think that there are any four books that all professional software developers should read. Maybe four books you have found useful for your particular career? Although, I guess if your goal was to go viral or generate controversy on social media or whatever, then mission accomplished! :-)

                          1. 6

                            They’re not all bad but give nowhere near as much return for the investment of your time.

                            This is REALLY unfair.

                            Reading a book like Structure and Interpretation of Computer Programs isn’t about delivering a quick hit productivity boost for your developer skills.

                            It’s about cultivating a very deep understanding of computation and some of the patterns and tools that can elevate your craft to another level.

                            This is an incredibly ham fisted description, but hopefully you’ll get the idea.

                            1. 3

                              For what it’s worth, as mentioned elsewhere here, I genuinely disagree.

                              1. 2

                                I totally get it, and think your point is very valid. SICP is a very high wall indeed for most of us to scale.

                            2. 3

                              “Data and Reality” (1978) remains extremely relevant today, for anyone whose applications deal with stored data that describes an aspect of the real world (most, but far from all, programming).

                              1. 2

                                Best book on software I’ve read, hands down. I am as rabid about D&R as some people are about OSes or programming languages.

                              2. 2

                                It’s a good list! I see some comments noting that not everybody has the same interests, which is fair, but you can’t expect every internet list to match your needs perfectly.

                                Then again, maybe I’m biased because this does map to my personal interests pretty well.