Programmers Don't Read Books – But You Should (2008)
The article highlights a decline in programmers reading books, favoring online resources instead. It critiques the poor quality of many programming books while recommending five essential titles for professional growth.
Read original articleThe article discusses the declining trend of programmers reading books, suggesting that many developers now prefer to learn through hands-on coding and online resources. The author, Jeff Atwood, notes that the market for programming books is small compared to the number of programmers, and many books available are of poor quality. He criticizes the technical book publishing industry for producing books that are often not useful, particularly those aimed at novices that promote quick fixes rather than deep understanding. Atwood emphasizes the importance of reading quality programming books, which can provide timeless insights and enhance professional development. He shares a list of five essential programming books that he believes every programmer should read, highlighting their lasting relevance and practical value. Despite his criticisms, Atwood expresses a love for programming books and aims for platforms like Stack Overflow to complement rather than replace them.
- Many programmers now learn primarily through online resources rather than books.
- The quality of programming books is often poor, with few being truly valuable.
- Quick-fix books can mislead novice programmers and hinder their development.
- Timeless programming books can provide deep insights and are essential for professional growth.
- Atwood recommends five key programming books that every developer should read.
Related
DHH – Programmers should stop celebrating incompetence (2021)
David Heinemeier Hansson criticizes celebrating incompetence in programming to combat imposter syndrome. He emphasizes deep understanding over surface-level knowledge, urging programmers to strive for mastery and competence through dedication and continuous learning.
I Probably Hate Writing Code in Your Favorite Language
The author critiques popular programming languages like Python and Java, favoring Elixir and Haskell for immutability and functional programming benefits. They emphasize personal language preferences for hobby projects, not sparking conflict.
Maybe You're Not Sick of Programming
The article explores burnout in programming, attributing it to factors like bureaucracy and lack of impact. It advises taking breaks and addressing dissatisfaction before quitting, emphasizing the field's creative potential and rewards.
How I Program in 2024
Kartik Agaram reflects on his programming journey, advocating for minimalist software design, emphasizing simplicity, context awareness, and the potential benefits of data-oriented design to improve software quality and adaptability.
We need visual programming. No, not like that
Visual programming struggles to gain traction as it attempts to replace code syntax instead of focusing on developers' actual visualizations, such as state transitions and memory layouts, requiring better integration and usability.
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...
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.
- 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.
There’s a lot of non-programming books I really enjoy though as well.
Related
DHH – Programmers should stop celebrating incompetence (2021)
David Heinemeier Hansson criticizes celebrating incompetence in programming to combat imposter syndrome. He emphasizes deep understanding over surface-level knowledge, urging programmers to strive for mastery and competence through dedication and continuous learning.
I Probably Hate Writing Code in Your Favorite Language
The author critiques popular programming languages like Python and Java, favoring Elixir and Haskell for immutability and functional programming benefits. They emphasize personal language preferences for hobby projects, not sparking conflict.
Maybe You're Not Sick of Programming
The article explores burnout in programming, attributing it to factors like bureaucracy and lack of impact. It advises taking breaks and addressing dissatisfaction before quitting, emphasizing the field's creative potential and rewards.
How I Program in 2024
Kartik Agaram reflects on his programming journey, advocating for minimalist software design, emphasizing simplicity, context awareness, and the potential benefits of data-oriented design to improve software quality and adaptability.
We need visual programming. No, not like that
Visual programming struggles to gain traction as it attempts to replace code syntax instead of focusing on developers' actual visualizations, such as state transitions and memory layouts, requiring better integration and usability.