HACKER Q&A
📣 Iriien

Are older programming books useful?


For context, I'm a librarian purchasing tech books for my public library. We have around 30 books just on Python alone, not counting any that are about using Python for things like machine learning or data science.

Other than clear version changes (like Python 2 to Python 3), are older programming books still useful? The majority of the books span from around 2014 to the present, and they're all still circulating.

Thanks! (And thank you for the book recommendations posted here as well, I have definitely purchased some of them for our collection.)


  👤 kazinator Accepted Answer ✓
Huge, huge amounts of kudos to you to ask here about this.

My advice to a librarian buying programming books: just stop!

There is a deluge of crap that is simply full of wrong information. So even when the topic is still fresh and relevant, those books are still wrong. An expert in the area could have a spot-the-error field day with most of it.

To be able to know what the nuggets of gold are in all the dirt, you'd have to have a background in it, or have access to a consultant who does. I would say, multiple consultants due to the amount of stuff that is out there. You can easily find heavily experienced developers who have no clue at all about a vast amount of stuff that they don't work with.

The valuable books that will stand the tests of time might not even be of interest to the public library audience; they may be more at home in a university library.

Basically, the public library is not a good venue for conveying up-to-date programming information that focuses on doing specific tasks with specific versions of tools on specific platforms. It's not a good use of the library's budget, staff time and space to be on that treadmill at all. Making effectively purchases in this area (skimming the cream of what's out there) requires knowledge that librarians typically don't have, and even if you manage to pick out the momentarily good stuff, a lot of it will have to be prematurely discarded to make space for new material.


👤 NtochkaNzvanova
It depends. As you can imagine, a lot of the more practical books focused on specific technologies are going to be out of date within a few years at most. This is especially true the younger the technology is. Something like Lindy's Law (https://en.wikipedia.org/wiki/Lindy_effect) probably applies -- the longer a technology has been around, the longer in the future you can expect it to be around. Things like C and SQL are no longer changing that quickly, even though they are still widely used.

That said, there are a lot of "programming" books that are more technology-independent and contain more "timeless" knowledge about the art and craft of programming (and more fundamentally, computer science). If you want to make sure that your purchases stand the test of time, look for those. You can find a lot of them by searching sites like HN, Reddit, and Stack Overflow for lists of the best computer science and software engineering books. A few examples that tend to show up on these lists:

- Bentley, "Programming Pearls"

- Kernighan and Pike, "The Practice of Programming"

- McConnell, "Code Complete"

- Brooks, "The Mythical Man-Month"

- Abelson and Sussman, "Structure and Interpretation of Computer Programs"

- Gamma et al., "Design Patterns"

- Fowler, "Refactoring"

- Kernighan and Ritchie, "The C Programming Language"

just to list a few off the top of my head.


👤 shubb
Tasks specific books age very quickly, and are easily replaced by googling.

Books about learning programming for beginners or just about a language have a longer shelf life. Some people like to work through them chapter by chapter as a course, and they can be particularly useful to kids in smartphone only houses who don't have day to day access to a PC.

There are, as others mentioned, lots of "theory" books that are ageless. How To Solve It: Modern Heuristics for example. But these are most useful to professionals and university students honestly. There are also pop-science type books like Algorithms To Live By or Invisible Women that are interesting to a wider audience but don't directly teach skills.

The problem with throwing all the task specific books in the trash is that they do provide some kind of a bridge between the very basics and actually doing something useful. Users don't want to learn python, they want to Automate The Boring Stuff or do machine learning or whatever. I think pointing them at the latest ebooks for that stuff might be best. If my local library let me e-borrow the latest packtpub and oriely books that would be awesome.

One thing I find wierd as I get into harder, more architectural problems, is that as an industry we spent decades thinking about stuff, creating standards, and writing books about stuff, and no one reads them. We prefer to invent wheels again because it feels more like progress than reading books.


👤 marttt
Great question and many great suggestions here! If I was the librarian facing your task, I would probably try to collect books that 1) cover different programming language paradigms, and 2) books that teach you how to think differently, using a computer language as a medium.

In this regard, I would add "The AWK Programming Language" by Aho, Kernighan and Weinberger. Published in 1988, but it was an excellent introduction to computing for a layman like me around a decade ago. Clear, concise writing; really teaches you to think. Still relevant in 2022, especially considering that awk has gained some attention in recent years. Great warm-up to approaching C via K&R. Can't go wrong with Brian Kernighan as a teacher, I guess.

Another worthwhile book is "Modern Perl, Fourth Edition" by chromatic (2015): https://pragprog.com/titles/swperl/modern-perl-fourth-editio...

Also, "Higher Order Perl" by Mark Jason Dominus (2005). Functional programming techniques with Perl; also ticks the "general thinking book" box. Lots of praise on Amazon: https://www.amazon.com/Higher-Order-Perl-Transforming-Progra...

