loading...
Cover image for What are some "classic reads" in programming?

What are some "classic reads" in programming?

ben profile image Ben Halpern ・1 min read

I'm thinking of blog posts and resources that are more than a few years old, but had a big impact and continue to be circulated as relevant and interesting reads.

Discussion

markdown guide
 
 

That's such a good read! It's like an 90s private eye drama!

 
 
 

I'm reading the 20th Anniversary Edition, from 2019. This book is a must for every developer.

 

I'm thinking to get the new version, do you recommend that?

Yes, I do. There are new chapters. Use cases and examples are upgraded, too. I recommend reading the introduction to the second edition and the free chapter to get an idea of what to expect. I'm reading the fourth chapter and it's living up to all my expectations.

 
 

Not a blog but hey. Also new book seams quite nice

 
 

It's really a great resource. I just return to it time to time.

 

lol I used this last night for the 1000 time.

 
 
 

Oh and this one i really love:

"Uncle" Bob Martin - "The Future of Programming":
youtube.com/watch?v=ecIWPzGEbFc&t=11s

 

I loved Clean Code.
This book changed the amount of comments on my pr to zero

Would you expand on what gains you've had by eliminating comments on your PRs?
Personally, I'm a big fan of leaving comments for context for future me/colleagues. I've found that commenting on what the code does isn't really helpful as it is more of an indicator that the code is likely too complex to begin with, and should probably be broken down more, and named better, however, there is immense value in having breadcrumbs about what will this change mean for the codebase going forward, and also implementation guides if the particular PR is for code that will be used in other parts of the applications.

Comments are really good when they evolve with your code.

But I want to say that when I start working as a developer, my pull requests were full of similar comments, rename this variable or delete this space and a coworker recommends "Clean Code" and this book helped me change this .

I see! Yeah, in that situation, I completely agree that comments were probably not super helpful.
I've found that in my own experience, PR and code comments aren't a good way to explain the code itself as it quickly gets stale and comments go out of sync with the code they are for.

 

Shoot. We've been trying to put together a list!

But the problem with this stuff is - it always depends on where you are at.

A lot of people swear by "The Pragmatic Programmer" and "The Mythical Man-month" - and we think those are great. They're actually right here - within reach!

Image of "The Pragmatic Programmer" and "The Mythical Man-month"

But those are NOT the right books to read for someone who is just starting out. Those are like - fun thought-provoking essays and stuff for career programmers who are already advanced and experienced. (please argue this point if you feel differently)

Those are definitely "classic" reads. But - we're curious about what could become a 'classic' foundation for more than code.

"Clean Code" and "Code Complete" are also classic reads - but could devastate the reader if picked up at the wrong time in their learning path.

We think that these should be mandatory reading:

"Design for the Real World", "Ruined by Design" (both for understanding your impact and responsibility as a creator) and "Exercises for Programmers" as a practical (language agnostic) guide to learning programming.

Book covers of <br>
"Design for the Real World", "Ruined by Design", and "Exercises for Programmers"

Also required: "The Elements of User Experience."

"The Design of Everyday Things" is another one. (make sure you get the latest edition)

UX: "Don't Make Me Think", "The Inmates Are Running the Asylum"

BLOGS: "Coding Horror" "Joel on Software"

ESSAYS: "I, Pencil"

If you could just give someone only one book to help them learn to be a confident and responsible programmer, what would it be?

We would probably choose "The Elements of User Experience" - have the student practice things for a while - and then introduce "Design for the Real World" - or maybe we'll need to write a little collection from all of those books as an entry point.

 

But those are NOT the right books to read for someone who is just starting out. Those are like - fun thought-provoking essays and stuff for career programmers who are already advanced and experienced. (please argue this point if you feel differently)

They are indeed not entry level books.

The Mythical Man-month is for when you get to a position where you get/share responsibility for a team. This book is a foundation of a lot of (attempted) changes in the way we organize to develop software. You must understand the past in order to improve the future.

However, The Pragmatic Programmer is something you should start to read after a year (or two) in software development. Same with Clean Code and Clean Coder. These books are not complex and do provide critical insights.

Code Complete I would hold of on for 5 years. Simply because that book is massive, in size and density.

 

