DEV Community

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

What are some "classic reads" in programming?

Ben Halpern on July 10, 2020

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.

Collapse
 
ben profile image
Ben Halpern

This one comes to mind for me:

"We can't send email more than 500 miles"

Collapse
 
chris_bertrand profile image
Chris Bertrand

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

Collapse
 
madza profile image
Madza

hackernews? hahah xdd

Collapse
 
helderberto profile image
Helder Burato Berto
Collapse
 
elfrasco2046 profile image
Adrian Paredes

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

Collapse
 
codercatdev profile image
Alex Patterson

Same here

Collapse
 
helderberto profile image
Helder Burato Berto

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

Thread Thread
 
elfrasco2046 profile image
Adrian Paredes

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.

Collapse
 
bernardbaker profile image
Bernard Baker

That's what I've recommended.

Collapse
 
_hs_ profile image
HS

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

Collapse
 
dana94 profile image
Dana Ottaviani

CSS-Tricks' post on flexbox.

css-tricks.com/snippets/css/a-guid...

Collapse
 
shofol profile image
Anower Jahan Shofol

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

Collapse
 
dechamp profile image
DeChamp

lol I used this last night for the 1000 time.

Collapse
 
perpetual_education profile image
perpetual . education • Edited

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.

Collapse
 
elmuerte profile image
Michiel Hendriks

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.

Collapse
 
perpetual_education profile image
perpetual . education

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.

Collapse
 
eddycorderol profile image
Eddy Cordero
Collapse
 
elmuerte profile image
Michiel Hendriks

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

Collapse
 
benwtrent profile image
Benjamin Trent

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

Collapse
 
daedtech profile image
Erik Dietrich

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

Collapse
 
edouardmangel profile image
edouard-mangel

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!

Collapse
 
benwtrent profile image
Benjamin Trent

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

Collapse
 
abdullahdibas profile image
Abdullah Di'bas • Edited

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

Collapse
 
elmuerte profile image
Michiel Hendriks

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.

Collapse
 
vsalbuq profile image
VinΓ­cius Albuquerque

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.

Collapse
 
val_baca profile image
Valentin Baca

Excellent list!

Collapse
 
iggredible profile image
Igor Irianto • Edited

A few that I immediately thought of:

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

Collapse
 
bravemaster619 profile image
bravemaster619 • Edited

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

Collapse
 
colinmtech profile image
Colin Morgan • Edited

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.

Collapse
 
michi profile image
Michael Z
Collapse
 
bholmesdev profile image
Ben Holmes

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/...

Collapse
 
xowap profile image
RΓ©my πŸ€–

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

Collapse
 
xowap profile image
RΓ©my πŸ€–

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

Collapse
 
ben profile image
Ben Halpern

I changed the ask to "blog posts and resources" to allow for a broader convo πŸ˜„

Collapse
 
ypedroo profile image
Ynoa Pedro

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

Collapse
 
sandordargo profile image
Sandor Dargo

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

Collapse
 
iainfreestone profile image
Iain Freestone • Edited

How do I exit the Vim editor?

stackoverflow.com/questions/118282...

Collapse
 
cjbrooks12 profile image
Casey Brooks

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

Collapse
 
jrop profile image
Jonathan Apodaca

Came here to post this. This one is hilarious.

Collapse
 
ajcwebdev profile image
ajcwebdev

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.

Collapse
 
eddycorderol profile image
Eddy Cordero

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

Thread Thread
 
aimerib profile image
Aimeri Baddouh

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.

Thread Thread
 
eddycorderol profile image
Eddy Cordero

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 .

Thread Thread
 
aimerib profile image
Aimeri Baddouh

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.

Collapse
 
leojpod profile image
leojpod

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.

Collapse
 
lucasscharf profile image
AleatΓ³rio

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...

Collapse
 
scgrk profile image
Stephen Gerkin

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!

Collapse
 
rdazvd profile image
Rafael de Azevedo

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).

Collapse
 
rfaulhaber profile image
Ryan Faulhaber • Edited

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

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

Collapse
 
jlouiss profile image
Jean • Edited
  • 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

Collapse
 
james1515 profile image
James Ortiz

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.

Collapse
 
dechamp profile image
DeChamp • Edited

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

Collapse
 
themeticulist profile image
yashaswi

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..

Collapse
 
gsto profile image
Glenn Stovall

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

Collapse
 
itsjzt profile image
Saurabh Sharma
Collapse
 
hellodavidryan profile image
David Ryan

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".

Collapse
 
siimsoni profile image
Kristjan Siimson
Collapse
 
danielkun profile image
Daniel Albuschat

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-...

Collapse
 
carlosds profile image
Karel De Smet

I loved these books to get more in-depth knowledge about Javascript.

And the online versions are absolutely free which is absolutely ridiculous!

I also liked "SQL Database for Beginners" to get acquainted with the basics on SQL. Would love to have a similar book on MongoDB (or another non-relational database).

Clean Code was great. It's just important to have a good grasp of Java first, or at least read it twice if you don't.

Love that quote from Bill Gates on Knuth's books: "You should definitely send me a rΓ©sumΓ© if you can read the whole thing.". Which makes me believe my dad is right when he calls me crazy for wanting to read it... It's probably way too mathematical most people, including myself.
In "Deep Work", Cal Newport also describes that Knuth went for very long stretches of extreme concentration (blocking out all forms of communication during work hours) at the time of writing. Which is also cited as one of the reasons why it became such an absolute classic, and I'm inclined to believe that.

Collapse
 
berrythawson profile image
berry-thawson

I liked "The C programming language".
Even if you do not end up using C, this is a really good read. And since we are talking about classics I thought we count this in.
And "Refactoring" by Martin Fowler and gang is really useful one. It helped me a lot.
And "Structure and interpretation of computer programs" for people who are naughty enough. You may think this meaningful or crazy recommendation. It is useful for somebody. It helped me.

Collapse
 
zilti_500 profile image
Daniel Ziltener • Edited

Those are my classics:

  • SICP
  • The Mythical Man Month
  • The Design of Everyday Things
  • The Little Schemer, The Seasoned Schemer and The Reasoned Schemer - the latter is an introduction to logical programming

I also just got sent "The Story of Mel" which apparently is a classic story (more on the humorous side; also I haven't read it yet myself)

Collapse
 
drewmullen profile image
drewmullen

The Phoenix Project by Gene Kim!

Collapse
 
scottstern06 profile image
Scott

SICP!

Collapse
 
iggredible profile image
Igor Irianto

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

Collapse
 
bernardbaker profile image
Bernard Baker

I ❀️ logs

Collapse
 
danielkun profile image
Daniel Albuschat

The Mythical Man-Month

en.m.wikipedia.org/wiki/The_Mythic...

Collapse
 
bernardbaker profile image
Bernard Baker

The pragmatic programmer 🀸

Collapse
 
bernardbaker profile image
Bernard Baker

Production-ready microservices

Collapse
 
bernardbaker profile image
Bernard Baker

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

Collapse
 
kayis profile image
K

I remember reading a list of most favorite programmer books and on place two was something like "Living with RSI" 🀣πŸ˜₯

Collapse
 
bauripalash profile image
Palash Bauri πŸ‘»

I must mention:

  • Structure and Interpretation of Computer Programs
  • Compilers Principles, Techniques, & Tools 😽😽😽
Collapse
 
phlash profile image
Phil Ashby

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

Collapse
 
nestedsoftware profile image
Nested Software
Collapse
 
ktkaushik profile image
Kaushik Thirthappa

One book I re-read is DevOps handbook

Collapse
 
iimrankhan profile image
Imran Khan

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