I've found programming books good at what the internet isn't always: a cohesive story/presentation meant for a broad audience. I've enjoyed reading some more style-oriented books, largely ignoring beyond the gist. Learning about dependency injection and decoupled architecture, but for Python, completely changed how I viewed the language.
I also once read a book on MS SQL Sever 200x, which I don't remember much of, and I don't think it was terribly useful anyway. If I wanted to know the size of a datatype I'd Google it.
I'm the author of O'Reilly's "Learning Go". Here are the last 13 months of paperback book sales:
- Mar 2026: 124
- Feb 2026: 140
- Jan 2026: 157
- Dec 2025: 306
- Nov 2025: 484
- Oct 2025: 218
- Sep 2025: 176
- Aug 2025: 136
- Jul 2025: 317
- Jun 2025: 230
- May 2025: 237
- Apr 2025: 165
- Mar 2025: 367
Sales are certainly down, but it has gone up and down in the past.
Since the 1st edition came out in 2021, it has sold roughly 20,000 copies (about 10,500 English paperback copies, 3,800 ebooks, and 6,700 translated copies). The 2nd edition came out in 2024 and has sold roughly 13,000 copies (about 8,300 English paperback copies, about 3,000 ebooks, and about 1,600 translated copies).
Most of the money comes from O'Reilly's online platform, not from book sales. That has been declining lately, partially because the latest edition is now over 2 years old, but also I suspect that people are cancelling O'Reilly subscriptions and just relying on LLMs (which have indexed all of the books and used pirated copies to do so).
I cancelled my O'Reilly subscription because it's cheaper for me to buy the books from the publisher. I go through one book every few months. I thought I'd go through more with unlimited access but I didn't. $539.88 a year vs maybe $140-$200 I spend on books (I take advantage of discount codes when they come up).
I also like to go back to books. I cannot do that with the O'Reilly platform when a subscription ends.
I hear you and agree on the unlicensed training point - it is a form piracy.
>which have indexed all of the books and used pirated copies to do so
Funnily enough, people on HN often do not consider this an issue, like at all... I wonder how they'd think about it if they had created something (meaningful) that was subjected to this. I love Go and learned it a lot in the past 2 years but ultimately put it down in favor of more "batteries included" solutions as I don't trust myself enough as a dev to confidently handle concurrency in Go. Still, it's a beautiful language and if I ever come back I hope I can still find books about it, as I hate using AI for learning.
Yours is a good book (got both editions myself), but sadly language learning books will be hit the hardest by AI. Partly it’s what you said regarding copyright washing, but the other big reason is that people will code less; I am writing little to no golang and am prompting it instead. The book is still useful to me, since I want to continue to understand what’s happening, review code, etc, however I expect that my kind of software engineer will be in the minority in the future.
If you publish a 3rd edition and I’m not replaced by AI by then, I’ll buy it. :)
On other topics, using AI can fill some gaps, but books summarizing years of hard-won knowledge are priceless. NoStarch is amazing when it comes to such resources. They have an upcoming book on Linux kernel Memory Management for example, the classic Linux tome from Kerrisk and very specialized security books.
On the other hand I cancelled my O’Reilly sub because I didn’t read enough to make it worth the price and now I purchase DRM-free e-books individually, as needed.
The decline of programming books removed a constraint on programming language complexity. At one point, the basic set of books for Java was six volumes. That's when language books broke down from sheer complexity. The combination of Google search and Stack Overflow allowed programming to become more complex than anyone could keep in their head. C++ bloated to the point that people who used to be C++ language lawyers couldn't keep up.
This follows a general trend. Areas which used to be bounded by the limits of the human mind stopped being bounded that way some time back. This first appeared in corporate structure. Through the 1970s or so, there was an upper limit on corporate complexity. Beyond some point, connectivity problems started to choke the organization. There were classic ways around this, mainly dividing companies into sub-companies with their own profit lines. "The Concept of the Corporation" by Peter Drucker describes how General Motors did that. GM was at the time a group of loosely connected car companies under one corporate roof.
A few companies figured out scaling early. Sears was famous for having developed the "Schedule System", which reduced fulfillment overhead from O(N * M) to O(N log M). This allowed Sears to run a giant ordering plant out of Chicago to serve the whole country.
But many companies didn't scale well, and choked as they grew. Westinghouse is a classic example.
As computers came in, the scaling problems receded. Airlines got their reservation systems under control, and seat utilization went up. Logistics went from warehouses to fulfillment centers, with much shorter holding times in inventory. Chains no longer were limited in size - WalMart, McDonalds, and the big banks could expand to planetary scale. The giant corporate paper-pushing plants disappeared.
So did forced organizational simplicity. Companies had, at some level, to be simple. Otherwise they became unmanageable. As computerization proceeded, that constraint was relaxed.
Finance achieved previously unimaginable levels of complexity. Until the 1980s, most financial products were rather simple. Now, there's no limit, and the tail wags the dog. Futures markets are far bigger than the volume in the underlying commodity, and zero-sum activity dominates.
AI will accelerate this. There will be businesses no human can comprehend or manage.
This may not be productive but will be profitable for someone.
When we go back to early Java, the death of books just came from better IDEs, not even stack overflow (which wasn't there) or Google search (which had little to find). Something like IntelliJ made the very large reference section irrelevant, as you got to see source and Javadocs right there. Intellisense also found most of what you needed blindly. That was 90% of those 6 java books. You'd still see a need for specifics good explanations like, say, Java concurrency in practice for all the original low level primitives. Maybe some madman that could explain the initial implementation of the Calendar classes.
Either way, one needed far smaller books the moment all of that came in, especially because in Java, library code is very readable. Compare that to looking inside a C++ standard library: It's not impossible, but it's of a completely different nature of normal C++ we might write for a business.
> Compare that to looking inside a C++ standard library: It's not impossible, but it's of a completely different nature of normal C++ we might write for a business.
C++ isn't a language, it's a script. Like Latin, it can be used to express English, Polish and Indonesian.
I think the complexity issue in science and engineering has also been growing for some time beyond what can be analyzed/designed by a person or a group with conventional software and math. Wolfram argues that some processes are so complex, only a computational method can solve them. If that is the case, AI might be the only path to help us in designing and discovering novel tech / science. It might be the bicycle for the mind that Jobs envisioned.
> There will be businesses no human can comprehend or manage. This may not be productive but will be profitable for someone.
Which also means that it will probably outstrip our ability to comprehend whether or not such things are actually crimes or whether they should be considered as such.
> There will be businesses no human can comprehend or manage.
If nobody neither fully created nor manages the business, then we probably shouldn't assume any property rights on it by anyone, therefore all the profits must go to the public.
Not true for everyone. I learned Rust from The Rust Programming Language ("The Rust Book") and "Rust for Rustaceans." Sure, coming from C/C++, I could have learned the syntax online but learning best idioms and styles required the time and commitment to read a book cover-to-cover. In fact, I've probably read each page in "Rust for Rustaceans" at least twice to ensure that I understood some of the more subtle points. I could have developed a half-baked notion of how the borrow-checker worked by fooling around and reading blurbs on Stack Exchange. But Rust for Rustaceans made clear the more subtle points that might have taken years of tinkering to understand. Thank goodness people still write excellent books on computer programming.
I have a gut feeling that human as a creature learns better when looking at the information from several different angles, both physically and mentally. Been physically I mean looking at the same concept on screen and on hard copy books, perhaps taking notes and mark relevent sentences with a highlighter. Similarly, seeing a concept on physical book and write some short code snippet is viewing the concept from different mental angles. Though I don't have a proof for that and have yet to find a formal research on this topic.
The pedagogy suggests that you retain more when you also have a spatial element to what you are reading - eg you recall not only what the text was but where exactly on the page you read it, and perhaps also how far through the book it was.
Textbook designers know this and use images, callout boxes and insets with case studies/graphs to break up text on pages so that your brain gets extra context to map 'what' to 'where'.
This is (imo) why infinite scroll and mixed order algorithm feeds are such brainrot (even if you are looking at educational content). You try to recall something you read but it was in an ephemeral location in an always changing stream of content.
This is true: a way to remember things is to construct a “memory palace” in a place you know well, where different pieces of information correspond to different locations inside the building.
The solution explorer from Visual Studio flashes into my mind when I think about the codebases I'm most familiar with, and thinking about the code makes the code file come to mind like it's a big piece of paper and it's all represented physically in some form in my mind. I wonder if the way this happens acts like something of an exploit to get those physical textbook benefits.
Absolutely. Whenever I learn a new thing I'll always approach it from different angles - sources from people with varying skill levels (it can be useful to know how another beginner dealt with something!), video form, written text, reading the theory, seeing the applications, trying it yourself in various forms, different constraints etc. For example, since we're on hn - writing some data structure or algorithm you're learning in a few different languages. Doing all this helps massively with building up to true understanding.
(cooking - when learning a new recipe, I'll always find a few versions from reliable sources to compare, see what they have in common, and try to understand the reasoning behind differences)
I learn the same way but there are different people who learn in different ways. Also some people come with some concepts already understood from past experience or education, it’s easier for to pick things up without needing various angles.
> I have a gut feeling that human as a creature learns better when looking at the information from several different angles
Ever write a piece of code, pore over each line, test the hell out of it, and only when you actually submit the PR and see the diff rendered in your review tool that you spot some totally bone-headed thing you've done?
Viewing a familiar concept in a new context gives you new insights with surprising frequency. Context shifts the priors in the mind. That's why, yes, combining reference/LLMs/tutorials and comprehesive pedagogic tours on rails gives you the best perspective on a new domain.
(BTW: it's due to this effect that company offsites and retreats are good investments, not wastes of money.)
Getting a book is my goto to learn anything new. I taught myself PHP and ended up finding a book 4 years later when I was looking for an answer to something. On the next page was something that would have saved me tons of time so I read the whole book.
Since then I’ve read books on Ruby, Go, Elixir, Docker, K8s and a lot more. By far the best way to get a semi complete understanding of anything without scraping together data from the internet yourself, because you won’t easily know the gaps.
I came here to say almost the same thing. I've been learning rust in my free time because I don't do enough programming at work to scratch that itch any more, and I've been using the rust book as a reference.
Thanks for the rec for "rust for rustaceans" I'll have a look into it.
I've only been using chatgpt for points where i'd normally go ask another dev for another set of eyes to debug something, otherwise all my learning and doing has been mostly the rust book, crates, and blogs about rust, ecs, roguelikes etc etc. It's been so fun!
My method is to get some hands-on experience first with the technology: Tutorials, Getting Started pages, the first chapter of a book. The fumble for some time and getting exposed to various sources of information. Then I take a book and skim it from start to cover, stopping at interesting bits. Then I reread various parts.
Sometimes I start with reading the books. But I already known I won't retain anything deeply. But it will gives me all the right keywords to learn more about the technology.
It always amaze me when I see fellow programmers struggle with problems that could have been solved easily by just reading that introductory book on the subject.
I never bought a programming book in all of my professional career, since the 90s. The only ones I did buy were the K&R C book and the Pascal book at university. They were mandatory readings and basically the only way to learn those languages. Perl? Man pages and online. Tcl? Same thing. When I started working, my company had the whole series of the X11 books (my university too) and we had the Java books. We did use them but Javadocs on the web started to be faster to use than books. Then every reference on the web has been more up to date than any book. Javascript, Ruby, Python, PHP, Elixir, Erlang all of them online. I'm sure that I'm forgetting a bunch of other languages. Blogs are about as good as books about patterns, ideas, best practices etc. I just didn't see the point of buying paper when I could read the same things on a screen for free.
I regularly take my copy of one of the volumes of Knuth's TAOCP off the shelf.
The stuff in those books will never get old, and I often find myself searching for some algorithm or concept that I know I've skimmed over in the past, but no web-searches or LLMs can give me an answer on.
I think it may be due to the lack of open, digital copies of TAOCP available for pillage, as well as the fact that the books don't target a particular language.
Beyond the slowing you to type, the key part of the good books was the considered and mindful order of presentation. This is what had me spending money when I could get the reference manual for free - a guide, a book that taught me unfamiliar concepts in top down fashion, and took some degree of responsibility to be both accessible and comprehensive.
I love the tutoring of LLM, but to this day as a complement to a guided book. I don't find such guided books in computer science much anymore sadly, but for now I still do it in other venues - French, Biology Astrophysics and such. I grab a book, and then use LLM to supplement my reading as my mind always has a myriad questions :).
Not entirely sure why computer science is so radically different - maybe because things change and get obsolete too fast? At any rate, cuddling with a book is still my favourite way to learn a new topic, much as I spend 12 hrs a day eagerly typing and staring at the screen as well :).
Apparently the guy who wrote the Camel book on Perl made less than $1000 from that book. I was shocked when I heard about that because back in the day when I was learning that book was incredibly popular and seemed to be everywhere.
EDIT: Edited, not wrote. My bad. That's a crucial distinction. Also, I meant the Llama book, not the Camel book.
That’s not true. I wrote the Panther book, Advanced Perl Programming, and easily made way more than 100k. Of the 25-30 or so dollars the books cost, I got 10% per copy, or $2 after taxes. The first print run of 35000 sold within the first three weeks.
The Camel book was already a huge bestseller, and was one of the anchor books of the early OReilly series. It made Larry a pretty penny
The 4th edition authors included brian d foy, who said "I think Tom [Christiansen] and I worked for about two years to produce the current edition. I certainly wouldn't want to spend that much time again to make less than $1,000...
It's a huge effort from the editors and proofreaders and the book won't sell enough to make back the effort they put into it." https://www.reddit.com/r/perl/comments/1ns5r9n/comment/ngmvt...
The first edition came out in 1991. The 4th ed came out in 2012, by which time Perl was no longer the duct tape of the internet. Perl 6 had muddied the waters, and Ruby and Rails had peaked.
Still, 1000 is painfully low, esp. for a high quality product.
Agreed, Books on specific programming language were indeed tricky.
I found books on architecture, systems, or patterns, were more available. E.g. On relational database optimization principles, or Unix system administration, or graphics algorithms and rendering math, etc :)
I've commented on this development before on HN, so I'm glad to see this post on the front page. From a few months back:
"...the fact of the matter is that kids getting into high tech and programming mostly don't read books anymore. How do I know? Recently I was hanging out with a bunch of high school students who asked me how I learned. I said it was mostly via books and man pages. "Yeah, don't sleep on high quality written material. O'Reilly. Wiley. Addison-Wesley. Manning. MIT. No Starch Press. &c...
"Well. You should have seen the look on their faces. I might as well have morphed into the Steve Buscemi meme "How do you do, fellow kids?" They looked at me like I was a total relic or greybeard and said things like "Nah, nobody reads tech books anymore; I learned Typescript from YouTube videos."
> the key part of the good books was the considered and mindful order of presentation.
> a guide, a book that taught me unfamiliar concepts in top down fashion, and took some degree of responsibility to be both accessible and comprehensive
> the tutoring of LLM, but to this day as a complement to a guided book
> I grab a book, and then use LLM to supplement my reading
My sentiments exactly!
People forget that mere data/information without a proper encompassing mental model/framework into which that information slots in to complete the big picture is what education and knowledge are all about. You must see the forest and not just the trees.
This is particularly relevant to CS since there are so many interlinked concepts involved that you can get overwhelmed and drown in the details without understanding anything. Edsger Dijkstra explicitly pointed this out in his EWD340: The Humble Programmer - https://www.cs.utexas.edu/~EWD/ewd03xx/EWD340.PDF
If you haven't built up a systematic and holistic mental model then you have not learnt anything. Top-down design and Bottom-up implementation both have to meet for the system to come together.
This is the main reason you need a good teacher or a good book as a stand-in for the teacher.
> People forget that mere data/information without a proper encompassing mental model/framework into which that information slots in to complete the big picture is what education and knowledge are all about. You must see the forest and not just the trees.
should be,
People forget that mere data/information without a proper encompassing mental model/framework into which that information slots in is useless. To complete the big picture is what education and knowledge are all about. You must see the forest and not just the trees.
I tried to introduce a partner to programming with an introductory Python book one year ago. It was brand new on the shelf in the impulse purchase area at Micro Center. It looked nice on the outside and decently vetted at a glance of the intro and a page or two, I trusted Micro Center (undeserved in retrospect), and I was in a bit of a rush. I gave it to my partner to try out on their own and they started having trouble pretty quick, and it wasn't really their fault - it was using a lot of technical terms and concepts with no explanation that you wouldn't expect someone to know who hasn't taken a few Computer Science classes.
And the best part.. it was Python 2.7. Micro Center sold me a brand new, glossy covered "Learn Python" book based on 2.7 in the year Anno Domini 2025. Its instructions didn't even properly tell you to install that version, so if you even make it that far you're going to be lost why the syntax is wrong for every example.
Moral is, books are just as easy to strike out on as a bad online resource. Honestly, I feel like Googling "x language tutorial" is probably going to get you the best results much more easily than picking something off the book shelf - if I can't vet a book reliably, and I already know the damn language inside and out, what hope does a newcomer have?
There is a good ending at least. Among a bunch of random stuff I got from an infrared spectroscopy shop that was closing down and practically giving away all their cool equipment, I found a copy of K&R C. I'd never read it myself but I'd heard so much about it online over the years that I figured it was as worth a try. So I got the victim of the Python book set up with WSL and gcc, and they had a much better time that time around.
I did something similar with my partner, though I didn't look at a shelf in a physical store. We ended up going with How to Design Programs. There were some small terminological things that I helped clarify. (I can't remember what they were.) But overall, I was blown away by how much she was able to just pick it up and run with it. She used just the book and a little bit of help from very cheap and basic LLMs (not for writing code, just for answering questions) did really well, until life got too busy for her to put more time in.
Overall I think it's a really good book for this kind of thing: https://htdp.org/
> Moral is, books are just as easy to strike out on as a bad online resource. Honestly, I feel like Googling "x language tutorial" is probably going to get you the best results much more easily than picking something off the book shelf - if I can't vet a book reliably, and I already know the damn language inside and out, what hope does a newcomer have?
I don't think language tutorials or "Learn $LANGUAGE" are good targets for introducing people to programming. That's true whether it's a book or a blog post or a YouTube tutorial. You want to teach computational thinking per se before focusing on a particular language. Something like HtDP or _The Little Schemer_ or _Logic, Proof, and Computation_.
Even if you want to dive in with practical skills before developing a foundation, you still don't really want books with targets as broad as "Learn $LANGUAGE". You want something like the _Learn Enough ... to be Dangerous_ series, probably starting with the entry on Command Line and then moving on to the entry of a target language (JavaScript, Ruby, Python) in the same series. Then you can move on to a book that tries to teach more or less a whole language, or a programming paradigm through the lens of a particular language.
If your goal is to learn programming, it doesn't matter that much if the programming language is obscure or the toolchain is out of date. But if your goal is to learn some language to work with peers in it at work or something like that, then yeah, you gotta check the publication date.
For a lot of us, maybe our first programming book or class was presented as a "Python course" or a "Java course" or whatever, but that doesn't really represent the goals of a first encounter with programming no matter what your strategy is.
Any question asked would be edited beyond recognition (and usually into brash rudeness). Half the answers were demanding ever increasing proof of work, and the other half told the OP that they shouldn't even be trying to do what they're doing. The only useful thing were opinion based posts from people with domain expertise, and SO kept trying to ban and remove those. It was the least helpful place online, but the most accessible, and it survived for lack of alternatives.
I'm no AI booster, but answering simple questions about well understood topics is a perfect fit for it. Good riddance to StackOverflow.
Yes. In the beginning they didn't ban opinion based posts (that's why you can still find some of them that were left up for "historical value").
I liked Joel on Software, I liked Coding Horror, and I liked the idea that two internet guys could just identify a problem like that, start a company and fix it.
There was a Goldilocks period of several years where contributing answers was fun. I joined in 2010 and was most active until about 2016. It felt good to help people and since it was in the open, it felt like a resume booster as well, like having an active GitHub profile.
Stack Overflow was a nice experience for me because I was able to hit 2k reputation fairly quickly, in just 30 days of posting and 6 weeks calendar time. That being said, it never had the community feel of places I spent during my formative years, which were more on forums and IRC.
Here's a conference talk I gave on how to gain Stack Overflow reputation from back in 2018, selected out of 5 submitted talks. It's amazing how fast times have changed from before, during, and now after.
Absolutely! It answered so many questions I had. I remember when it was relatively new, and I'd just heard about it, it profoundly changed how I found answers to programming questions. Suddenly I could find people having similar problems that I had, who had asked the question, and had actually gotten a useful answer from someone who knew!
It wasn't perfect, of course (nothing is), but it was orders of magnitude better sifting through crap blog posts and confusing reference material. (Not to mention sites like experts-exchange.)
I did originally, when it collected a bunch of obscure knowledge and made it searchable and useful. It was fun and rewarding to put things you knew into the common knowledge pool, and everyone celebrated a successful competitor to Experts Exchange. The SO model had a few major flaws that became impossible to ignore after it was entrenched. First, the reward scheme rewards the exact opposite of what it should incentivise: common questions are hit by many users and therefore attract lots of upvotes while answering the really hard stuff often meant you didn't even get your answer marked as "accepted" (because the OP had given up and stopped checking the site). Second, the site deliberately cultivated an "editor caste" in the Wikipedia style before the failure modes of that model were well-known: well-intentioned newbies get shut down by miserable yet untouchable people who play (and sometimes help write) the site's rules. Third, the stated desire to identify canonical answers to questions had no clear way to handle the evolution of the software people were talking about. So you'd have highly upvoted answers that might have been referencing deprecated libraries, and it was very hard for the newer answer to gain traction via either internal or external search.
It was also unfortunately before the retro boom of the 2020s, so questions about older arcana were often vulnerable to being closed instead of answered.
I had a pretty good time asking a question about Prolog. It was a really interesting experience knowing that there's someone out there that high proficiency in a very niche language, patiently explaining to me an issue that they have probably heard a million times from yet another imperative programmer. They even have their own website advocating for Prolog, etc.
Now, I could imagine an LLM would be able to do the same. However, I understand that this is only possible because of people like them. I don't think the youngins that started with LLM directly would appreciate the humongous amount of data and discussions online that enables that. The internet is so much bigger than just Google, Facebook, Youtube and Twitter.
For me the main problem of SO isn't even the moderation or human interaction. Even if a question is answered successfully, the entries have a short shelf life because modern APIs move and break so quickly. For example, I tried learning Ansible only through books and SO, and it was just frustrating. ansible_sudo_pass was deprecated for ansible_become_pass, but there are still many books and SO questions that still reference ansible_sudo_pass.
In the Good Old Days (or my rose-tinted memories of them), Java/C books and answers will always work even if it's not idiomatic, and JS/Python material might break once in a decade over a major migration like Python 2 to 3. Now I look at Ansible or Zig, copy a simple toy program from SO or GH, and just find that it doesn't work, because `sudo` became `become` and `fs` became `io`. There is simply no way for books or SO to keep up.
Java and C are older languages which have either solidified (C) or are very careful about breaking compat (Java). Most languages nowadays are indeed in the "move fast and break things" mode.
I always thought it was a perfectly fine service for lookup. Asking a question though required a very specific confluence of circumstances to actually be a useful thing to do, so I only did that like 1-2 times in many years of reading it from google.
StackOverflow was great when I was a very junior dev working on JavaScript apps. Anytime I ran into a roadblock, there was often a relevant post there to help me. As I become more competent though, I realized that reading the documentation directly was usually a much better way to get answers to my questions, and I stopped visiting.
It was pretty dang useful when there was no alternative, and I’m sure that many people physically could not have performed their jobs without copy-pasting from it.
But yeah, I don’t know how anyone could have any affection or nostalgia for it, people were massive jerks and it was not a pleasant place.
Yes, I liked it. When it debuted it was a massive improvement over expertsexchange, who had previously dominated the Google searches with bait and switch previews.
It may not have aged well but to say it was always crap is rewriting history.
I have found StackOverflow useful on rare occasion, but the friction, idiotic moderation culture, and high noise-to-signal ratio usually made it somewhere I didn't want to return to.
I was just thinking to my self the other day how it's nice I don't need to stop what I'm doing to make a question that's answerable by someone else. Ai can answer my question without me spending time recreating the problem and stripping out all of the irrelevant context
I thought StackOverflow was pretty great. This is an unpopular opinion but I think a lot of the questions that were closed really deserved to be closed. Otherwise it would have been a firehose of the same basic questions over and over again. For every person who posted a question and got mad that it was closed, there were probably 100 people who googled something and found a useful StackOverflow answer that was relevant and useful to them although they never posted their own question or even made an account on the site.
Ouch! They are down to ~1,300 questions per month. If we assume a user asks 1 question per year, and we assume 50 lurkers for every one who asks a question, we're at 800K monthly visitors.[1]
That is tragically low!
[1] 1300 x 12 x 51 = ~800K. x12 because every month, 1 user out of twelve asks a question, and x51 because there are 50 lurkers for each poster. I'm sure my assumptions are questionable, and curious about corrections, but we're still at very low numbers.
This is why you never pay $1.8 billion for a social media company.
It never ends well for the new owner. Not just Stack Overflow but also Tumblr, Vine, MySpace, Twitter, and more. Instagram might be the only exception.
Good job on the founders for selling at the peak though.
Insta and YT were bought fairly early on the ascent and then pumped hard with some resources and autonomy before being folded in completely. WhatsApp is a legit counterpoint though.
The crazy thing is AI uses stackoverflow, certain parts of reddit, and other forums for a reference and without it will soon become unable to keep up with modern technology. And they are all dying.
The risk is that beyond hobbyists technology will stagnate. It’s already much more productive using one or two frameworks over the rest of what’s available, and without training data it won’t be able to advance beyond those current popular frameworks.
A lot of companies don't hire at the end of the year because of holidays breaking up schedules, coupled with strapped budgets by that point. New year starts, budgets are refreshed, everyone is back to work so hiring pipelines can roll again. Get hired in early February, on-board for a couple of weeks, really start to dig into work at the end of February and early March. You don't want to look like you don't know anything, so instead of asking your coworker sitting next to you or just a Slack DM away, you throw a question up on Stack Overflow and hope to get an answer that gets you unstuck.
Both before my time. These days it seems like every site is able to withstand pretty much every controversy. Facebook should have died about 5 times by now but the company is as strong as ever.
> You already know why, more or less. ChatGPT has over 900 million monthly active users. GitHub Copilot has 4.7 million paying subscribers as of January 2026, up roughly 75% in a year. You can’t imagine writing software without Claude Code anymore.
I read programming books and use LLMs for different purposes. With books, it's usually not to find a solution to the very specific problem I'm working on. That's what I use LLMs for because they give very focused answers. Books, on the other hand, provide much broader context that help me learn a language. Whereas with LLMs I get a solution yet tend to retain nothing. YMMV.
It's a shame because to guide a coding agent, you need to have the right grammar and vocabulary to describe what you want and how you want it to be built. Junior devs should read not because they need to know how to write the code, but they need to know the vocabulary and the grammar to guide the agents.
At work we had a dispute over if AI should be allowed in the technical interview, we resolved it by both running an AI allowed and not allowed interview. Something interesting we found is that every candidate either passed or failed both. People who could not program manually without AI were not able to get the agent to complete the tasks either.
I've seen people type questions in to the LLM and get the answer they asked for but not the one they needed/wanted because they didn't have the correct terminology.
> Surely the desired state isn't that nobody knows how to write code any more right?
Shaping up like that in my org. At least one mid-career dev says he no longer looks at code.
I still look at code and find that agents work best when I write the foundation and then vibe on top of my hand-written code. Works extremely well because agent picks up my style accurately.
Hopefully your management is trying to answer the following question: is said middle-career dev outproducing their past self, and others who still look at code, with:
1) submitted changes that don't need any more revision than their previous human-written ones when it comes to code review?
2) no increase in bug incidents
3) no slow-down in peer work or future work caused by humans-or-agents having to fight increasingly overly-complicated, poorly-factored, copypasta-style code or god methods? (this might not be evident yet)
(Another question is how well is this person doing their job as a reviewer, making sure to keep the product quality bar high, without looking at code?)
Anyone in an org with coworkers no longer writing code needs to be making sure their managers have a pulse on the long-term health of the product to see who's doing it well (lots of test coverage, shipping only super-high-quality, refined-from-multiple angles stuff) or just being lazy (shipping first drafts that continually add debt to various files and methods).
It's generally and simply an encoding of what amounts to binary machine code which you translate via assembly code acting as a deterministic compiler from assembly to machine code if you are doing it manually.
LLMs aren't a deterministic process and human languages aren't as clear as machine code and assembly.
I've never programmed before good compilers existed, but I still know some assembly. For what I currently do it's used rarely, but it's still quite valuable on occasion. I don't see any reason LLM-assisted programming wouldn't be like that; for sure the various C compilers sure seem like they're trying just as hard to produce results you don't want.
If I transported you to the 1960s and gave you a wizard that could punch cards for you with a chance of making a mistake, would you still bother to learn how to operate a punch card?
What would you do if the wizard gets stuck? Coarse the wizard into making the black box work through somebody else's direct perspective on the problem?
It's more like a restaurant. You give an order and a little while later, a finished dish appears.
The difference between a Chipotle and a Michelin starred establishment is that Chipotle is just assembling a mass produced good. A Michelin chef knows their ingredients inside and out; knows the science of how those ingredients work; knows varied techniques to extract flavors, create textures, etc.
Anyone can work in a Chipotle; few can achieve a Michelin star.
I remember! You created a control card, with tab stops and other controls, wrapped it around a control drum, and then had an easy time punching your source FORTRAN!
I just looked and found my old control drum, in the back of my junk drawer. But I can't find an old punch card machine in there, most have lost it somehow.
And to operate a self-driving car safely you need to keep your attention on the road so you can take over quickly when needed.
But that's not how human nature works. Most people take the path of least resistance. Especially when the primary purpose of the invention is to offer convenience.
I was wondering about this myself, but given everything I know about AI. Won't the vocabulary slowly and subtly change as common people try to develop software, not knowing the jargon? Won't the AI systems learn from the prompts and adjust their understanding of what's trying to be accomplished?
Personally, I've cracked very few programming books and I've been building websites since ~2004 back when magazines and books were the best sources for information. Some people learn skills from books well, and some people end up bewildered and confused until they can actually try it out and see how it works. I need to explore to discover and learn.
I did find "Eloquent JavaScript" very helpful, it didn't just get me started on JavaScript but actually introduced that whole computer-sciencey side of programming that I hadn't encountered in my various markup and stylesheet language coding. I never finished Eloquent JavaScript though, it was like a springboard that got me into JavaScript (which is dynamic and has an interactive runtime) and as soon as I could be having a conversation with JavaScript at runtime, from there I continued learning by talking to the REPL and seeing what happened.
> The kid who is right now learning to code by chatting with an agent is not a worse programmer than I was at 12, hunched over Learning Perl, retyping examples that would not run because I missed a semicolon.
To be honest, I'm 17 y.o., I'm coding by chatting with an agent, but it seems like we can't tell the distinction too absolutely.
At the first time writing a React app, I forgot to name a file with a .tsx extension and I used .ts instead, then spotting ugly error lines across my JSX syntax, confusing and sharing with my friend, and laughing this little funny thing all the day.
I once spent the whole afternoon choosing a js linter, reading their docs and perceiving different tastes. In my early twelve-ties (uh this sounds funny too) I'm always arrested by configuring Windows PEs, installing different Linux distributions on my PC, etc. Today I still read tech books, alongside videos, articles and also chatbots. Chatbot is a new tool, but there's no doubt it cannot replace other media types and what they bring to us/me.
What may I express is that a natural interest in programming or computer things cannot really be overwhelmed by LLM things. I don't know how to use vim skillfully since I majorly used Windows at my early age and I'm not familiar with vim's logic, but this practically doesn't stop anything. I still found Linux's fantasy, at last. And same for LLMs.
I just bought $600 worth of programming books and I’m pretty stoked to read them. Mostly a lot of titles considered “the classics” but my brain works best with hard print materials.
This is a good investment. Your fingers will remember things long down the road and you will be better at having an AI bullshit detector for code development.
After being discouraged by the ever looming "threat of AI" in programming, I took up some older books. If you didn't get it, I highly recommend "higher order perl" https://en.wikipedia.org/wiki/Higher-Order_Perl
That book has some of the coolest programming techniques. Even if not all of them are applicable everywhere, truly a good refresher. I don't know perl but write the examples and follow along in JS. Great stuff.
haven't done it physically in a long time, but surely virtually.
my 0.02 on the matter: things are stacked against you even if you are not strapped for time.
a vast majority of the stack is changing too fast and non-digital versions are not appropriate beyond learning the base of a language or high-level design patterns.
as publishing became super accessible, there is also a plethora of options, and increasingly difficult to sift between the lower-quality stuff and the diamonds.
for most people, very few (kinds of) programming books exist today that could stay relevant beyond the university.
I do not think they are too valuable anymore as references you keep coming back to, that use-case has been long superseded by the internet, well before AI. But for a novice learning programming, I still believe that there's absolutely no substitute to reading a book from cover to cover.
I have seen a myriad examples of people that have half-learned a language from random snippets in the web (or from AI now), and the struggle never ends. And taught courses or videos tend to be too time-inefficient and too shallow, more of an intro.
A good book is still by far the best way to get the complete and cohesive overview of a technology and put it into context. It gives you the kind of mental model that allows you to solve fresh problems from first principles thinking, because you understand the whole breadth and depth of how the technology works.
I once bought a programming book in the 1990s. Since then, I never found the need for it anymore: you could simply find all the resources you needed online (and long before ChatGPT).
StackOverflow is kinda forgotten now, but there was a time where you could find the answers to pretty much all your programming questions there, and if not, you could simply post a question yourself (and yes, there was a time where SO was pleasant to use and your question didn't get immediately shut down by overzealous admins).
I personally never liked learning a programming language from a book. Like, in the early days of Java, I would get so much more use out of the then excellent API docs than out of secondary material.
And of course, programming is one of those disciplines where you really have to just try it out to really make progress.
I think it might have been a cognitive development thing, but at some point in high school, Stroustrup's "The C++ Programming Language" just kinda clicked for me, like I hadn't been reading it properly before.
I tried to get started with programming with books. But I just didn't seem to be getting anything, I'd read the chapters and not really learn or understand it. What really worked was interactive education like Codecademy and some others I have forgotten the name of.
Reading a small paragraph and then immediately putting it in to action made everything clear far better than books did.
It's fascinating the different ways human minds work and learn. I'm the same way.
It also shows up in other areas like language learning where some people prefer classes and grammar books, and others prefer to just learn via exposure to a lot of content.
I think this is probably just the common experience. Programming is probably best learned hands on rather than through a book, which is why the use of programming books has fallen off a cliff once we got other options. Even before AI I think programming books had already fallen off in popularity.
There would be some things books can provide that are probably better than other options, but for a lot of hands on skills it seems best to learn in a hands on way.
Maybe, I haven't looked into it too much, but among the people with a preference for classroom and textbook based learning there does seem to be a large degree of fear of failure, which influences what might otherwise be a different natural preference. Fear of failure is exacerbated by making mistakes in public, but it seems to even apply when nobody is there to observe someone making mistakes.
I don't feel that LLMs are replacing books for professionals.
The problem with LLM learning is not that they can't explain a concept, but you have to know what to ask in the first place. To get a deep proper answer from LLMs you need a deep precise prompt. When you learn the new topic, you don't know about the topic itself, so you need a properly structured interleaved material to grasp new concepts.
After you get the concepts from books, you can prompt the LLM for particular non-covered subjects you are interested in.
So even these days when I'm interested in some topic, I sometimes even ask the very same LLM to provide me top-10,top-20 books for the topic, with short overview for which type and level of readers and style they are, pick a few and read them.
LLM is a replacement for docs and simple questions on StackOverflow, not for the real organized knowledge that requires a few hours session of concentration to understand.
You can ask them for high-level overviews of a given topic, and then drill down into individual sections of its response. With the most recent iterations, many of the times I have blindly stumbled into something new, it has pushed back with warnings
This seems like a good opportunity to share my recent photos from a bookstore in Tokyo… just a crazy number of computer books. Mostly in Japanese language.
Ironically, I just ordered a hardcopy of "Python Crash Course". I want to learn it for personal use and prefer to have the book at hand, rather than in PDF/electronic format. And no, I'm not letting AI or LLMs do the job for me: I prefer (rally: need) my brain to stay active.
My two favorite non-fiction sections of the bookstore are dead and dying. The computer section, if it still exists, is just things like _Excel for Dummies_, and the philosophy books have all been pushed out by self help and dime-store "metaphysics".
But I've started reading programming books again recently, on my e-reader and on my laptop. People are still writing them, and they're still good. We should all go buy some!
For my own usage, I don't see chatbots as supplanting textbooks. If anything, they pair well; reading a book from cover to cover gives me the breadth and depth I want, but LLMs are there for tangents and questions that come up along the way. I was reading a book and chatting with Claude like tihs just yesterday, for a few hours.
Curiously, I do buy and read tech books. My hobby is legacy OS kernel research so I bought some second handed books on old Linux (kernel 1.2) and NT (3.1). It is fun to research so I don’t use AI often for side projects.
I enjoy reading really old programming books, the 1997 edition of Learning Perl mentioned in the article being a perfect example. I don't fret over the exercises, but if it's well-written it gives a glimpse into how people thought about technology/code/computers at that point in time, like the tech equivalent of flipping through old newspapers.
Stack Overflow provides marginal value when there are LLMs. Great technical books on the other hand still provide tremendous value and complement LLMs in a learning process: a book provides a fact checked, curated set of topics with clear start and finish (a structure) and LLMs help with any blockers or missing context that readers will encounter.
The problem is knowledge gaps. You don't know what you don't know.
A good book deals with that.
For example, my Effective Pandas book teaches best practices that most never learn because the blog posts that train the models are actually espousing anti patterns.
(As an author I'm keenly aware that fewer folks are buying books.)
I don't think it's fair to blame this on LLMs. The last time I bought or even looked at a book of this type was easily 20 years ago.
And I wouldn't have it any other way. I remember my ginormous Visual Basic 3 Bible from the 90s with great fondness and nostalgia, but thumbing through a dead-tree book to figure out computery things is just not a thing I care to do.
Having said that, I still think there's room for computer related "books"... of the digital kind, at least. It honestly feels a little absurd to even consider buying a physical book for this sort of purpose.
I still read programming books, especially if I want to check out a new language and get the gist of its capabilities and how are things are done in that specific environment. Also I prefer to read a book written by an author that I know has the experience and the insight to actually write the book than read random sources on the internet. Or maybe I am just used to it.
I've not read a programming book for years, even before LLMs came on the scene. Didn't see the need to when there's so much information online.
These days, I don't use LLMs for actual programming but will ask them questions in lieu of doing a web search. It's like documentation I can chat to. Basically a more efficient blog post or book chapter that happens to be dedicated to whatever it is I'm working on.
I started learning software in the early 2010s and I read a lot of software books like the ones mentioned in the article. I continued reading them as the years went on, but the last one I bought was probably 4 or 5 years ago. Naturally, I probably don't need books as much as I used to -- I can generally pick up something new and know where to find what I need to find, "learning to learn" and all that. I also think they are better for foundational knowledge; many times the books become outdated very quickly. So if I was gonna attempt to write a database or learn distributed programming theory, I'd probably pick up a book, but if I wanted to learn a specific tool (or most languages) I'd probably stick to the web.
I type this comment flanked by my shelves of computer books. Most I keep for sentimental or historical value. My first edition K&R, the first PostScript Red Book, the volumes of The Art of Computer Programming, and many animal books. In addition to what the author said, what saddens me is that most developers today will not have these milestones of their growth as a software engineer to look back upon. Our history is literally evaporating into the cloud.
This might be an unpopular thing to do, but lately I've been literally having claude/chatgpt write books for my personal consumption: things to brush up interview skills, python, system design, and even agentic coding. I've also had it aggregate substack posts for me, etc.
I have it generate an ePub file, and drag and drop it to my kindle.
It's a great way to take information with me, out for a long walk where I can focus on it and absorb it.
I convinced my mom to buy me a book on C++ when I was 13 (25+ years ago). I made it to page ~75 or so before I got bored of reading, and needed to start building stuff to stay interested. I don't think I ever looked at it or any other language book again after that.
That's also how one of my first book that's focused on the language (instead of those focusing on how and what to do to build the cool stuff) feels like. Just pages of things that would've probably keep a language lawyer giddy but my blue-collar brain skip to sleep.
Head First series try to take different approach, but by then my brain has already too used to question every single sentence and goes on its way exploring which books simply aren't designed for.
Nice; This is the only book of which i have all three editions.
You might also want to get the 1st edition to understand how the earlier 32-bit programming differs from the current 64-bit programming. You can probably get it for free/throwaway-price.
Pair your CSAPP book with Advanced C and C++ Compiling by Milan Stevanovic and you can become a "Low-level System Programming Guru" ;-)
Reading a well written programming book will put you ahead of 99% of other programmers using that language. Most programmers learn some subset of a language to get things working, and never learn more than that.
This post feels misleading or possibly just nostalgic. The books referenced still exist because the people creating the technology are still writing them. They're also creating video and attending conferences (virtual or otherwise). That's not going away anytime soon. But perhaps what has changed is how the information is accessed.
Do you need to debug some ancient perl? Sure, ask Claude. You'll get an answer and move on. But if you're looking to learn how to use the next technology before it's mainstream, you'll go looking for that material. And it's there, where you expect it to be. Do you still watch network television or haunt Blockbuster? Times change and the market moves on. The interesting thing is, people like books and they're also available for those looking for a physical artifact to hold. Most of what's available is POD. Depending on the title, you're hitting the print button when you place the order.
Before the rise of AI, developers were basically doing copy/paste from StackOverflow. There are few developers who knows how to code.
Even DevOps engineer, I worked with CI/CD "specialist" who couldn't work for sht, if you asked him anything outside StackOverflow, he couldn't answer.
But there is a silver line for everything.....
I am not a developer but I learned to code with Perplexity AI, but not copy/paste, anything I didn't understand I asked it to explain why.
I wrote my first python app with classes, functions, 94% code quality coverade, the mock unittest was 4x bigger than the actual code. I can start a python script from scratch without looking at my own examples.
I would never be able to do that within a few weeks by looking at forums that often have worse response than AI hallucination.
I believe it really depends on the programming book. For introductory topics (Learning Python, HTTP Basics) one is better off with sources from Google or GPT generated since they are much simpler, faster to access and high quality sources out there. But for more low level topics, books like "Designing Data Intensive Applications" are still the first option for most people; you can't easily find corresponding material online that provides the same level of depth, structure, and context.
I had a taste of OReilly books through ACM/IEEE. A few years pass and I'm working on some obscure legacy code and a book saved me. Needed it in a hurry so signed up for OReilly books for a year even though only needed it for four weeks. I have renewed it since and enjoy it, being able to dip into topics, just for fun, written by people telling a story. The long form of a book is quite different from SO and new books keep coming out. I'm hooked.
Hot take: I'm reading programming books more now. There is so much to know about any technological topic and an LLM can tell you all of it, but it's overwhelming. What a book does is disciple and structure what you need to know, and what order to learn it in. Start with a book, grow your knowledge and put it into practice with an LLM.
It doesn't matter so much if the LLMs are better or worse for learning things. I tend to think much worse in the long term. The problem is the reduction in choice. Soon we won't have web search. No user generated content. No genuine personal interaction. No blogs. No personal computer industry. No tech book publishers. Its all going to be LLM generated content owned by a small group of people. It sucks. I am in the opt out group wondering what exactly will be left to opt out into.
I still have my copy of Learning Perl. Mostly because it represents a milestone in my learning. I have kept and obtained a number of other books simply because they are antiquated, special and/or classics that are interesting to read even if they are not that useful to me, like Codd's relational book, or Calendrical Calculations. I hope the AI is trained on these sorts of books, so that the knowledge can live on in a different way.
It used to be that you could buy a book and use it as a reference for years. That stopped being true sometime in the 1990s, as the half life of book value declined rapidly.
One persistent internet and Altavista became available it was just a matter of time, and now we're there. The whole move fast and break things culture won.
Like Chesterton's fence, you don't know what you're got until it's gone.
It depends on what kind of reference book you get.
A reference book on a particular language is going to have a pretty short useful lifetime, since any language of significant popularity will evolve relatively quickly.
In contrast, a reference book on general programming knowledge (e.g., design patterns) could very well last a lifetime.
Sometimes I'll be in a large used bookstore, like the kind of cavernous ones you find in places with cheap real estate, or at a charity sale and there will be a book with a title like "Learning J2SE 1.4" or "XHTML for Dummies" that is just utterly and completely useless.
I wonder if these books will eventually be interesting, the way old ham radio or slide rule manuals can be, or if they're just forever doomed to irrelevance.
You can still do it too, but you need to see through the fad and not go for the shiniest technology out there. I've been reading "The Design and Implementation of the 4.4BSD Operating System" because it's basically the best explanation about OpenBSD as it (and NetBSD) still follow the same general architecture.
Another book that's worth its weight is "The Linux Programming Interface" and "The TCP/IP Guide". Also you can probably buy "The Go Programming Language", "Programming Erlang", and "Programming Clojure" and still come ahead. As long as you choose to learn technologies that have thoughtful design, or has a standard (even a de-facto one), you're golden.
I almost feel nostalgic for the bittorrent era, when piracy (or unauthorized distribution) was done the old-fashioned way!
Though it's a shame that current copyright law is incompatible with building an effective digital library that isn't crippled with restrictions designed to impose the limitations of paper books (or worse) onto ebooks (while removing benefits such as first-sale doctrine.)
> I almost feel nostalgic for the bittorrent era, when piracy (or unauthorized distribution) was done the old-fashioned way!
Libgen is a huge improvement. During the period you're referring to, what was available was determined by popular demand, which meant that books weren't available at all.
imo books for programming language should be roughly a guide to docs, with better context collocation and more elaborate examples, otherwise it would be really painful to use language
you can't pick up c++ from the docs and the language itself is a monstrosity, and for that you must have book explaining why do you have 30 types of pointers, golang in the meantime have excellent official guide, and you don't really need any book
I used to read a book or two when diving into a new language. But I think the last time I did that was in 2017 when I learned Swift. That was supplemented with a lot of Stackoverflow.
I think the next deep dive was in 2022, when I learned Go. But that was completely from online sources.
Funny, I think a dead-tree book (or PDF you won't copy from) is a great format to learn programming from. Retyping things into the editor is underrated, as a form of engaging more viscerally with the material (brains work better when they get to play with the clay), as a way to build muscle memory for the language, as a way to absorb idioms by osmosis, and so forth.
Different brains, different strokes, but I think the book format is not wrong, the teaching and learning expectations are.
Yes I have both copies, prefer the ANSI C second edition my self. I brought another second hand C programming book and when I was working through the exercises in the mid 2000s the GNU C compiler kept issuing warnings as the code used gets() to read strings. :D
I use AI to summarize a book because I need to use it asap for my professional works. But I do reading because I enjoy learning process, the knowledge is a bonus, not the goal
> Nobody cracks open a programming book anymore
Not true for me. I still read the "Learning Rust in a month of lunches" although I ask AI to write Rust code all the times.
The main issue I have is by the time I got my brick delivered from Amazon about SwiftUI 3rd edition, the 4th edition was out. It's a door stopper now.
They're also incredibly useless. If I get a digital book, I can search it, highlight and categorize. And it doesn't weigh or occupy the size of a phone book. Many programming books are just gnarly and unpleasant for casual reading (unless it's a small thin book but it won't go into enough details).
I won't get into the copy pasting argument because someone will inevitably argue about how you should type the examples by hand to learn more! but not consider how many examples are in a book...
So when it comes to buying classics like K&R, get a printed version! But when it comes to 400+ pages, nope, buy digital.
So I think people still crack open books, but they're not paper ones nearly as much.
With a programming book, you invested time to thoroughly learn something new. The language/tool and its associated way of thinking were now part of your toolbox. You were simply a better programmer going forward.
With AI that toolbox doesn’t grow. You don’t become better, everything from now on will be wrangled into shape with the frozen set of skills you have at this point.
For some people this is fine. For me the endless learning and sharpening of the blade is one of this most appealing parts of programming, so I hate this.
This corporate messaging of "just use AI, cut as many corners as possible, only retain the essential people and force them to sling slop 7 days a week" is unsustainable.
It's wrong for so many reasons. It disrupts talent pipelines. The staff+ people probably don't want to work twice as hard to cover the cut headcount. In general, people prefer to work on systems that are well architected and not some slop that got vibe coded up in a weekend.
They (corporate upper management) could've just done nothing and the end result would've been better than whatever the fuck is happening right now
The author is blaming llms alone. And is not even mentioning sites where you can download any and every book you wish. That might have led to decreasing sales as well.
I had a whole zoo of - physical - O'Reilly books back in the day. I still own a few today, but they tend to be less language-specific and more 'best practices'-oriented (Hello, 'Bad Data Handbook').
What made me stop was not LLMs, but that I started to get frustrated by every book spending what felt like 20% of its volume on 'how to properly install this' - something that was little value to me (that's the packet manager's job, and I am not screwing up my installation becaue you like that other processor flag more) - while prices rose. Final nail in the coffin was when O'Reilly decided to aggressively push their subscription model. I'm not paying money every month to get access to a library whose books can disappear at will.
Disregarding the issue of AI for a moment, I don’t really think books were ever the ideal way to learn programming.
It’s so obviously better to learn programming in a web based medium. Not just for tutorials or code-running environments, but also for having up-to-date manuals and references for tooling as new releases come out.
Or, if you don’t like that, e-books are again vastly superior with the ability to search easily without flipping through indexes, copy/select text, etc.
Books become out of date so fast, and you live in a hell of manual transcription, which is not actually that helpful for learning despite being highly manual. I also remember dealing with typos and mistakes that were hard to fix as a new learner. Let’s hope someone sent a letter to the author and that the book sold well enough to get a second edition, which I’d then have to buy…but by then it was too late, I’d have moved on.
There was a huge bookshelf because there was no better option. Just like Blockbuster video, something far better came around.
People still use programming books, they just don't purchase new retail books as often. Books have become magnitudes cheaper for publishers to produce but the books didn't get cheaper for consumers. I went to O'Reilly's site, clicked on the first book that popped up and it costs $67.99 for a digitally printed paperback book:
Take a guess why so many younger devs will opt to pirate a PDF rather than purchase retail programming books. Publishers are pricing themselves out of the market.
I bought a book on C++20 last year when we started a project on it and I read it.
I don't think programming books are going anywhere, because they still contain a concise directory full of information on different languages or frameworks. If I try to learn a language piecemeal through chatgpt or blogs I risk missing important details or platform-specific knowledge. I'd believe books on vim are going away but books on languages or other job-essential tools have a use in the market and I can't imagine they'll go away.
I do, actually. Trying to find good material to read for Odin programming language. Most books, are just hard to follow, not newbie-friendly, always gushing with bloat, with things that make the book fatter, making it easier to up the price. Student's usually end up paying the price :(
Sol,
Off-Topic:
If I suspect that somebody in a company, or message board is tampering with a user's account, when they are not supposed to, say by blocking their ability to login, would legal action against the company in question be justified on the part of the user?
My career kicked into high gear some time around 2008. I saw somewhere online where a publisher was seeking a volunteer book reviewer / junior editor.
I volunteered, did the best job I could, and posted an honest review via blog. I got more review requests, and a few other publishers contacted me for the same.
I didn’t really master much, because I didn’t put hands on keyboard for a lot of it. But I got a good view of the technical landscape, and I accumulated a nice paperback library.
Before too long, the free books became free ebooks and some of my contacts needed renewing as natural career progression took place. I let my ‘hobby’ die off as I dug deeper in the topics that interested me.
So that era passed. I still have several books with my name in the credits, sort of a souvenir set from the time.
A good programming book gets better with age. If it's really about ideas and uses this or that technology for exposition, so much the better: the more remote in time the grammar of the examples, the more you can focus on the ideas. SICP being in Scheme is an advantage because you don't know Scheme yet; Windows Internals being about Windows teaches you generally good lessons in OS design by forcing you to contemplate a system alien to the Unix you probably know better.
It's shocking how many of these seminal books are available for free and how few people read them. Yes, yes, you can get the same information from an LLM, but an LLM won't give you the guided tour through the whole rugged ideas-space and show you a reasonable peak. Order, emphasis, and expository style build intuition, so books (especially old ones) are worth reading.
> A good programming book gets better with age. If it's really about ideas and uses this or that technology for exposition, so much the better: the more remote in time the grammar of the examples, the more you can focus on the ideas.
> It's shocking how many of these seminal books are available for free and how few people read them. ... an LLM won't give you the guided tour through the whole rugged ideas-space and show you a reasonable peak. Order, emphasis, and expository style build intuition, so books (especially old ones) are worth reading
Very, Very True! I have a huge personal library of my own and keep adding to it regularly.
IMO, most people nowadays don't want to put in the effort/time needed to learn something complex. Everything has to be spoon-fed and if they don't grok it the first time, then it is the fault of the author/subject/etc. I just don't see the sincerity and commitment to long-term study which is essential to understand any Science.
Books are more of a unix thing no? I know microsoft had is kernel series but most people used MSDN CDs.
Probably for the best that books are going away, kids these days tend to turn them into their entire personality and keep alive bad ideas far longer then they have any right to exist.
I agree with the article good code lives on screens, it should be self documenting. If it can't be self-documenting then a tool is the next best thing, then docs, books, If a person has to explain to another person what going on something is very wrong. I also agree that "teaching modes" on chatbots need to be far stricter, I've seen some research in this direction. But it's also on the community to create a software cannon that isn't controlled by some megacorp so your dedication is yours.
It's a bit different than that analogy would suggest. Learning things piecemeal can leave strange gaps in one's knowledge, in my experience. A book is often much quicker.
You can't just buy a horse and park it in a garage. You need to exercise it, give it vet care, shoes, feed it, deal with poop, etc. Or, pay someone to do that.
Unless you live in a place with dirt roads, or really love horses, I think a beater Toyota would win in terms of time and cost.
Well, you can't really just buy a beater car and park it in a garage. You have to perform maintenance on it, and the worst thing for a car is to just sit a long time.
A horse has the unique feature that it can create more horses, which is something a car doesn't do. Horses are also unique in being an appreciating asset, which cars are most definitely not.
I've found programming books good at what the internet isn't always: a cohesive story/presentation meant for a broad audience. I've enjoyed reading some more style-oriented books, largely ignoring beyond the gist. Learning about dependency injection and decoupled architecture, but for Python, completely changed how I viewed the language.
I also once read a book on MS SQL Sever 200x, which I don't remember much of, and I don't think it was terribly useful anyway. If I wanted to know the size of a datatype I'd Google it.
I'm the author of O'Reilly's "Learning Go". Here are the last 13 months of paperback book sales:
- Mar 2026: 124
- Feb 2026: 140
- Jan 2026: 157
- Dec 2025: 306
- Nov 2025: 484
- Oct 2025: 218
- Sep 2025: 176
- Aug 2025: 136
- Jul 2025: 317
- Jun 2025: 230
- May 2025: 237
- Apr 2025: 165
- Mar 2025: 367
Sales are certainly down, but it has gone up and down in the past.
Since the 1st edition came out in 2021, it has sold roughly 20,000 copies (about 10,500 English paperback copies, 3,800 ebooks, and 6,700 translated copies). The 2nd edition came out in 2024 and has sold roughly 13,000 copies (about 8,300 English paperback copies, about 3,000 ebooks, and about 1,600 translated copies).
Most of the money comes from O'Reilly's online platform, not from book sales. That has been declining lately, partially because the latest edition is now over 2 years old, but also I suspect that people are cancelling O'Reilly subscriptions and just relying on LLMs (which have indexed all of the books and used pirated copies to do so).
I cancelled my O'Reilly subscription because it's cheaper for me to buy the books from the publisher. I go through one book every few months. I thought I'd go through more with unlimited access but I didn't. $539.88 a year vs maybe $140-$200 I spend on books (I take advantage of discount codes when they come up).
I also like to go back to books. I cannot do that with the O'Reilly platform when a subscription ends.
I hear you and agree on the unlicensed training point - it is a form piracy.
>which have indexed all of the books and used pirated copies to do so
Funnily enough, people on HN often do not consider this an issue, like at all... I wonder how they'd think about it if they had created something (meaningful) that was subjected to this. I love Go and learned it a lot in the past 2 years but ultimately put it down in favor of more "batteries included" solutions as I don't trust myself enough as a dev to confidently handle concurrency in Go. Still, it's a beautiful language and if I ever come back I hope I can still find books about it, as I hate using AI for learning.
[delayed]
It's also relative to the employment numbers.
Companies are shrinking body counts, so you have less buyers of programming books.
2 of May 2026 is me! Learning Go is such a great book.
Might also be because of Anna’s Archives
Thank you for your excellent book.
Your book is highly recommended in the Go community.
I will definitely be reading it once I finish "The Go programming language".
Your book was my path to Go. Thank you! Having a physical book means much to me.
Yours is a good book (got both editions myself), but sadly language learning books will be hit the hardest by AI. Partly it’s what you said regarding copyright washing, but the other big reason is that people will code less; I am writing little to no golang and am prompting it instead. The book is still useful to me, since I want to continue to understand what’s happening, review code, etc, however I expect that my kind of software engineer will be in the minority in the future.
If you publish a 3rd edition and I’m not replaced by AI by then, I’ll buy it. :)
On other topics, using AI can fill some gaps, but books summarizing years of hard-won knowledge are priceless. NoStarch is amazing when it comes to such resources. They have an upcoming book on Linux kernel Memory Management for example, the classic Linux tome from Kerrisk and very specialized security books.
On the other hand I cancelled my O’Reilly sub because I didn’t read enough to make it worth the price and now I purchase DRM-free e-books individually, as needed.
How do you feel about these LLMs potential piracy of your book?
I appreciate your response, it's great seeing real data and getting to form opinions on it this way.
hi Jon!
The decline of programming books removed a constraint on programming language complexity. At one point, the basic set of books for Java was six volumes. That's when language books broke down from sheer complexity. The combination of Google search and Stack Overflow allowed programming to become more complex than anyone could keep in their head. C++ bloated to the point that people who used to be C++ language lawyers couldn't keep up.
This follows a general trend. Areas which used to be bounded by the limits of the human mind stopped being bounded that way some time back. This first appeared in corporate structure. Through the 1970s or so, there was an upper limit on corporate complexity. Beyond some point, connectivity problems started to choke the organization. There were classic ways around this, mainly dividing companies into sub-companies with their own profit lines. "The Concept of the Corporation" by Peter Drucker describes how General Motors did that. GM was at the time a group of loosely connected car companies under one corporate roof.
A few companies figured out scaling early. Sears was famous for having developed the "Schedule System", which reduced fulfillment overhead from O(N * M) to O(N log M). This allowed Sears to run a giant ordering plant out of Chicago to serve the whole country. But many companies didn't scale well, and choked as they grew. Westinghouse is a classic example.
As computers came in, the scaling problems receded. Airlines got their reservation systems under control, and seat utilization went up. Logistics went from warehouses to fulfillment centers, with much shorter holding times in inventory. Chains no longer were limited in size - WalMart, McDonalds, and the big banks could expand to planetary scale. The giant corporate paper-pushing plants disappeared.
So did forced organizational simplicity. Companies had, at some level, to be simple. Otherwise they became unmanageable. As computerization proceeded, that constraint was relaxed.
Finance achieved previously unimaginable levels of complexity. Until the 1980s, most financial products were rather simple. Now, there's no limit, and the tail wags the dog. Futures markets are far bigger than the volume in the underlying commodity, and zero-sum activity dominates.
AI will accelerate this. There will be businesses no human can comprehend or manage. This may not be productive but will be profitable for someone.
When we go back to early Java, the death of books just came from better IDEs, not even stack overflow (which wasn't there) or Google search (which had little to find). Something like IntelliJ made the very large reference section irrelevant, as you got to see source and Javadocs right there. Intellisense also found most of what you needed blindly. That was 90% of those 6 java books. You'd still see a need for specifics good explanations like, say, Java concurrency in practice for all the original low level primitives. Maybe some madman that could explain the initial implementation of the Calendar classes.
Either way, one needed far smaller books the moment all of that came in, especially because in Java, library code is very readable. Compare that to looking inside a C++ standard library: It's not impossible, but it's of a completely different nature of normal C++ we might write for a business.
> Maybe some madman that could explain the initial implementation of the Calendar classes.
java.util.Date (which was all there was until I think Java 1.3?) was truly terrible and apparently was written by an intern at Sun.
java.util.Calendar was a mess and horrible to use but mostly correct.
> Compare that to looking inside a C++ standard library: It's not impossible, but it's of a completely different nature of normal C++ we might write for a business.
C++ isn't a language, it's a script. Like Latin, it can be used to express English, Polish and Indonesian.
Latin can't be used to express Polish; at least not without extra letters, at which point I think it ceases to be "just" Latin script?
But maybe that was also your point.
> at which point I think it ceases to be "just" Latin script?
I draw my line at 'U'.
I think the complexity issue in science and engineering has also been growing for some time beyond what can be analyzed/designed by a person or a group with conventional software and math. Wolfram argues that some processes are so complex, only a computational method can solve them. If that is the case, AI might be the only path to help us in designing and discovering novel tech / science. It might be the bicycle for the mind that Jobs envisioned.
> There will be businesses no human can comprehend or manage. This may not be productive but will be profitable for someone.
Which also means that it will probably outstrip our ability to comprehend whether or not such things are actually crimes or whether they should be considered as such.
> There will be businesses no human can comprehend or manage.
I believe we're getting close to that in pure math.
> There will be businesses no human can comprehend or manage.
If nobody neither fully created nor manages the business, then we probably shouldn't assume any property rights on it by anyone, therefore all the profits must go to the public.
Check and mate, capitalists!
I was certainly fine doing Java with one book + Javadoc.
Java Unleashed, first edition 1996.
I sometimes wonder if we’re losing HN for good.
Not true for everyone. I learned Rust from The Rust Programming Language ("The Rust Book") and "Rust for Rustaceans." Sure, coming from C/C++, I could have learned the syntax online but learning best idioms and styles required the time and commitment to read a book cover-to-cover. In fact, I've probably read each page in "Rust for Rustaceans" at least twice to ensure that I understood some of the more subtle points. I could have developed a half-baked notion of how the borrow-checker worked by fooling around and reading blurbs on Stack Exchange. But Rust for Rustaceans made clear the more subtle points that might have taken years of tinkering to understand. Thank goodness people still write excellent books on computer programming.
I have a gut feeling that human as a creature learns better when looking at the information from several different angles, both physically and mentally. Been physically I mean looking at the same concept on screen and on hard copy books, perhaps taking notes and mark relevent sentences with a highlighter. Similarly, seeing a concept on physical book and write some short code snippet is viewing the concept from different mental angles. Though I don't have a proof for that and have yet to find a formal research on this topic.
The pedagogy suggests that you retain more when you also have a spatial element to what you are reading - eg you recall not only what the text was but where exactly on the page you read it, and perhaps also how far through the book it was.
Textbook designers know this and use images, callout boxes and insets with case studies/graphs to break up text on pages so that your brain gets extra context to map 'what' to 'where'.
This is (imo) why infinite scroll and mixed order algorithm feeds are such brainrot (even if you are looking at educational content). You try to recall something you read but it was in an ephemeral location in an always changing stream of content.
This is true: a way to remember things is to construct a “memory palace” in a place you know well, where different pieces of information correspond to different locations inside the building.
The solution explorer from Visual Studio flashes into my mind when I think about the codebases I'm most familiar with, and thinking about the code makes the code file come to mind like it's a big piece of paper and it's all represented physically in some form in my mind. I wonder if the way this happens acts like something of an exploit to get those physical textbook benefits.
Absolutely. Whenever I learn a new thing I'll always approach it from different angles - sources from people with varying skill levels (it can be useful to know how another beginner dealt with something!), video form, written text, reading the theory, seeing the applications, trying it yourself in various forms, different constraints etc. For example, since we're on hn - writing some data structure or algorithm you're learning in a few different languages. Doing all this helps massively with building up to true understanding.
(cooking - when learning a new recipe, I'll always find a few versions from reliable sources to compare, see what they have in common, and try to understand the reasoning behind differences)
The brain is a large network and humans learn best when an information doesn't life in isolation but can be integrated within.
I learn the same way but there are different people who learn in different ways. Also some people come with some concepts already understood from past experience or education, it’s easier for to pick things up without needing various angles.
> I have a gut feeling that human as a creature learns better when looking at the information from several different angles
Ever write a piece of code, pore over each line, test the hell out of it, and only when you actually submit the PR and see the diff rendered in your review tool that you spot some totally bone-headed thing you've done?
Viewing a familiar concept in a new context gives you new insights with surprising frequency. Context shifts the priors in the mind. That's why, yes, combining reference/LLMs/tutorials and comprehesive pedagogic tours on rails gives you the best perspective on a new domain.
(BTW: it's due to this effect that company offsites and retreats are good investments, not wastes of money.)
Getting a book is my goto to learn anything new. I taught myself PHP and ended up finding a book 4 years later when I was looking for an answer to something. On the next page was something that would have saved me tons of time so I read the whole book.
Since then I’ve read books on Ruby, Go, Elixir, Docker, K8s and a lot more. By far the best way to get a semi complete understanding of anything without scraping together data from the internet yourself, because you won’t easily know the gaps.
- PAIP - The Art of of the Metaobject Protocol - Modern C
Those alone are the ones I've been re-reading this year.
paip=Paradigms of AI Programming
It was my first book and introduced me to the No Starch Press aesthetic no other line has managed to replicate.
I came here to say almost the same thing. I've been learning rust in my free time because I don't do enough programming at work to scratch that itch any more, and I've been using the rust book as a reference.
Thanks for the rec for "rust for rustaceans" I'll have a look into it.
I've only been using chatgpt for points where i'd normally go ask another dev for another set of eyes to debug something, otherwise all my learning and doing has been mostly the rust book, crates, and blogs about rust, ecs, roguelikes etc etc. It's been so fun!
My method is to get some hands-on experience first with the technology: Tutorials, Getting Started pages, the first chapter of a book. The fumble for some time and getting exposed to various sources of information. Then I take a book and skim it from start to cover, stopping at interesting bits. Then I reread various parts.
Sometimes I start with reading the books. But I already known I won't retain anything deeply. But it will gives me all the right keywords to learn more about the technology.
It always amaze me when I see fellow programmers struggle with problems that could have been solved easily by just reading that introductory book on the subject.
I never bought a programming book in all of my professional career, since the 90s. The only ones I did buy were the K&R C book and the Pascal book at university. They were mandatory readings and basically the only way to learn those languages. Perl? Man pages and online. Tcl? Same thing. When I started working, my company had the whole series of the X11 books (my university too) and we had the Java books. We did use them but Javadocs on the web started to be faster to use than books. Then every reference on the web has been more up to date than any book. Javascript, Ruby, Python, PHP, Elixir, Erlang all of them online. I'm sure that I'm forgetting a bunch of other languages. Blogs are about as good as books about patterns, ideas, best practices etc. I just didn't see the point of buying paper when I could read the same things on a screen for free.
I regularly take my copy of one of the volumes of Knuth's TAOCP off the shelf.
The stuff in those books will never get old, and I often find myself searching for some algorithm or concept that I know I've skimmed over in the past, but no web-searches or LLMs can give me an answer on.
I think it may be due to the lack of open, digital copies of TAOCP available for pillage, as well as the fact that the books don't target a particular language.
Beyond the slowing you to type, the key part of the good books was the considered and mindful order of presentation. This is what had me spending money when I could get the reference manual for free - a guide, a book that taught me unfamiliar concepts in top down fashion, and took some degree of responsibility to be both accessible and comprehensive.
I love the tutoring of LLM, but to this day as a complement to a guided book. I don't find such guided books in computer science much anymore sadly, but for now I still do it in other venues - French, Biology Astrophysics and such. I grab a book, and then use LLM to supplement my reading as my mind always has a myriad questions :).
Not entirely sure why computer science is so radically different - maybe because things change and get obsolete too fast? At any rate, cuddling with a book is still my favourite way to learn a new topic, much as I spend 12 hrs a day eagerly typing and staring at the screen as well :).
Unfortunately even in the old days, a truly good programming book like you’re describing was depressingly rare.
Younger me really enjoyed some of the game programming books by Andre Lamothe.
Most “Learn Language X” books were terrible with over focus on syntax and very little thought into organization.
Apparently the guy who wrote the Camel book on Perl made less than $1000 from that book. I was shocked when I heard about that because back in the day when I was learning that book was incredibly popular and seemed to be everywhere.
EDIT: Edited, not wrote. My bad. That's a crucial distinction. Also, I meant the Llama book, not the Camel book.
That’s not true. I wrote the Panther book, Advanced Perl Programming, and easily made way more than 100k. Of the 25-30 or so dollars the books cost, I got 10% per copy, or $2 after taxes. The first print run of 35000 sold within the first three weeks.
The Camel book was already a huge bestseller, and was one of the anchor books of the early OReilly series. It made Larry a pretty penny
The 4th edition authors included brian d foy, who said "I think Tom [Christiansen] and I worked for about two years to produce the current edition. I certainly wouldn't want to spend that much time again to make less than $1,000... It's a huge effort from the editors and proofreaders and the book won't sell enough to make back the effort they put into it." https://www.reddit.com/r/perl/comments/1ns5r9n/comment/ngmvt...
I wasn't aware of this.
The first edition came out in 1991. The 4th ed came out in 2012, by which time Perl was no longer the duct tape of the internet. Perl 6 had muddied the waters, and Ruby and Rails had peaked.
Still, 1000 is painfully low, esp. for a high quality product.
Yes, you're right. That is the comment I was referring to.
If only Amiga assembler books hit those type of numbers.
Agreed, Books on specific programming language were indeed tricky.
I found books on architecture, systems, or patterns, were more available. E.g. On relational database optimization principles, or Unix system administration, or graphics algorithms and rendering math, etc :)
I've commented on this development before on HN, so I'm glad to see this post on the front page. From a few months back:
"...the fact of the matter is that kids getting into high tech and programming mostly don't read books anymore. How do I know? Recently I was hanging out with a bunch of high school students who asked me how I learned. I said it was mostly via books and man pages. "Yeah, don't sleep on high quality written material. O'Reilly. Wiley. Addison-Wesley. Manning. MIT. No Starch Press. &c...
"Well. You should have seen the look on their faces. I might as well have morphed into the Steve Buscemi meme "How do you do, fellow kids?" They looked at me like I was a total relic or greybeard and said things like "Nah, nobody reads tech books anymore; I learned Typescript from YouTube videos."
> the key part of the good books was the considered and mindful order of presentation.
> a guide, a book that taught me unfamiliar concepts in top down fashion, and took some degree of responsibility to be both accessible and comprehensive
> the tutoring of LLM, but to this day as a complement to a guided book
> I grab a book, and then use LLM to supplement my reading
My sentiments exactly!
People forget that mere data/information without a proper encompassing mental model/framework into which that information slots in to complete the big picture is what education and knowledge are all about. You must see the forest and not just the trees.
This is particularly relevant to CS since there are so many interlinked concepts involved that you can get overwhelmed and drown in the details without understanding anything. Edsger Dijkstra explicitly pointed this out in his EWD340: The Humble Programmer - https://www.cs.utexas.edu/~EWD/ewd03xx/EWD340.PDF
If you haven't built up a systematic and holistic mental model then you have not learnt anything. Top-down design and Bottom-up implementation both have to meet for the system to come together.
This is the main reason you need a good teacher or a good book as a stand-in for the teacher.
Corrigendum;
> People forget that mere data/information without a proper encompassing mental model/framework into which that information slots in to complete the big picture is what education and knowledge are all about. You must see the forest and not just the trees.
should be,
People forget that mere data/information without a proper encompassing mental model/framework into which that information slots in is useless. To complete the big picture is what education and knowledge are all about. You must see the forest and not just the trees.
I tried to introduce a partner to programming with an introductory Python book one year ago. It was brand new on the shelf in the impulse purchase area at Micro Center. It looked nice on the outside and decently vetted at a glance of the intro and a page or two, I trusted Micro Center (undeserved in retrospect), and I was in a bit of a rush. I gave it to my partner to try out on their own and they started having trouble pretty quick, and it wasn't really their fault - it was using a lot of technical terms and concepts with no explanation that you wouldn't expect someone to know who hasn't taken a few Computer Science classes.
And the best part.. it was Python 2.7. Micro Center sold me a brand new, glossy covered "Learn Python" book based on 2.7 in the year Anno Domini 2025. Its instructions didn't even properly tell you to install that version, so if you even make it that far you're going to be lost why the syntax is wrong for every example.
Moral is, books are just as easy to strike out on as a bad online resource. Honestly, I feel like Googling "x language tutorial" is probably going to get you the best results much more easily than picking something off the book shelf - if I can't vet a book reliably, and I already know the damn language inside and out, what hope does a newcomer have?
There is a good ending at least. Among a bunch of random stuff I got from an infrared spectroscopy shop that was closing down and practically giving away all their cool equipment, I found a copy of K&R C. I'd never read it myself but I'd heard so much about it online over the years that I figured it was as worth a try. So I got the victim of the Python book set up with WSL and gcc, and they had a much better time that time around.
I did something similar with my partner, though I didn't look at a shelf in a physical store. We ended up going with How to Design Programs. There were some small terminological things that I helped clarify. (I can't remember what they were.) But overall, I was blown away by how much she was able to just pick it up and run with it. She used just the book and a little bit of help from very cheap and basic LLMs (not for writing code, just for answering questions) did really well, until life got too busy for her to put more time in.
Overall I think it's a really good book for this kind of thing: https://htdp.org/
> Moral is, books are just as easy to strike out on as a bad online resource. Honestly, I feel like Googling "x language tutorial" is probably going to get you the best results much more easily than picking something off the book shelf - if I can't vet a book reliably, and I already know the damn language inside and out, what hope does a newcomer have?
I don't think language tutorials or "Learn $LANGUAGE" are good targets for introducing people to programming. That's true whether it's a book or a blog post or a YouTube tutorial. You want to teach computational thinking per se before focusing on a particular language. Something like HtDP or _The Little Schemer_ or _Logic, Proof, and Computation_.
Even if you want to dive in with practical skills before developing a foundation, you still don't really want books with targets as broad as "Learn $LANGUAGE". You want something like the _Learn Enough ... to be Dangerous_ series, probably starting with the entry on Command Line and then moving on to the entry of a target language (JavaScript, Ruby, Python) in the same series. Then you can move on to a book that tries to teach more or less a whole language, or a programming paradigm through the lens of a particular language.
If your goal is to learn programming, it doesn't matter that much if the programming language is obscure or the toolchain is out of date. But if your goal is to learn some language to work with peers in it at work or something like that, then yeah, you gotta check the publication date.
For a lot of us, maybe our first programming book or class was presented as a "Python course" or a "Java course" or whatever, but that doesn't really represent the goals of a first encounter with programming no matter what your strategy is.
> Stack Overflow is receiving about 3,800 questions a month
The crazy thing is that SO is dying so quickly that it's already under half that amount.
https://data.stackexchange.com/stackoverflow/query/1926661#g...
Did anyone actually like StackOverflow?
Any question asked would be edited beyond recognition (and usually into brash rudeness). Half the answers were demanding ever increasing proof of work, and the other half told the OP that they shouldn't even be trying to do what they're doing. The only useful thing were opinion based posts from people with domain expertise, and SO kept trying to ban and remove those. It was the least helpful place online, but the most accessible, and it survived for lack of alternatives.
I'm no AI booster, but answering simple questions about well understood topics is a perfect fit for it. Good riddance to StackOverflow.
Yes. In the beginning they didn't ban opinion based posts (that's why you can still find some of them that were left up for "historical value").
I liked Joel on Software, I liked Coding Horror, and I liked the idea that two internet guys could just identify a problem like that, start a company and fix it.
There was a Goldilocks period of several years where contributing answers was fun. I joined in 2010 and was most active until about 2016. It felt good to help people and since it was in the open, it felt like a resume booster as well, like having an active GitHub profile.
Stack Overflow was a nice experience for me because I was able to hit 2k reputation fairly quickly, in just 30 days of posting and 6 weeks calendar time. That being said, it never had the community feel of places I spent during my formative years, which were more on forums and IRC.
Here's a conference talk I gave on how to gain Stack Overflow reputation from back in 2018, selected out of 5 submitted talks. It's amazing how fast times have changed from before, during, and now after.
https://grokify.github.io/stackoverflow-the-hard-way/
> Did anyone actually like StackOverflow?
Absolutely! It answered so many questions I had. I remember when it was relatively new, and I'd just heard about it, it profoundly changed how I found answers to programming questions. Suddenly I could find people having similar problems that I had, who had asked the question, and had actually gotten a useful answer from someone who knew!
It wasn't perfect, of course (nothing is), but it was orders of magnitude better sifting through crap blog posts and confusing reference material. (Not to mention sites like experts-exchange.)
I did originally, when it collected a bunch of obscure knowledge and made it searchable and useful. It was fun and rewarding to put things you knew into the common knowledge pool, and everyone celebrated a successful competitor to Experts Exchange. The SO model had a few major flaws that became impossible to ignore after it was entrenched. First, the reward scheme rewards the exact opposite of what it should incentivise: common questions are hit by many users and therefore attract lots of upvotes while answering the really hard stuff often meant you didn't even get your answer marked as "accepted" (because the OP had given up and stopped checking the site). Second, the site deliberately cultivated an "editor caste" in the Wikipedia style before the failure modes of that model were well-known: well-intentioned newbies get shut down by miserable yet untouchable people who play (and sometimes help write) the site's rules. Third, the stated desire to identify canonical answers to questions had no clear way to handle the evolution of the software people were talking about. So you'd have highly upvoted answers that might have been referencing deprecated libraries, and it was very hard for the newer answer to gain traction via either internal or external search.
It was also unfortunately before the retro boom of the 2020s, so questions about older arcana were often vulnerable to being closed instead of answered.
I had a pretty good time asking a question about Prolog. It was a really interesting experience knowing that there's someone out there that high proficiency in a very niche language, patiently explaining to me an issue that they have probably heard a million times from yet another imperative programmer. They even have their own website advocating for Prolog, etc.
Now, I could imagine an LLM would be able to do the same. However, I understand that this is only possible because of people like them. I don't think the youngins that started with LLM directly would appreciate the humongous amount of data and discussions online that enables that. The internet is so much bigger than just Google, Facebook, Youtube and Twitter.
For me the main problem of SO isn't even the moderation or human interaction. Even if a question is answered successfully, the entries have a short shelf life because modern APIs move and break so quickly. For example, I tried learning Ansible only through books and SO, and it was just frustrating. ansible_sudo_pass was deprecated for ansible_become_pass, but there are still many books and SO questions that still reference ansible_sudo_pass.
In the Good Old Days (or my rose-tinted memories of them), Java/C books and answers will always work even if it's not idiomatic, and JS/Python material might break once in a decade over a major migration like Python 2 to 3. Now I look at Ansible or Zig, copy a simple toy program from SO or GH, and just find that it doesn't work, because `sudo` became `become` and `fs` became `io`. There is simply no way for books or SO to keep up.
Java and C are older languages which have either solidified (C) or are very careful about breaking compat (Java). Most languages nowadays are indeed in the "move fast and break things" mode.
I liked StackOverflow for the answers.
But asking questions was hell.
It was great 15 years ago before the Iron Law of Bureaucracy kicked in and the powermods took over.
Also it solved the Experts Exchange problem, which was an absolute cancer on the web for years before Stack Overflow destroyed them.
I liked it, still find good answers, and it was gratifying to provide answers when I could.
I always thought it was a perfectly fine service for lookup. Asking a question though required a very specific confluence of circumstances to actually be a useful thing to do, so I only did that like 1-2 times in many years of reading it from google.
StackOverflow was great when I was a very junior dev working on JavaScript apps. Anytime I ran into a roadblock, there was often a relevant post there to help me. As I become more competent though, I realized that reading the documentation directly was usually a much better way to get answers to my questions, and I stopped visiting.
It was pretty dang useful when there was no alternative, and I’m sure that many people physically could not have performed their jobs without copy-pasting from it.
But yeah, I don’t know how anyone could have any affection or nostalgia for it, people were massive jerks and it was not a pleasant place.
Yes, I liked it. When it debuted it was a massive improvement over expertsexchange, who had previously dominated the Google searches with bait and switch previews.
It may not have aged well but to say it was always crap is rewriting history.
I have found StackOverflow useful on rare occasion, but the friction, idiotic moderation culture, and high noise-to-signal ratio usually made it somewhere I didn't want to return to.
I was just thinking to my self the other day how it's nice I don't need to stop what I'm doing to make a question that's answerable by someone else. Ai can answer my question without me spending time recreating the problem and stripping out all of the irrelevant context
I thought StackOverflow was pretty great. This is an unpopular opinion but I think a lot of the questions that were closed really deserved to be closed. Otherwise it would have been a firehose of the same basic questions over and over again. For every person who posted a question and got mad that it was closed, there were probably 100 people who googled something and found a useful StackOverflow answer that was relevant and useful to them although they never posted their own question or even made an account on the site.
> Otherwise it would have been a firehose of the same basic questions over and over again.
You’ve just described a large chunk of Reddit.
Their poor internal search doesn’t help.
Ouch! They are down to ~1,300 questions per month. If we assume a user asks 1 question per year, and we assume 50 lurkers for every one who asks a question, we're at 800K monthly visitors.[1]
That is tragically low!
[1] 1300 x 12 x 51 = ~800K. x12 because every month, 1 user out of twelve asks a question, and x51 because there are 50 lurkers for each poster. I'm sure my assumptions are questionable, and curious about corrections, but we're still at very low numbers.
This is why you never pay $1.8 billion for a social media company.
It never ends well for the new owner. Not just Stack Overflow but also Tumblr, Vine, MySpace, Twitter, and more. Instagram might be the only exception.
Good job on the founders for selling at the peak though.
Instagram, YouTube, WhatsApp seemed to work out well.
It’s always more complex than you think
Insta and YT were bought fairly early on the ascent and then pumped hard with some resources and autonomy before being folded in completely. WhatsApp is a legit counterpoint though.
And Google already had Google Video when they bought YouTube. They retired their own platform to go all in on the acquisition.
Are YouTube and WhatsApp social media?
Yes, few of the prime examples?
The crazy thing is AI uses stackoverflow, certain parts of reddit, and other forums for a reference and without it will soon become unable to keep up with modern technology. And they are all dying.
The risk is that beyond hobbyists technology will stagnate. It’s already much more productive using one or two frameworks over the rest of what’s available, and without training data it won’t be able to advance beyond those current popular frameworks.
Interesting looking at the data, the questions always seemed to peek in March. Anyone have insight into that?
A lot of companies don't hire at the end of the year because of holidays breaking up schedules, coupled with strapped budgets by that point. New year starts, budgets are refreshed, everyone is back to work so hiring pipelines can roll again. Get hired in early February, on-board for a couple of weeks, really start to dig into work at the end of February and early March. You don't want to look like you don't know anything, so instead of asking your coworker sitting next to you or just a Slack DM away, you throw a question up on Stack Overflow and hope to get an answer that gets you unstuck.
Too early to call, but that is a crazy stat. Wow.
Too early to call? It's hit rock bottom. I've never seen a major site die so completely before.
Groupon? Did an IPO with a 12.7b valuation and was mostly dead within a year.
Digg was a major site that had a surprisingly fast turn of events. There are some good lessons from that.
MySpace comes to mind. Slashdot maybe.
Both before my time. These days it seems like every site is able to withstand pretty much every controversy. Facebook should have died about 5 times by now but the company is as strong as ever.
LifeLog doesn’t ever die,
it just takes the form it needs to.
https://en.wikipedia.org/wiki/DARPA_LifeLog
Google Search was looking bleak at one point, recently, based on deltas alone.
It's a shame because to guide a coding agent, you need to have the right grammar and vocabulary to describe what you want and how you want it to be built. Junior devs should read not because they need to know how to write the code, but they need to know the vocabulary and the grammar to guide the agents.
At work we had a dispute over if AI should be allowed in the technical interview, we resolved it by both running an AI allowed and not allowed interview. Something interesting we found is that every candidate either passed or failed both. People who could not program manually without AI were not able to get the agent to complete the tasks either.
I've seen people type questions in to the LLM and get the answer they asked for but not the one they needed/wanted because they didn't have the correct terminology.
Junior devs should still read to learn how to write the code.
Surely the desired state isn't that nobody knows how to write code any more right?
I still look at code and find that agents work best when I write the foundation and then vibe on top of my hand-written code. Works extremely well because agent picks up my style accurately.
Hopefully your management is trying to answer the following question: is said middle-career dev outproducing their past self, and others who still look at code, with:
1) submitted changes that don't need any more revision than their previous human-written ones when it comes to code review?
2) no increase in bug incidents
3) no slow-down in peer work or future work caused by humans-or-agents having to fight increasingly overly-complicated, poorly-factored, copypasta-style code or god methods? (this might not be evident yet)
(Another question is how well is this person doing their job as a reviewer, making sure to keep the product quality bar high, without looking at code?)
Anyone in an org with coworkers no longer writing code needs to be making sure their managers have a pulse on the long-term health of the product to see who's doing it well (lots of test coverage, shipping only super-high-quality, refined-from-multiple angles stuff) or just being lazy (shipping first drafts that continually add debt to various files and methods).
Do you know how to operate a punch card?
Yes, and IBM has current documentation if you need to that has been updated in 2026: https://www.ibm.com/docs/en/zos/3.2.0?topic=considerations-u...
It's generally and simply an encoding of what amounts to binary machine code which you translate via assembly code acting as a deterministic compiler from assembly to machine code if you are doing it manually.
LLMs aren't a deterministic process and human languages aren't as clear as machine code and assembly.
O.M.G.
I last used a card punch in circa 1980 or thereabouts...
Yes. But Python isn't punch cards behind the scenes so it's not the same thing at all.
Besides. You're not asking <AGENT OF THE WEEK> to produce punch cards to jam into the PDP.
someone needs to try this
I've never programmed before good compilers existed, but I still know some assembly. For what I currently do it's used rarely, but it's still quite valuable on occasion. I don't see any reason LLM-assisted programming wouldn't be like that; for sure the various C compilers sure seem like they're trying just as hard to produce results you don't want.
If I transported you to the 1960s and gave you a wizard that could punch cards for you with a chance of making a mistake, would you still bother to learn how to operate a punch card?
What would you do if the wizard gets stuck? Coarse the wizard into making the black box work through somebody else's direct perspective on the problem?
I don't think this is comparable.
It's more like a restaurant. You give an order and a little while later, a finished dish appears.
The difference between a Chipotle and a Michelin starred establishment is that Chipotle is just assembling a mass produced good. A Michelin chef knows their ingredients inside and out; knows the science of how those ingredients work; knows varied techniques to extract flavors, create textures, etc.
Anyone can work in a Chipotle; few can achieve a Michelin star.
> Do you know how to operate a punch card?
I remember! You created a control card, with tab stops and other controls, wrapped it around a control drum, and then had an easy time punching your source FORTRAN!
I just looked and found my old control drum, in the back of my junk drawer. But I can't find an old punch card machine in there, most have lost it somehow.
Do you maintain a system in which punch cards play a critical role?
Do you let your Jenkins re-inference your entire program from markdown files on each push?
And to operate a self-driving car safely you need to keep your attention on the road so you can take over quickly when needed.
But that's not how human nature works. Most people take the path of least resistance. Especially when the primary purpose of the invention is to offer convenience.
I was wondering about this myself, but given everything I know about AI. Won't the vocabulary slowly and subtly change as common people try to develop software, not knowing the jargon? Won't the AI systems learn from the prompts and adjust their understanding of what's trying to be accomplished?
Personally, I've cracked very few programming books and I've been building websites since ~2004 back when magazines and books were the best sources for information. Some people learn skills from books well, and some people end up bewildered and confused until they can actually try it out and see how it works. I need to explore to discover and learn.
I did find "Eloquent JavaScript" very helpful, it didn't just get me started on JavaScript but actually introduced that whole computer-sciencey side of programming that I hadn't encountered in my various markup and stylesheet language coding. I never finished Eloquent JavaScript though, it was like a springboard that got me into JavaScript (which is dynamic and has an interactive runtime) and as soon as I could be having a conversation with JavaScript at runtime, from there I continued learning by talking to the REPL and seeing what happened.
> The kid who is right now learning to code by chatting with an agent is not a worse programmer than I was at 12, hunched over Learning Perl, retyping examples that would not run because I missed a semicolon.
To be honest, I'm 17 y.o., I'm coding by chatting with an agent, but it seems like we can't tell the distinction too absolutely.
At the first time writing a React app, I forgot to name a file with a .tsx extension and I used .ts instead, then spotting ugly error lines across my JSX syntax, confusing and sharing with my friend, and laughing this little funny thing all the day.
I once spent the whole afternoon choosing a js linter, reading their docs and perceiving different tastes. In my early twelve-ties (uh this sounds funny too) I'm always arrested by configuring Windows PEs, installing different Linux distributions on my PC, etc. Today I still read tech books, alongside videos, articles and also chatbots. Chatbot is a new tool, but there's no doubt it cannot replace other media types and what they bring to us/me.
What may I express is that a natural interest in programming or computer things cannot really be overwhelmed by LLM things. I don't know how to use vim skillfully since I majorly used Windows at my early age and I'm not familiar with vim's logic, but this practically doesn't stop anything. I still found Linux's fantasy, at last. And same for LLMs.
I just bought $600 worth of programming books and I’m pretty stoked to read them. Mostly a lot of titles considered “the classics” but my brain works best with hard print materials.
This is a good investment. Your fingers will remember things long down the road and you will be better at having an AI bullshit detector for code development.
would you mind sharing the names of the books you bought?
https://teachyourselfcs.com/ is an excellent list
After being discouraged by the ever looming "threat of AI" in programming, I took up some older books. If you didn't get it, I highly recommend "higher order perl" https://en.wikipedia.org/wiki/Higher-Order_Perl
That book has some of the coolest programming techniques. Even if not all of them are applicable everywhere, truly a good refresher. I don't know perl but write the examples and follow along in JS. Great stuff.
haven't done it physically in a long time, but surely virtually.
my 0.02 on the matter: things are stacked against you even if you are not strapped for time.
a vast majority of the stack is changing too fast and non-digital versions are not appropriate beyond learning the base of a language or high-level design patterns.
as publishing became super accessible, there is also a plethora of options, and increasingly difficult to sift between the lower-quality stuff and the diamonds.
for most people, very few (kinds of) programming books exist today that could stay relevant beyond the university.
I do not think they are too valuable anymore as references you keep coming back to, that use-case has been long superseded by the internet, well before AI. But for a novice learning programming, I still believe that there's absolutely no substitute to reading a book from cover to cover.
I have seen a myriad examples of people that have half-learned a language from random snippets in the web (or from AI now), and the struggle never ends. And taught courses or videos tend to be too time-inefficient and too shallow, more of an intro.
A good book is still by far the best way to get the complete and cohesive overview of a technology and put it into context. It gives you the kind of mental model that allows you to solve fresh problems from first principles thinking, because you understand the whole breadth and depth of how the technology works.
I once bought a programming book in the 1990s. Since then, I never found the need for it anymore: you could simply find all the resources you needed online (and long before ChatGPT).
StackOverflow is kinda forgotten now, but there was a time where you could find the answers to pretty much all your programming questions there, and if not, you could simply post a question yourself (and yes, there was a time where SO was pleasant to use and your question didn't get immediately shut down by overzealous admins).
I personally never liked learning a programming language from a book. Like, in the early days of Java, I would get so much more use out of the then excellent API docs than out of secondary material.
And of course, programming is one of those disciplines where you really have to just try it out to really make progress.
Books make the most sense as a guide, not a tutorial or a reference
I think it might have been a cognitive development thing, but at some point in high school, Stroustrup's "The C++ Programming Language" just kinda clicked for me, like I hadn't been reading it properly before.
I tried to get started with programming with books. But I just didn't seem to be getting anything, I'd read the chapters and not really learn or understand it. What really worked was interactive education like Codecademy and some others I have forgotten the name of.
Reading a small paragraph and then immediately putting it in to action made everything clear far better than books did.
It's fascinating the different ways human minds work and learn. I'm the same way.
It also shows up in other areas like language learning where some people prefer classes and grammar books, and others prefer to just learn via exposure to a lot of content.
I think this is probably just the common experience. Programming is probably best learned hands on rather than through a book, which is why the use of programming books has fallen off a cliff once we got other options. Even before AI I think programming books had already fallen off in popularity.
There would be some things books can provide that are probably better than other options, but for a lot of hands on skills it seems best to learn in a hands on way.
Maybe, I haven't looked into it too much, but among the people with a preference for classroom and textbook based learning there does seem to be a large degree of fear of failure, which influences what might otherwise be a different natural preference. Fear of failure is exacerbated by making mistakes in public, but it seems to even apply when nobody is there to observe someone making mistakes.
I don't feel that LLMs are replacing books for professionals.
The problem with LLM learning is not that they can't explain a concept, but you have to know what to ask in the first place. To get a deep proper answer from LLMs you need a deep precise prompt. When you learn the new topic, you don't know about the topic itself, so you need a properly structured interleaved material to grasp new concepts.
After you get the concepts from books, you can prompt the LLM for particular non-covered subjects you are interested in.
So even these days when I'm interested in some topic, I sometimes even ask the very same LLM to provide me top-10,top-20 books for the topic, with short overview for which type and level of readers and style they are, pick a few and read them.
LLM is a replacement for docs and simple questions on StackOverflow, not for the real organized knowledge that requires a few hours session of concentration to understand.
You can ask them for high-level overviews of a given topic, and then drill down into individual sections of its response. With the most recent iterations, many of the times I have blindly stumbled into something new, it has pushed back with warnings
This seems like a good opportunity to share my recent photos from a bookstore in Tokyo… just a crazy number of computer books. Mostly in Japanese language.
https://imgur.com/a/Kygj5IM
Many of those are not programming books, but they do seem to be recently published, I wish my Japanese was better.
Ironically, I just ordered a hardcopy of "Python Crash Course". I want to learn it for personal use and prefer to have the book at hand, rather than in PDF/electronic format. And no, I'm not letting AI or LLMs do the job for me: I prefer (rally: need) my brain to stay active.
My two favorite non-fiction sections of the bookstore are dead and dying. The computer section, if it still exists, is just things like _Excel for Dummies_, and the philosophy books have all been pushed out by self help and dime-store "metaphysics".
But I've started reading programming books again recently, on my e-reader and on my laptop. People are still writing them, and they're still good. We should all go buy some!
For my own usage, I don't see chatbots as supplanting textbooks. If anything, they pair well; reading a book from cover to cover gives me the breadth and depth I want, but LLMs are there for tangents and questions that come up along the way. I was reading a book and chatting with Claude like tihs just yesterday, for a few hours.
Curiously, I do buy and read tech books. My hobby is legacy OS kernel research so I bought some second handed books on old Linux (kernel 1.2) and NT (3.1). It is fun to research so I don’t use AI often for side projects.
I enjoy reading really old programming books, the 1997 edition of Learning Perl mentioned in the article being a perfect example. I don't fret over the exercises, but if it's well-written it gives a glimpse into how people thought about technology/code/computers at that point in time, like the tech equivalent of flipping through old newspapers.
Are you thinking of getting in to NeXTSTEP 3.3/OpenStep 4.2?
This predates LLMs. The internet has been the primary source of programming knowledge for decades.
Books are still good for the fundamentals of course.
Stack Overflow provides marginal value when there are LLMs. Great technical books on the other hand still provide tremendous value and complement LLMs in a learning process: a book provides a fact checked, curated set of topics with clear start and finish (a structure) and LLMs help with any blockers or missing context that readers will encounter.
The problem is knowledge gaps. You don't know what you don't know.
A good book deals with that.
For example, my Effective Pandas book teaches best practices that most never learn because the blog posts that train the models are actually espousing anti patterns.
(As an author I'm keenly aware that fewer folks are buying books.)
I don't think it's fair to blame this on LLMs. The last time I bought or even looked at a book of this type was easily 20 years ago.
And I wouldn't have it any other way. I remember my ginormous Visual Basic 3 Bible from the 90s with great fondness and nostalgia, but thumbing through a dead-tree book to figure out computery things is just not a thing I care to do.
Having said that, I still think there's room for computer related "books"... of the digital kind, at least. It honestly feels a little absurd to even consider buying a physical book for this sort of purpose.
I still read programming books, especially if I want to check out a new language and get the gist of its capabilities and how are things are done in that specific environment. Also I prefer to read a book written by an author that I know has the experience and the insight to actually write the book than read random sources on the internet. Or maybe I am just used to it.
I've not read a programming book for years, even before LLMs came on the scene. Didn't see the need to when there's so much information online.
These days, I don't use LLMs for actual programming but will ask them questions in lieu of doing a web search. It's like documentation I can chat to. Basically a more efficient blog post or book chapter that happens to be dedicated to whatever it is I'm working on.
I started learning software in the early 2010s and I read a lot of software books like the ones mentioned in the article. I continued reading them as the years went on, but the last one I bought was probably 4 or 5 years ago. Naturally, I probably don't need books as much as I used to -- I can generally pick up something new and know where to find what I need to find, "learning to learn" and all that. I also think they are better for foundational knowledge; many times the books become outdated very quickly. So if I was gonna attempt to write a database or learn distributed programming theory, I'd probably pick up a book, but if I wanted to learn a specific tool (or most languages) I'd probably stick to the web.
If nobody cracks open a programming book, then I must be nobody - I read books all the time - both hardcopies and digital. They're my bedtime reading
I do buy programming books!
I even sometimes read them without touching a computer.
Studies show that books is the best media to learn. Forget video, books + practice (now with AI explanations) is my learning methodology.
But nowadays you can read books, and ask AI to help you read them.
I'm curious if someone built a proper interface for that usecase.
I always thought it would be fun to write an o’Reilly book. The format seems like a fun way to organise information on learning about a topic.
I type this comment flanked by my shelves of computer books. Most I keep for sentimental or historical value. My first edition K&R, the first PostScript Red Book, the volumes of The Art of Computer Programming, and many animal books. In addition to what the author said, what saddens me is that most developers today will not have these milestones of their growth as a software engineer to look back upon. Our history is literally evaporating into the cloud.
This might be an unpopular thing to do, but lately I've been literally having claude/chatgpt write books for my personal consumption: things to brush up interview skills, python, system design, and even agentic coding. I've also had it aggregate substack posts for me, etc.
I have it generate an ePub file, and drag and drop it to my kindle.
It's a great way to take information with me, out for a long walk where I can focus on it and absorb it.
How are you sure that it hasn't hallucinated content that you end up relying on?
I also notice nobody talks about big-O performance bounds anymore.
I convinced my mom to buy me a book on C++ when I was 13 (25+ years ago). I made it to page ~75 or so before I got bored of reading, and needed to start building stuff to stay interested. I don't think I ever looked at it or any other language book again after that.
That's also how one of my first book that's focused on the language (instead of those focusing on how and what to do to build the cool stuff) feels like. Just pages of things that would've probably keep a language lawyer giddy but my blue-collar brain skip to sleep.
Head First series try to take different approach, but by then my brain has already too used to question every single sentence and goes on its way exploring which books simply aren't designed for.
I would argue in the case of Rust that the digital book is much better than the physical one, I mostly bought it to put it on my shelf.
Maybe someone disagrees, I'm open to hearing what the book has taught you that the digital docs/book didn't.
I recently purchased Computer Systems: A Programmer's Perspective [0] and am currently working through it with pen and paper.
I've only had peripheral exposure to writing in assembly and "systems level" programming so I'm really quite enjoying it.
[0] https://www.amazon.com/Computer-Systems-Programmers-Perspect...
Nice; This is the only book of which i have all three editions.
You might also want to get the 1st edition to understand how the earlier 32-bit programming differs from the current 64-bit programming. You can probably get it for free/throwaway-price.
Pair your CSAPP book with Advanced C and C++ Compiling by Milan Stevanovic and you can become a "Low-level System Programming Guru" ;-)
Reading a well written programming book will put you ahead of 99% of other programmers using that language. Most programmers learn some subset of a language to get things working, and never learn more than that.
> You can’t imagine writing software without Claude Code anymore.
I know it's a hyperbole but repeat a lie often enough...
I'm reading The C Programming Language, 2nd edition (the K&R book), and working through all the exercises.
It's a great book, although it's forcing me to admit that I need glasses (the print is so small)!
I enjoyed reading Expert C Programming: Deep C Secrets by Peter van der Linden after reading that in the early 90s. Also the C standard from the time and the attached 'Rationale' document https://nvlpubs.nist.gov/nistpubs/Legacy/FIPS/fipspub160.pdf (The rationale is 234 pages in). Also this 1995 book version of the comp.lang.c FAQ https://c-faq.com/book/ and https://c-faq.com/
@cylo (I think the author) - get in touch, I'd like to use this essay as part of a photo book project. With your permission of course.
This post feels misleading or possibly just nostalgic. The books referenced still exist because the people creating the technology are still writing them. They're also creating video and attending conferences (virtual or otherwise). That's not going away anytime soon. But perhaps what has changed is how the information is accessed.
Do you need to debug some ancient perl? Sure, ask Claude. You'll get an answer and move on. But if you're looking to learn how to use the next technology before it's mainstream, you'll go looking for that material. And it's there, where you expect it to be. Do you still watch network television or haunt Blockbuster? Times change and the market moves on. The interesting thing is, people like books and they're also available for those looking for a physical artifact to hold. Most of what's available is POD. Depending on the title, you're hitting the print button when you place the order.
Nobody code anymore!!
Before the rise of AI, developers were basically doing copy/paste from StackOverflow. There are few developers who knows how to code.
Even DevOps engineer, I worked with CI/CD "specialist" who couldn't work for sht, if you asked him anything outside StackOverflow, he couldn't answer.
But there is a silver line for everything.....
I am not a developer but I learned to code with Perplexity AI, but not copy/paste, anything I didn't understand I asked it to explain why.
I wrote my first python app with classes, functions, 94% code quality coverade, the mock unittest was 4x bigger than the actual code. I can start a python script from scratch without looking at my own examples.
I would never be able to do that within a few weeks by looking at forums that often have worse response than AI hallucination.
I believe it really depends on the programming book. For introductory topics (Learning Python, HTTP Basics) one is better off with sources from Google or GPT generated since they are much simpler, faster to access and high quality sources out there. But for more low level topics, books like "Designing Data Intensive Applications" are still the first option for most people; you can't easily find corresponding material online that provides the same level of depth, structure, and context.
I had a taste of OReilly books through ACM/IEEE. A few years pass and I'm working on some obscure legacy code and a book saved me. Needed it in a hurry so signed up for OReilly books for a year even though only needed it for four weeks. I have renewed it since and enjoy it, being able to dip into topics, just for fun, written by people telling a story. The long form of a book is quite different from SO and new books keep coming out. I'm hooked.
Hot take: I'm reading programming books more now. There is so much to know about any technological topic and an LLM can tell you all of it, but it's overwhelming. What a book does is disciple and structure what you need to know, and what order to learn it in. Start with a book, grow your knowledge and put it into practice with an LLM.
Good thing I’m actively writing a programming book!
(Reading HN to procrastinate.)
It doesn't matter so much if the LLMs are better or worse for learning things. I tend to think much worse in the long term. The problem is the reduction in choice. Soon we won't have web search. No user generated content. No genuine personal interaction. No blogs. No personal computer industry. No tech book publishers. Its all going to be LLM generated content owned by a small group of people. It sucks. I am in the opt out group wondering what exactly will be left to opt out into.
There's a wide world outside of tech jobs. Most of it isn't immensely lucrative, but I hear it can be quite fulfilling
Hey if it means anything there's other people here in the opt out group with you
Maybe we can build something else in parallel for the other opt-outers
I still have my copy of Learning Perl. Mostly because it represents a milestone in my learning. I have kept and obtained a number of other books simply because they are antiquated, special and/or classics that are interesting to read even if they are not that useful to me, like Codd's relational book, or Calendrical Calculations. I hope the AI is trained on these sorts of books, so that the knowledge can live on in a different way.
"there are coffee stains where the caffeine blots are somehow still a valid Perl program"
Having coded Perl for years, I take that personally, pal...
It used to be that you could buy a book and use it as a reference for years. That stopped being true sometime in the 1990s, as the half life of book value declined rapidly.
One persistent internet and Altavista became available it was just a matter of time, and now we're there. The whole move fast and break things culture won.
Like Chesterton's fence, you don't know what you're got until it's gone.
It depends on what kind of reference book you get.
A reference book on a particular language is going to have a pretty short useful lifetime, since any language of significant popularity will evolve relatively quickly.
In contrast, a reference book on general programming knowledge (e.g., design patterns) could very well last a lifetime.
Sometimes I'll be in a large used bookstore, like the kind of cavernous ones you find in places with cheap real estate, or at a charity sale and there will be a book with a title like "Learning J2SE 1.4" or "XHTML for Dummies" that is just utterly and completely useless.
I wonder if these books will eventually be interesting, the way old ham radio or slide rule manuals can be, or if they're just forever doomed to irrelevance.
You can still do it too, but you need to see through the fad and not go for the shiniest technology out there. I've been reading "The Design and Implementation of the 4.4BSD Operating System" because it's basically the best explanation about OpenBSD as it (and NetBSD) still follow the same general architecture.
Another book that's worth its weight is "The Linux Programming Interface" and "The TCP/IP Guide". Also you can probably buy "The Go Programming Language", "Programming Erlang", and "Programming Clojure" and still come ahead. As long as you choose to learn technologies that have thoughtful design, or has a standard (even a de-facto one), you're golden.
Ive bought 100 or already more programming books in the last 10 years. Ofc I didn’t read all of them, maybe like half read half of them.
Love the closeout of the article: "On page 112 there are coffee stains where the caffeine blots are somehow still a valid Perl program."
The “higher level of abstraction” phrase used to describe what LLMs are in relation to programming… That phrase needs to die.
They still come in real handy when you're stuck hacking away in a windowless SCIF.
I printed a ton of books from libgen in the past 10 years.
Using paper just works better for me.
I do use LLMs for asking questions, and other learning tools.
I almost feel nostalgic for the bittorrent era, when piracy (or unauthorized distribution) was done the old-fashioned way!
Though it's a shame that current copyright law is incompatible with building an effective digital library that isn't crippled with restrictions designed to impose the limitations of paper books (or worse) onto ebooks (while removing benefits such as first-sale doctrine.)
In the age of LLMs speaking about "piracy" is absurd. LLM users are reading the same books, just algorithmically post-processed.
> I almost feel nostalgic for the bittorrent era, when piracy (or unauthorized distribution) was done the old-fashioned way!
Libgen is a huge improvement. During the period you're referring to, what was available was determined by popular demand, which meant that books weren't available at all.
imo books for programming language should be roughly a guide to docs, with better context collocation and more elaborate examples, otherwise it would be really painful to use language
you can't pick up c++ from the docs and the language itself is a monstrosity, and for that you must have book explaining why do you have 30 types of pointers, golang in the meantime have excellent official guide, and you don't really need any book
I used to read a book or two when diving into a new language. But I think the last time I did that was in 2017 when I learned Swift. That was supplemented with a lot of Stackoverflow.
I think the next deep dive was in 2022, when I learned Go. But that was completely from online sources.
Funny, I think a dead-tree book (or PDF you won't copy from) is a great format to learn programming from. Retyping things into the editor is underrated, as a form of engaging more viscerally with the material (brains work better when they get to play with the clay), as a way to build muscle memory for the language, as a way to absorb idioms by osmosis, and so forth.
Different brains, different strokes, but I think the book format is not wrong, the teaching and learning expectations are.
I still even now feel that K&R C should be a mandatory reading for CS students, but alas.
Yes I have both copies, prefer the ANSI C second edition my self. I brought another second hand C programming book and when I was working through the exercises in the mid 2000s the GNU C compiler kept issuing warnings as the code used gets() to read strings. :D
> They were thick, they cost about $50, and they had titles like “Learning React” and “HTTP: The Definitive Guide”.
The most effective way to make money from open soruce was (for a time at least) to be Tim O'Reilly, Amazon, or Google.
I use AI to summarize a book because I need to use it asap for my professional works. But I do reading because I enjoy learning process, the knowledge is a bonus, not the goal
i have the full version of that book, Learning the vi and Vim Editors... i still read it!
> Nobody cracks open a programming book anymore Not true for me. I still read the "Learning Rust in a month of lunches" although I ask AI to write Rust code all the times.
The main issue I have is by the time I got my brick delivered from Amazon about SwiftUI 3rd edition, the 4th edition was out. It's a door stopper now.
They're also incredibly useless. If I get a digital book, I can search it, highlight and categorize. And it doesn't weigh or occupy the size of a phone book. Many programming books are just gnarly and unpleasant for casual reading (unless it's a small thin book but it won't go into enough details).
I won't get into the copy pasting argument because someone will inevitably argue about how you should type the examples by hand to learn more! but not consider how many examples are in a book...
So when it comes to buying classics like K&R, get a printed version! But when it comes to 400+ pages, nope, buy digital.
So I think people still crack open books, but they're not paper ones nearly as much.
I've bought (and cracked open) more programming books in the past year than I had in the previous 10. I'm nobody?
Don’t worry, once LLMs poison the well enough by disincentivizing sharing content online, technical books will thrive again.
LLMs are to a large degree trained on pirated books.
The most transformative book for me has been SICP and Uncle Bob's work.
Remember man pages to learn an write C. Guided AI is good if it learns from a book not crap code found on GitHub.
I do feel that programming is more accessible than ever though.
that's not true
With a programming book, you invested time to thoroughly learn something new. The language/tool and its associated way of thinking were now part of your toolbox. You were simply a better programmer going forward.
With AI that toolbox doesn’t grow. You don’t become better, everything from now on will be wrangled into shape with the frozen set of skills you have at this point.
For some people this is fine. For me the endless learning and sharpening of the blade is one of this most appealing parts of programming, so I hate this.
Llm learning fosters mediocrity
Amazon taxes books through shipping. It is a plan.
This corporate messaging of "just use AI, cut as many corners as possible, only retain the essential people and force them to sling slop 7 days a week" is unsustainable.
It's wrong for so many reasons. It disrupts talent pipelines. The staff+ people probably don't want to work twice as hard to cover the cut headcount. In general, people prefer to work on systems that are well architected and not some slop that got vibe coded up in a weekend.
They (corporate upper management) could've just done nothing and the end result would've been better than whatever the fuck is happening right now
I love these books. I would like to own every single one of them, as crystallizations of a moment. But let's be real -- some of these books are trash.
The author is blaming llms alone. And is not even mentioning sites where you can download any and every book you wish. That might have led to decreasing sales as well.
I had a whole zoo of - physical - O'Reilly books back in the day. I still own a few today, but they tend to be less language-specific and more 'best practices'-oriented (Hello, 'Bad Data Handbook').
What made me stop was not LLMs, but that I started to get frustrated by every book spending what felt like 20% of its volume on 'how to properly install this' - something that was little value to me (that's the packet manager's job, and I am not screwing up my installation becaue you like that other processor flag more) - while prices rose. Final nail in the coffin was when O'Reilly decided to aggressively push their subscription model. I'm not paying money every month to get access to a library whose books can disappear at will.
I still buy the occasional No Starch Press book.
Disregarding the issue of AI for a moment, I don’t really think books were ever the ideal way to learn programming.
It’s so obviously better to learn programming in a web based medium. Not just for tutorials or code-running environments, but also for having up-to-date manuals and references for tooling as new releases come out.
Or, if you don’t like that, e-books are again vastly superior with the ability to search easily without flipping through indexes, copy/select text, etc.
Books become out of date so fast, and you live in a hell of manual transcription, which is not actually that helpful for learning despite being highly manual. I also remember dealing with typos and mistakes that were hard to fix as a new learner. Let’s hope someone sent a letter to the author and that the book sold well enough to get a second edition, which I’d then have to buy…but by then it was too late, I’d have moved on.
There was a huge bookshelf because there was no better option. Just like Blockbuster video, something far better came around.
People still use programming books, they just don't purchase new retail books as often. Books have become magnitudes cheaper for publishers to produce but the books didn't get cheaper for consumers. I went to O'Reilly's site, clicked on the first book that popped up and it costs $67.99 for a digitally printed paperback book:
https://www.ebooks.com/en-us/book/345913182/ai-engineering/c...
Take a guess why so many younger devs will opt to pirate a PDF rather than purchase retail programming books. Publishers are pricing themselves out of the market.
I bought a book on C++20 last year when we started a project on it and I read it.
I don't think programming books are going anywhere, because they still contain a concise directory full of information on different languages or frameworks. If I try to learn a language piecemeal through chatgpt or blogs I risk missing important details or platform-specific knowledge. I'd believe books on vim are going away but books on languages or other job-essential tools have a use in the market and I can't imagine they'll go away.
I still maintain an O'Reilly.com subscription, because it's good to read aan edited book on a topic, and the Google search has just gone to seed.
I do it a lot, now with the time saved by coding agents, I do it even more.
I do, actually. Trying to find good material to read for Odin programming language. Most books, are just hard to follow, not newbie-friendly, always gushing with bloat, with things that make the book fatter, making it easier to up the price. Student's usually end up paying the price :(
Sol,
Off-Topic: If I suspect that somebody in a company, or message board is tampering with a user's account, when they are not supposed to, say by blocking their ability to login, would legal action against the company in question be justified on the part of the user?
My career kicked into high gear some time around 2008. I saw somewhere online where a publisher was seeking a volunteer book reviewer / junior editor.
I volunteered, did the best job I could, and posted an honest review via blog. I got more review requests, and a few other publishers contacted me for the same.
I didn’t really master much, because I didn’t put hands on keyboard for a lot of it. But I got a good view of the technical landscape, and I accumulated a nice paperback library.
Before too long, the free books became free ebooks and some of my contacts needed renewing as natural career progression took place. I let my ‘hobby’ die off as I dug deeper in the topics that interested me.
So that era passed. I still have several books with my name in the credits, sort of a souvenir set from the time.
There are books about languages, and then there are books about timeless truths. The former? Toilet paper. The latter? Treasures. Worth reading:
- Okasaki, Purely Functional Data Structures https://www.cs.cmu.edu/~rwh/students/okasaki.pdf
- The Garbage Collection Handbook https://gchandbook.org/
- The Dragon Book - https://faculty.sist.shanghaitech.edu.cn/faculty/songfu/cav/... (yes, it's old, but I still like the end-to-end, all-in-one intro)
- Windows Internals - https://learn.microsoft.com/en-us/sysinternals/resources/win...
- Structure and Interpretation of Computer Programs - https://web.mit.edu/6.001/6.037/sicp.pdf
- Concurrency Control and Recovery in Database Systems - https://www.microsoft.com/en-us/research/people/philbe/book/
- Crafting Interpreters - https://craftinginterpreters.com/
- What Every Programmer Needs to Know About Memory - https://people.freebsd.org/~lstewart/articles/cpumemory.pdf (the best thing Ulrich Drepper ever did)
- An Introduction to Modern Cryptography - https://eclass.uniwa.gr/modules/document/file.php/CSCYB105/R...
A good programming book gets better with age. If it's really about ideas and uses this or that technology for exposition, so much the better: the more remote in time the grammar of the examples, the more you can focus on the ideas. SICP being in Scheme is an advantage because you don't know Scheme yet; Windows Internals being about Windows teaches you generally good lessons in OS design by forcing you to contemplate a system alien to the Unix you probably know better.
It's shocking how many of these seminal books are available for free and how few people read them. Yes, yes, you can get the same information from an LLM, but an LLM won't give you the guided tour through the whole rugged ideas-space and show you a reasonable peak. Order, emphasis, and expository style build intuition, so books (especially old ones) are worth reading.
> A good programming book gets better with age. If it's really about ideas and uses this or that technology for exposition, so much the better: the more remote in time the grammar of the examples, the more you can focus on the ideas.
> It's shocking how many of these seminal books are available for free and how few people read them. ... an LLM won't give you the guided tour through the whole rugged ideas-space and show you a reasonable peak. Order, emphasis, and expository style build intuition, so books (especially old ones) are worth reading
Very, Very True! I have a huge personal library of my own and keep adding to it regularly.
IMO, most people nowadays don't want to put in the effort/time needed to learn something complex. Everything has to be spoon-fed and if they don't grok it the first time, then it is the fault of the author/subject/etc. I just don't see the sincerity and commitment to long-term study which is essential to understand any Science.
> It's shocking how many of these seminal books are available for free and how few people read them.
> The Dragon Book - https://faculty.sist.shanghaitech.edu.cn/faculty/songfu/cav/...
I mean, everything is available for free if that's your standard. You think Song Fu is authorized to give out copies of the dragon book?
did they ever?
Books are more of a unix thing no? I know microsoft had is kernel series but most people used MSDN CDs.
Probably for the best that books are going away, kids these days tend to turn them into their entire personality and keep alive bad ideas far longer then they have any right to exist.
I agree with the article good code lives on screens, it should be self documenting. If it can't be self-documenting then a tool is the next best thing, then docs, books, If a person has to explain to another person what going on something is very wrong. I also agree that "teaching modes" on chatbots need to be far stricter, I've seen some research in this direction. But it's also on the community to create a software cannon that isn't controlled by some megacorp so your dedication is yours.
They don't make them like they used to! /s
Nobody uses a horse and cart as an every day method of commuting anymore.
It's a bit different than that analogy would suggest. Learning things piecemeal can leave strange gaps in one's knowledge, in my experience. A book is often much quicker.
Almost all programming books are more piecemeal than the docs
People still exercise and make up physical activities to compensate for the more sedentary lifestyle, though.
There are quite a few people who do exactly that, including in modern Western countries.
Oddly enough I do a little bit of computer consulting for one such person.
Horse and cart might be antiquated and slow, but my god are they so much cheaper and more reliable than the modern car.
Many parts of the world still rely on horse and cart today, even modern societies.
You can't just buy a horse and park it in a garage. You need to exercise it, give it vet care, shoes, feed it, deal with poop, etc. Or, pay someone to do that.
Unless you live in a place with dirt roads, or really love horses, I think a beater Toyota would win in terms of time and cost.
Well, you can't really just buy a beater car and park it in a garage. You have to perform maintenance on it, and the worst thing for a car is to just sit a long time.
A horse has the unique feature that it can create more horses, which is something a car doesn't do. Horses are also unique in being an appreciating asset, which cars are most definitely not.