We haven't read all of Clean Code yet: but they are sitting over there on the shelf... just staring at us. "Web Dev" and "Software Engineering" and all of the "names" of the "things" - are certainly connected - but also have different primary concerns. Small design shops, marketing agencies, and even complex web applications just don't seem that complex! OOP often plays no real role. Hook up a few APIs + write some markup + test with users + iterate. Are "Web documents" really "software?" In many cases - we'd rather hire a developer that can think through UX and has empathy for the user - over someone who has read those books. BUT we'll have to see what happens after we finish reading Clean Code - and Code Complete. ; ) If memory serves - there were a lot of C type language examples that didn't land with us at the time.

 

The Mythical Man-Month. After 45 years it is still relevant. It's like the industry hasn't learned much.

 

Blogs

not really part of the original ask, but aren't books just long blogs?

Books

  • The K&R as an example of dense, well written technical prose
  • Pragmatic Programmer. Solid advice, always applicable
  • CODE Petzold's work still stands as one of the best intros into thinking like a computer
  • SICP. Tough, even for seasoned engineers. Helps mold your brain and expand your reasoning. Even though MIT switched to python for the class, everybody should learn a lisp. Makes you a better engineer, even if you never use a lisp in production.
  • The Phoenix Project. Originally published 7 years ago. Unsure if this is far enough in the past to be "classic". But every developer that works on a team with more than two people needs to read this.
  • The design of everyday things

videos

 

Wow, you've got me in there with some pretty impressive company. If you'd told me 10 years ago that I'd be mentioned alongside Dave Thomas, Andy Hunt, and Joel Spolsky in a a round-up, I'd have spit out my coffee. Thanks for the mention of the Expert Beginner posts :D

 

Oh man, your blog post about expert beginner made such an impact on me and my career!

I hope you'll read this because I'm really grateful I got the chance to read it when I did. I was in a company for which what you describe in the article is the exact description. I am a junior dev, and I thought I was lame and that I would never be a good developper, and that my only way out was to get a project management job as soon as possible.
Since I read your post I quit from that company because I understood I would never learn anything good, I learned a lot from books, and even though I still have a lot to do to be good at what I do, your post was the tipping point where I decided to change my working environment. My clients have been happy about my job since that, and I learned to love coding again!

Thank you!

 

It's good :D. I remember reading it when it came out. Sent it to everyone I knew.

 

@ Erik Dietrich I've just completed reading your post, and I find it very interesting. Thanks @Benjamin for mentioning this.

 

For developers I would recommed reading The Unicorn Project. It is the "sequel" to The Phoenix Project. The same event but from a software developer's angle rather than ops. Obviously read them both.

 

SICP is an awesome book. It divides information technology in data and procedures that transforms that data. It simplifies everything when you're dealing with the most common problem we have today, which is managing state. If you keep those two separated, you can reason about your code without having to be a genius.

 
 

Effective Java (by Joshua Bloch). I've read it when I was a post grad student and deeply amazed by it.

 

A few that I immediately thought of:

(Edit: now that it's expanded to include other resources, I'm adding one more)

 

I know it's not directly a software book, but I think every developer should read How to Win Friends and Influence People. If there's one weakness the typical developer type suffers from it's an inability to talk to people in a way that fosters positive relationships. If every developer read this book we'd all enjoy working with each other much more.

 
 

I reference back to this all the time. It's a great post explaining how bundlers work at the fundamental level. Helps explain where the<script> tags stop and where the build tools begin!

medium.com/the-node-js-collection/...

 

Modern Operating Systems is a definite must-read if you want to have any clue on what is happening in a computer

The Algorithm Design Manual will give you all the answers to your algorithmic problems

 

Oh shit, it's about blog posts. Sorry :)

 

I changed the ask to "blog posts and resources" to allow for a broader convo 😄

 

If you are a masochist: Design Patterns: Elements of Reusable Object-Oriented Software (Its not a critic, awesome book but i do prefer colored things haha!)
If you're like me and likes a more light reading the
Head first series
Head First Design Patterns Brain Friendly
Its awesome

 
 

If you really want a "classic read", take Donald Knuth's The Art of Computer Programming!

 

One of my favorite things in all programming literature: Parsing HTML with Regex

 

Came here to post this. This one is hilarious.

 

The Art of Unix Programming by Eric Raymond: catb.org/esr/writings/taoup/html/
Introduction to Algorithms by Thomas H. Cormen, et al: amazon.com/Introduction-Algorithms...
The clean code by Uncle Bob: amazon.com/Introduction-Algorithms...
Refactoring: Improving the Design of Existing Code by Martin Fowler: martinfowler.com/books/refactoring...

 

