When the first version came out, around the time I got my first job, it felt like everyone around me had read this book, and for a long time we were throwing around quotes from this book. Sadly after a few years it felt like the only thing that really stuck in the larger community was "Don't Repeat Yourself", which wasn't really something that at the time stood out as much more important than many of the other "rules".
My personal favorite was always the one about "English is just a programming language", but when I read the 20th anniversary edition that one seemed like it had been toned down? I did not go back to find the original one to compare, but the way I remember it it was pretty hardcore about keeping text as text and using tools like for programming (use macros in text to avoid repeating yourself etc).
Overall the 20th anniversary did feel a bit less idealistic? I guess for a "pragmatic" book that makes sense, but I remember the original like it was making stronger arguments for or against things. I really liked the (anti-)IDE chapter, or the parts on the importance of learning how to use a good text editor well, for instance, but now they basically cut that out. Did give me the impression that they were trying to be down with the kids at times.
Alternatively, consider being an idealistic programmer!
- Fall in love with a single topic, regardless of how trendy.
- Learn as much as you can about it.
- Keep learning about it.
- Learn about it some more.
- Spend years of your life doing nothing but breathing and thinking about this one topic.
- Let fads and fashion pass you by.
- Don't settle for good enough. Try to build the best version possible.
- Choose where you work based on your ability to reach staggering new heights with this one topic, and disregard whether it seems like an amazing CV line item.
- Fail to even notice fads and fashions passing you by.
- Become a master.
I have read many books. If you can only read one book about how to program in your life , I would say that it is this book: A philosophy of software design: John Ousterhout. It is 10 times better than the next best book.
Not only are they not mutually exclusive, but if we're being honest, only idealistic programmers care enough to read Pragmatic Programmer, and they read it in the process of becoming a master.
I have read a number of programming books but the only two that really stood out to me and that I still remember are The Pragmatic Programmer and K&R The C Programming Language. They are obviously very different but foundational in ways that enabled me to get a lot of things done.
I do still encourage people to learn C only because you could understand how the language works or a long weekend and it will help you appreciate just how things actually work under the hood (and a bit above the assembly instructions level). And TPP is great for helping you understand what to do when actually working on a deliverable project and not just the exciting parts. It’s the difference between building a toy that runs on your machine and a project others can run and use.
My first programming book was K&R as well. It was an excellent introduction to programming.
You might think that coming from K&R, I wouldn't have liked my second and third books, which were two of the first Head First series. They took essentially the opposite approach from K&R, but I enjoyed them too and learned quite a bit. Something about the content lended itself to a more visual approach to the material (maybe the nature of OOP).
It was technically not my first. Really my first was around age 6 or 7 and it was a companion to my grandfather’s Pravetz 8D which had a listing of BASIC commands and I think like 20 or so listings of programs. His students had also programmed a few games that he had copies of which were cool. I ended up trying to modify them and writing some of my own but that’s how I got into this whole thing.
But K&R was the first book that I read that made me feel like I fully understood what was happening. Of course I was missing a lot of nuance a a bunch of abstraction layers that I learned about later but that book felt very self-contained. I read the first time it when I think I was 25 or 26 and at 39 I might want to do a refresher.
I bought the first edition when it came out. I was just 3 years into my SW development career and it provided a lot of good advise. I bought the second edition and enjoyed it, but the first edition had a special place in my heart.
When I started a programming job, I read this book, Clean Code, and Code Complete. Code Complete is kinda old but still great, Clean Code is not bad but it's Java centric and has a lot of questionable tips. But The Pragmatic Programmer never gets old.
I got on very well with Van der Linden's Deep C Secrets. It's from 1994, so misses out on the newer versions, but aside from that it's aged well, IMHO.
Are you sure it's been open sourced? I'm reasonably sure you've linked to a site offering pirated copies.
There are several links to PDF versions of the book. None of them include either a copyright page or a statement that it's been released as open source.
The author's own website <https://afu.com/> includes errata for the book, but doesn't provide or mention a free copy.
A free sample of the Kindle version of the book does include a copyright notice. A book published in 1994 is not public domain unless it's been explicitly released.
Something that appears to be a legitimate PDF sample (not the while book) is here:
A great book, but I read it too late, after I had already learned pretty much everything it says the hard way. So it was one of those books I enjoyed because it reinforced what I already thought, but didn't really get much from. Wish it had been written a decade earlier.
I'd say learning things on your own, even if they take time, is still better as you don't have to actively force yourself to develop that mindset. We often rush towards our goal without realizing how important the journey (small steps) is. Isn't reaching the goal more worthwhile if you have enjoyed the journey along the way? Isn't that what it means to be human?
An incredible book. One very near and dear to my heart. It always sits on the bookshelf behind me with pride of place in every video call or conference.
I’m really glad I got it after stumbling across the original at my university library. It’s really nice reading it from time to time and getting inspired to become a better developer
I have read many books. If you can only read one book about how to program in your life , I would say that it is this book: A philosophy of software design: John Ousterhout. It is 10 times better than the next best book.
When the first version came out, around the time I got my first job, it felt like everyone around me had read this book, and for a long time we were throwing around quotes from this book. Sadly after a few years it felt like the only thing that really stuck in the larger community was "Don't Repeat Yourself", which wasn't really something that at the time stood out as much more important than many of the other "rules".
My personal favorite was always the one about "English is just a programming language", but when I read the 20th anniversary edition that one seemed like it had been toned down? I did not go back to find the original one to compare, but the way I remember it it was pretty hardcore about keeping text as text and using tools like for programming (use macros in text to avoid repeating yourself etc).
Overall the 20th anniversary did feel a bit less idealistic? I guess for a "pragmatic" book that makes sense, but I remember the original like it was making stronger arguments for or against things. I really liked the (anti-)IDE chapter, or the parts on the importance of learning how to use a good text editor well, for instance, but now they basically cut that out. Did give me the impression that they were trying to be down with the kids at times.
Alternatively, consider being an idealistic programmer!
I have read many books. If you can only read one book about how to program in your life , I would say that it is this book: A philosophy of software design: John Ousterhout. It is 10 times better than the next best book.
For me “the problem with software, why smart engineers write bad code” is the prequel. Not as technical, but explains a big problem
It's very good. And quite short!
Redundancy groups are full of idealists.
It's ok to be passionate about a topic, but also understand if that topic is still relevant in 3-5 years.
Being an idealist doesn't excuse you from being a realist.
I get you're comparing philosophies but none of those suggestions are mutually exclusive to the lessons taught in this book.
Not only are they not mutually exclusive, but if we're being honest, only idealistic programmers care enough to read Pragmatic Programmer, and they read it in the process of becoming a master.
Yeah, we need both types.
Over specializatoin is the enemy of adaptation.
Amen
I have read a number of programming books but the only two that really stood out to me and that I still remember are The Pragmatic Programmer and K&R The C Programming Language. They are obviously very different but foundational in ways that enabled me to get a lot of things done.
I do still encourage people to learn C only because you could understand how the language works or a long weekend and it will help you appreciate just how things actually work under the hood (and a bit above the assembly instructions level). And TPP is great for helping you understand what to do when actually working on a deliverable project and not just the exciting parts. It’s the difference between building a toy that runs on your machine and a project others can run and use.
You should read A philosophy of software design by John Ousterhout. It might become your favourite book.
My first programming book was K&R as well. It was an excellent introduction to programming.
You might think that coming from K&R, I wouldn't have liked my second and third books, which were two of the first Head First series. They took essentially the opposite approach from K&R, but I enjoyed them too and learned quite a bit. Something about the content lended itself to a more visual approach to the material (maybe the nature of OOP).
It was technically not my first. Really my first was around age 6 or 7 and it was a companion to my grandfather’s Pravetz 8D which had a listing of BASIC commands and I think like 20 or so listings of programs. His students had also programmed a few games that he had copies of which were cool. I ended up trying to modify them and writing some of my own but that’s how I got into this whole thing.
But K&R was the first book that I read that made me feel like I fully understood what was happening. Of course I was missing a lot of nuance a a bunch of abstraction layers that I learned about later but that book felt very self-contained. I read the first time it when I think I was 25 or 26 and at 39 I might want to do a refresher.
I bought the first edition when it came out. I was just 3 years into my SW development career and it provided a lot of good advise. I bought the second edition and enjoyed it, but the first edition had a special place in my heart.
When I started a programming job, I read this book, Clean Code, and Code Complete. Code Complete is kinda old but still great, Clean Code is not bad but it's Java centric and has a lot of questionable tips. But The Pragmatic Programmer never gets old.
I got on very well with Van der Linden's Deep C Secrets. It's from 1994, so misses out on the newer versions, but aside from that it's aged well, IMHO.
And good news: it's been open sourced: https://freecomputerbooks.com/Expert-C-Programming-Deep-C-Se... and its well regarded on Hacker News https://hackernewsbooks.com/book/expert-c-programming-deep-c... .
Are you sure it's been open sourced? I'm reasonably sure you've linked to a site offering pirated copies.
There are several links to PDF versions of the book. None of them include either a copyright page or a statement that it's been released as open source.
The author's own website <https://afu.com/> includes errata for the book, but doesn't provide or mention a free copy.
A free sample of the Kindle version of the book does include a copyright notice. A book published in 1994 is not public domain unless it's been explicitly released.
Something that appears to be a legitimate PDF sample (not the while book) is here:
https://ptgmedia.pearsoncmg.com/images/9780131774292/samplep...
This is my favourite : A philosophy of software design by John Ousterhout. I haven't found a better book.
A great book, but I read it too late, after I had already learned pretty much everything it says the hard way. So it was one of those books I enjoyed because it reinforced what I already thought, but didn't really get much from. Wish it had been written a decade earlier.
I'd say learning things on your own, even if they take time, is still better as you don't have to actively force yourself to develop that mindset. We often rush towards our goal without realizing how important the journey (small steps) is. Isn't reaching the goal more worthwhile if you have enjoyed the journey along the way? Isn't that what it means to be human?
One of my favorite books on the actual practice of programming.
The other one is "Code Complete".
Code Complete is my favorite, hands down. The Psychology of Computer Programming was also very much worth the read.
An incredible book. One very near and dear to my heart. It always sits on the bookshelf behind me with pride of place in every video call or conference.
I’m really glad I got it after stumbling across the original at my university library. It’s really nice reading it from time to time and getting inspired to become a better developer
My first programming book was The ZX81 Basic. The best I ever read.
The best programmer book i've ever read
I have read many books. If you can only read one book about how to program in your life , I would say that it is this book: A philosophy of software design: John Ousterhout. It is 10 times better than the next best book.
Why did you repeat this comment all over this post?