I don't read programming books any more because they are mostly shit or expensive or expensive and shit. The hit rate of finding a good one is so low it's easier to just fudge your way around a problem using some idiom you're already experienced with.
Just ambling around the book store earlier I saw a 3 inch think tome around Go programming called Pro Go or something. I opened it and it was a whole book of instructional copy and paste recipes that span 10 pages for a simple problem. Urgh. This is the status quo now and it has been for a long time. I walked out with a book on pure mathematics instead - probably more useful in the long run...
I have something against them. It's often apparent that many of them are professional programming book authors that are learning the language as they are writing the book instead of being professional programmers with some skills in the language that are writing a book. I don't want to learn along with another unskilled person, I want to learn from someone that has enough familiarity to not use features incorrectly and to mention potential hangups. Hell a lot of these books read like they are written by someone that is new to programming altogether, not just someone that is relatively new to the language.
Programming books are definitely becoming more hit or miss, as the volume of books has increased dramatically in the last 10-15 years. There are still great books, but there are a lot more bad ones out there. There's a lot more software out there, and a lot more people learning about it.
I had a horrible experience with Packt. I had subscribed andwas in the middle of reading a book. The book suddenly became unavailable, so I created a ticket. They threw a few tokens at me, and asked if they could just close the ticket, even though there was no mention of whether the book was going to be available again.
Then weeks later they signed me up for six(!) separate mailing lists without asking me, one for each tag I had flagged as interested.
> I recall a few years back, Packt et al would publish like "Modern React" or something, with examples that wouldn't build by the time the book was out.
This says more about React than it does about the publisher.
>Many are outdated by the time they hit the press.
Quite a while back, I was contacted by Wiley about writing an OpenStack book. I wasn't the right person to write it anyway. But even if I were, by the time the book hit the shelves, OpenStack would almost certainly have moved on a good two versions.
> I don't read programming books any more because they are mostly shit or expensive or expensive and shit.
That’s consistent with the first reason given in the article:
> I lay part of the blame squarely at the feet of the technical book publishing industry:
> Most programming books suck. The barrier to being a book author, as near as I can tell, is virtually nonexistent. The signal to noise of book publishing is arguably not a heck of a lot better than what you'll find on the wilds of the internet. Of the hundreds of programming books released every year, perhaps two are three are truly worth the time investment.
I’m the author of Learning Go from O’Reilly, so I might be a bit biased.
What I’ve found is that different publishers put different amount of effort into producing good content. O’Reilly is almost always excellent. Others are less so.
It’s hard to find a dev who is willing to invest a year of their life to write a book that is likely to make almost no money. It’s doubly hard to find devs who write well.
Given these filters, two or three good programming books a year sounds pretty great.
The problem is that they're written by developers. And when I say developers I mean developers, not engineers or authors. Everything is about a sausage factory, nothing more. You don't learn stuff other than copying and mimicry. And some of it is absolute monkey excrement. But when you don't know better it feels like you are learning something good.
I am considering writing a bad programming book on purpose. I will call it "how to sling together a badly written Go 'enterprise' app and smear AngularJS over the top"
The really good books are REALLY good, though. But the only places I've seen them were at university bookstores (and even then mainly MIT/Stanford) or Amazon when they had physical stores. Otherwise you have to get them online
And then you also have the books which cost 60€ and aren't even printed in color. I mean it makes sense for ecological reasons, but I can get books for 19€ that are colorized.
It would be a much better reading experience if some boxes would actually show colorized instead of different shades of grey.
There’s always LibGen and friends if you really can’t afford much, or to sample before buying. You can also get used copies cheaper. The pricing shouldn’t keep you from reading.
I saw an HN thread a while back where someone recommended a comprehensive book on some networking subject. I'm sure it was a good book, I was floored when I saw physical copies being sold fucking $700.
Unfortunately, a lot of the technical books I wish to read fall into this grift of academic texts.
I try and re-read Fred Brooks' _Mythical Man Month_ every year or two. That is a short series of essays that I seem to always find a "new" idea from. My most recent re-read the line that stuck with me was "plan to throw one away. You will anyhow."
What I took from that given the situation I was in at time was that the best way to build an abstraction is to build the first one without any abstraction, and only then, when you understand how whatever is being abstracted will be used, try and build the abstraction layer, rather than starting with the attempt at abstraction. There are other ways to interpret it- it can point you to a more Agile design philosophy even though he was writing decades before the Agile Manifesto.
" The Design of Everyday Things" is a great non-programming book that programmers should read. It tells you why/how you should make things more usable for your users. If you find yourself failing to use something properly, it's not you being stupid, it's the design.
Design of doors is famously known example from this book.
I often think about the idea that a good design takes information from the world (or the users head) and puts it into the system, reducing cognitive load. So if a door needs to be pushed, put a push plate on it, rather than requiring the user to remember to push the handle. Think about it when labelling buttons quite a bit, for example. Or workflows.
The Gof book should be on the list, but I agree that it suffers from similar problems that a lot of first-of-their-kinds do. There are iterations on it that are a much better read.
Amusingly, I thought Code Complete was disliked now? I thought it was fun, but definitely over sold on things.
I liked the other ones, even if I don't remember take aways from them at the moment.
I do reject the Knuth observation here. Annoyingly, most criticism you will ever see of a Knuth book are from people that never read them. Not that I don't get the point, as following closely behind that group are those that bought but never read them. Especially with the newer volumes, there are a lot of very fun topics covered.
And, sure, you are best not putting together many of the low level things that are covered in those books. But... you are also best not blindly following whatever is in the other books, too? Again, many folks dislike Code Complete for fairly solid reasons.
Code Complete seems more forgotten than disliked these days (rarely mentioned, either for or against). Clean Code is the one that, when you mention it, brings out all the negative comments.
Ah, makes sense! I am pretty sure I've read them both. I'm not too surprised that I would mistake them for each other. Will have to look back at Code Complete. :D
Maybe consider a subscription to Safari Bookshelf instead. Everywhere I've ever worked, they've been happy to foot the bill for an annual subscription so I have a deep reference library.
A few years ago, O'Reilly had a 60% off sale for an annual subscription, which I promptly took advantage of. I've been paying only $200 per year ever since. Not sure if they still have that deal.
I actually find the quality of programming books to have starkly increased in the last decade. I find a lot of manning's and o'reilly's release to have a pretty long shelf-life.
For example, I really enjoyed and often go back to:
> I actually find the quality of programming books to have starkly increased in the last decade.
I suspect this might be a side-effect of programmers buying less books. The ratio of authors who write them because they really care instead of because they hope to make some bucks would then increase.
Just ambling around the book store earlier I saw a 3 inch think tome around Go programming called Pro Go or something. I opened it and it was a whole book of instructional copy and paste recipes that span 10 pages for a simple problem. Urgh. This is the status quo now and it has been for a long time. I walked out with a book on pure mathematics instead - probably more useful in the long run...
I recall a few years back, Packt et al would publish like "Modern React" or something, with examples that wouldn't build by the time the book was out.
Typesetting is awful too, as you mentioned. A single paragraph for something dead simple is spread over multiple pages.
Nothing against such authors; its fruitless to hit a moving target.
Books on programming languages are the only ones I purchase these days, for those reasons.
The Go book, Rust Programming language, Stroustrup's books on C++ etc are quite good and worth owning, but those are exceptions rather than the rule.
I have something against them. It's often apparent that many of them are professional programming book authors that are learning the language as they are writing the book instead of being professional programmers with some skills in the language that are writing a book. I don't want to learn along with another unskilled person, I want to learn from someone that has enough familiarity to not use features incorrectly and to mention potential hangups. Hell a lot of these books read like they are written by someone that is new to programming altogether, not just someone that is relatively new to the language.
I had a horrible experience with Packt. I had subscribed andwas in the middle of reading a book. The book suddenly became unavailable, so I created a ticket. They threw a few tokens at me, and asked if they could just close the ticket, even though there was no mention of whether the book was going to be available again.
Then weeks later they signed me up for six(!) separate mailing lists without asking me, one for each tag I had flagged as interested.
This says more about React than it does about the publisher.
Packt appears to be a vanity press.
React is a difficult moving target, and Packt is a six year old with a homemade slingshot.
Quite a while back, I was contacted by Wiley about writing an OpenStack book. I wasn't the right person to write it anyway. But even if I were, by the time the book hit the shelves, OpenStack would almost certainly have moved on a good two versions.
2 - http://www.amazon.com/exec/obidos/ASIN/0321965515/codihorr-2...
3 - http://www.amazon.com/exec/obidos/ASIN/0932633439/codihorr-2...
4 - http://www.amazon.com/exec/obidos/ASIN/020161622X/codihorr-2...
5 - http://www.amazon.com/exec/obidos/ASIN/0321117425/codihorr-2...
That’s consistent with the first reason given in the article:
> I lay part of the blame squarely at the feet of the technical book publishing industry:
> Most programming books suck. The barrier to being a book author, as near as I can tell, is virtually nonexistent. The signal to noise of book publishing is arguably not a heck of a lot better than what you'll find on the wilds of the internet. Of the hundreds of programming books released every year, perhaps two are three are truly worth the time investment.
What I’ve found is that different publishers put different amount of effort into producing good content. O’Reilly is almost always excellent. Others are less so.
It’s hard to find a dev who is willing to invest a year of their life to write a book that is likely to make almost no money. It’s doubly hard to find devs who write well.
Given these filters, two or three good programming books a year sounds pretty great.
I am considering writing a bad programming book on purpose. I will call it "how to sling together a badly written Go 'enterprise' app and smear AngularJS over the top"
- The Unix Programming Environment (not that one; this one it's a bit more modern). You'll get a bit of Perl instead of AWK, but it's fine.
- The GNU C Tutorial. Not as good as 'The C programming language'; but still useful.
- A shot Introduction To Operating Systems. Slightly outdated C++, because most of the time the issue it's just about fixing the include headers.
Most of the things learned there will work as is as Perl5, ANSI C/GNU C and so don't change a lot over time, if any.
Unfortunately, a lot of the technical books I wish to read fall into this grift of academic texts.
Dead Comment
What I took from that given the situation I was in at time was that the best way to build an abstraction is to build the first one without any abstraction, and only then, when you understand how whatever is being abstracted will be used, try and build the abstraction layer, rather than starting with the attempt at abstraction. There are other ways to interpret it- it can point you to a more Agile design philosophy even though he was writing decades before the Agile Manifesto.
Design of doors is famously known example from this book.
Another idea was about suggestive nature of design. If top of a small wall is flat, practically it's asking you to put your empty can on it.
- Structure and Interpretation of Computer Programs
- C Interfaces and Implementations
- Design Patterns
- Compilers: Principles, Practice and Tools
Each of these should make you go "a-ha!", in its own way.
I liked the other ones, even if I don't remember take aways from them at the moment.
I do reject the Knuth observation here. Annoyingly, most criticism you will ever see of a Knuth book are from people that never read them. Not that I don't get the point, as following closely behind that group are those that bought but never read them. Especially with the newer volumes, there are a lot of very fun topics covered.
And, sure, you are best not putting together many of the low level things that are covered in those books. But... you are also best not blindly following whatever is in the other books, too? Again, many folks dislike Code Complete for fairly solid reasons.
For example, I really enjoyed and often go back to:
- https://www.oreilly.com/library/view/building-event-driven-m...
- https://www.oreilly.com/library/view/designing-data-intensiv...
- https://www.manning.com/books/100-go-mistakes-and-how-to-avo...
- https://www.amazon.com/Systems-Performance-Brendan-Gregg/dp/...
And more recently:
- https://www.manning.com/books/build-a-large-language-model-f...
- https://www.manning.com/books/the-creative-programmer
- https://www.manning.com/books/the-programmers-brain
- https://www.amazon.com/Understanding-Software-Addison-Wesley...
I also find books about specific technologies that indeed run the risk of being deprecated after a few years to be useful too
- https://www.oreilly.com/library/view/networking-and-kubernet...
- https://www.brendangregg.com/bpf-performance-tools-book.html
Furthermore, nothing keeps you from reading books about topics peripheral to computer science, say to keep up with the general vibes:
- https://www.amazon.com/Probabilistic-Machine-Learning-Introd...
- https://www.amazon.com/Deep-Learning-Foundations-Christopher...
- https://www.amazon.com/Joy-Abstraction-Exploration-Category-...
I find that all of these contribute significantly to my growth as an engineer.
I suspect this might be a side-effect of programmers buying less books. The ratio of authors who write them because they really care instead of because they hope to make some bucks would then increase.