Ted Neward's The Vietnam of Computer Science which makes the case that Object/Relational Mappers are a terrible idea. Especially interesting to think about today when you have projects like Prisma that provide similar functionality to an ORM while insisting that they be referred to as a query builder instead.

 

No mentions of the Design Pattern by the gang of four? en.wikipedia.org/wiki/Design_Patterns

Even though modern webdev use some of these design patterns without knowing it (most of time) the principles underlined in the book are still quite valid I think.

 
  • Clean Code
    Talks about how to write and structure readable code, and why you should do it. Also talks about TDD

  • Refactoring
    Shows you how to refactor code effectively and progressively, the last edition uses JavaScript for the examples

  • Pragmatic Programmer
    Probably the most popular book. Talks about soft skills, tooling, development, everything that makes you a better developer. Should read this at least once in your life

  • Code Complete
    Bit old but still relevant. It's a compendium of techniques

  • Design Patterns - gang of four
    Self explanatory title, teaches you how to write better and scalable code depending on what you're trying to solve

Not "classic" but I think useful anyway: Cracking the coding interview
Teaches algorithms and data structures (+ how to pass interviews at the big companies)

If you want to pick just one I would read clean code or pragmatic programmer

 
 

Structure and Interpretation of Computer Programs, aka "The Wizard Book."

And, at least as far as I'm concerned, JavaScript, the Good Parts.

 
 

As I think that relevant long reads most often do not equate to directly useful in the day-to-day, my list of programming "classics" tend to revolve around historical and critical commentary. All the tools, jargon and conventions we use are part of a history of computer abstractions, and gaining depth necessarily involves not only understanding general concepts but also having some notion of where they come from. Interesting reads on the subject span from mainstream non-fiction like Steven Levy's Hackers to Eric Raymond's The Art of Unix Programming and Richard Stallman's collection of essays (the FOSS world is rich with writing of this kind).

 

Great question. I did a survey when I first joined Red Hat to find out what my colleagues considered to be the essential reads. Some of these were hard slogs, but these in particular were impactful for me (and them).

A pretty essential history of computing told through the lens of open source, but IMHO superbly summing up some major computing shifts through the eyes of the people and technology at that time.

At the moment I'm having fun with:

And you could do worse than read any of Alan Kay's favourite books, as he summarises here on Quora. Oh and for those that don't know who Alan Kay is, you're in for a treat. Computing is a wonderful topic that, if approached right, unlocks so much other science for consideration. So it's no surprise many of the above are move than just "learn this syntax for programming output".

 

These two books helped me a lot in my career with how to think about coding, and business logic.

Domain-Driven Design: Tackling Complexity in the Heart of Software 1st Edition
Extreme Programming Explained: Embrace Change US Ed Edition

They are the two that stuck out the most for me

 

Recently as I was looking into some youtube tutorials i have come across this channel youtube.com/user/1kingja this is one of the best channels i have seen on Programming..

 

Programming Pearls by Jon Bently is a great book to practice algorithms. Also Design Patterns: Elements of Reusable Object-Oriented Software by the Gang of 4 is also great. There are a lot of 20-30 year old books that still remain as great references.

 

The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!) – Joel on Software

joelonsoftware.com/2003/10/08/the-...

 

UTC is Enough for Everyone, Right?. It'll take you a long time (pun intended) to read this, but it's totally worth it.

I read this article at the beginning of my programming journey when I was trying to figure out how to do something with time in Java. I stumbled across this and it explained why I was having so much difficulty. I later shared this article with a peer who was working on a group project and wanted to do something unusual with time (can't remember what) and she immediately decided it was not worth implementing after reading!

 

Falsehoods Programmers Believe About Names by Patrick McKenzie (better known as patio11 on the Internets.)

 
 
 

Going through it right now (book and lectures).
Have to agree 100% a true classic CS book!

 

The Phoenix Project by Gene Kim!

 
 
 

Bulletproof web design is a bit backdated and not as useful as I would have thought.

 

I must mention:

  • Structure and Interpretation of Computer Programs
  • Compilers Principles, Techniques, & Tools 😽😽😽
 

How come no body mentioned Patterns of Enterprise Application Architecture (Martin Fowler). It is excellent (i mean Excellent read).

 
 

I have this in classic 'red cover' paperback, it's influence has been large!
archive.org/details/DesignOfTheUni...

 
 

I remember reading a list of most favorite programmer books and on place two was something like "Living with RSI" 🤣😥

 
 

Uncle Bob's - how to code...
It is brutal.