Leo Brodie's "Starting Forth" and "Thinking Forth" probably also count as timeless classics in the "thinking book" section.

Lastly, see also Seymour Papert's books "Mindstorms: Children, Computers, and Powerful Ideas" (1980) and "The Children's Machine: Rethinking School in the Age of the Computer" (1993). These are brilliant for anybody who's interested in thinking and learning, or the Logo programming language that Papert developed.


👤 pamoroso
The growing interest in retrocomputing is making old programming books invaluable, especially those about 1970s and 1980s microcomputer systems and languages. For example, I'm reading lots of books about Intel 8080 and Z80 Assembly programming, as well as CP/M.

👤 Cody_C
The most solid fundamentals have been mostly true throughout great software. Even older books can hold a great deal of wisdom.

Engineers now seem to lean on books less, I think it is a great way to learn about tech and programming. Quick searches are mostly optimized to solve one issue. For a bigger scope, I have had great experiences with reading books, including older ones.

Some older titles I have really enjoyed are: Mythical Man Month Code Complete II The Psychology of Computer Programming Joel On Software Rapid Development


👤 ocdtrekkie
One of the problems I often have is that people are not writing books for the languages I like to write in anymore. Often a book from 2012 or 2014 is the best I can get. So bear in mind, unless you have something better coming in on the same topic, and especially if it's still circulating, leave it be!

👤 forgotmypw17
I read and reference older programming books regularly in two areas: Perl and HTML/JavaScript/CSS. Perl has high degree of backwards compatibility, and the Web stuff is helpful for building compatibly with older and retro browsers. Another area where older books are helpful to me is shell scripting. On the other hand, for languages which change and break backwards compatibility regularly, such as Python, not as useful.

👤 harry8
Books on my shelf that got /more/ generally useful with a bunch of years passing since I bought them.

Simply Scheme, Structure and Interpretation of Computer Programs, How to Design Programs.

They're a hundred times easier to get going with the exercises using racket than the incredible faff it used to be when purchased, especially with SICP.

Maybe if the book is good enough the wider community supports it?

Then there's K&R C, K&Pike, Richard Stevens, of which any edition from the last 20 years is still pretty useful. Although there must be something better than K&R for C by now - the example programming style can be improved upon while still appreciating its considerable strengths. In that general direction Van Der Linden's "Expert C" and "The C Puzzle Book" remain fantastic books to grok C and low level programming.

The Wrox "Professional Assembly Language" is both out of date (32 bit x86) and still about your best bet, update it and play with the x86-64 abi docs, a download of the intel optimisation manual, "Hackers Delight" and http://aggregate.org/MAGIC/


👤 2143
Some older books might be useful, though I'm not sure how useful older python books might be.

Since you're a librarian, may I suggest some books you might want to consider keeping (not all of these are programming books per se):

Designing Data Intensive Applications, by Martin Kleppmann

K&R for C

K&R The Practice of Programming

The Art of Unix Programming, by Eric S. Raymond

The Cathedral and the Bazaar, by Eric S. Raymond

Code: The Hidden Language of Computer Hardware and Software, by Charles Petzold

The Soul of a New Machine, by Tracy Kidder

The Idea Factory, by Pepper White

The Little Schemer, by Friedman and Felleisen

SICP, by Sussman and Abelson

Introduction to Algorithms, CLRS

The Algorithm Design Manual, by Steven

Introduction to the Theory of Computation, by Michael Sipser

The "dinosaur book", "dragon book" etc.


👤 digianarchist
Unlikely.

I’m moving in the coming days and I couldn’t give away books that are 5 years or older. They ended up at Goodwill.

Some books age better but these are usually books on the fundamentals of CS or software engineering; not programming tutorials.


👤 Kenneth39
The old-school method of learning from books has many advantages over articles on the Internet. But, unfortunately, we must admit that books are no longer relevant. In programming, for example, frameworks are updated almost every day, and yesterday's experienced professionals are forced to retrain again.

I see a compromise solution is to start with books if you are a total zero in programming. And, with understanding, switch to modern sources of information as soon as possible.


👤 Qem
I think it depends a lot on the language. Some languages are very stable and backward-compatible, like Perl, tcl or common lisp. Old books would be very helpful for them. Other languages, like Python, change a lot with a couple releases, so old books would not be very helpful. As others reminded, some books are timeless, because they deal with the fundamentals of programming, not specific languages.

👤 error_salad
Sure. I have a book about Basic from the 1980s. Obviously when I got it, the book was way outdated, but served as a nice introduction to programming in general and what to expect. (I was six at the time. Didn't realize the full extent of the book.)

👤 sfled
Every once in a while I'll get a customer who is using older versions of a language. I keep my old books for these guys, especially after having to repurchase a few books used on amz.