27 comments

[ 4.7 ms ] story [ 65.8 ms ] thread
I'd already been pondering rereading my old copy because I haven't read through it in about a decade. Now I can just wait and get an updated edition. Perfect timing. I'm sort of excited for this because the first edition was a book I felt helped me a lot early in my career, though I read it so long ago I don't remember which specific lessons I took from it.
Twenty years?!? My god I feel old.

Also, 1999 was an especially good year wasn't it? The Matrix, Fight Club, Eyes Wide Shut, American Beauty, The Iron Giant, Being John Malkovich, Magnolia...

...and The Pragmatic Programmer.

Cryptonomicon as well. Coming up on its 20 year anniversary (May 1999.)

Refactoring (Martin Fowler).

Speaking of the Matrix, eXistenZ (very strange), and the Thirteenth Floor (didn't watch it), and probably some others with a similar theme like that also came out that year.

Cryptonomicon too?! Well I'll be darned.

Refactoring... wow. How many programmers have been redefined by works published that year alone?

I can't say eXistenZ was a particularly good movie in any objective way, but I enjoyed it and watched it several times.

Thirteenth Floor has been on my Netflix queue for a while... I should really get around to it.

>Refactoring (Martin Fowler)

I've heard very good things about this book, is it worth a read for a more seasoned dev?

The first one third is worth a read, the rest is kind of filler
Glad I just bought this a few months ago...
I just finished reading this last week. I can see where certain sections need to be updated as they are less relevant in today's coding world.

Some of the topics covered in the book grew and became more popular (Unit testing frameworks like JUnit) and some did not (Blackboards).

The general concept of a blackboard is basically describing pubsub systems like Kafka - you throw a bunch of data into a queue, and anything that’s interested can grab that information, and potentially then publish further information built on top of it.
I may not remember correctly but I think blackboards were tuplespaces, which have some differences with plain pubsub, though they can both be used to solve some of the same problems.
Blackboards are very different from pubsub/queues. They are more like shared DB integration.
An example of a blackboard system in the wild that many would be exposed to today is kubernetes
Great news! I first found this book at the end of my first year in a corporate dev job, as I was becoming a bit bored/disillusioned with the industry. Most of the lessons were great and have improved my career. (Here's a succinct list of the Tips from the first edition: https://pragprog.com/the-pragmatic-programmer/extracts/tips)

The only piece I'd probably eliminate was focused on code generation ("Write Code That Writes Code"). The idea is fascinating and led me down a rabbit hole. I've always looked for an opportunity to do code-gen since, and have never really found a good one.

Eliminate it or not, it's how big projects are managed, in some industries at least. Instead of rewriting the same stuff over and over again, paying attention to the slightest of details, you generate your code based on the slightly modified new requirement which can be an excel sheet that all the stakeholders can read. Taken to the extreme, even the configs are done by clicking menus and buttons where a single line of code could would suffice. This is taken to the extreme, I agree, and it's the reason lots of devs are not so happy with their jobs. But it's also necessary, I suppose, if you want to externalize your projects to far away lands or you can't find top-notch devs for each and every project: you simplify and dumb down the work. Code generation helps here. It removes the hairy details.

From another view, eliminate you cannot not, since if you think nice and deep about it, what your compiler does is to generate code. You use this idea everyday, even if you know it or not. It's code generators all the way down.

I have run into the same situation as you, and it always seems to be bad timing to invest into code generation for projects. I am not affiliated with this project, but I have good success with http://www.hygen.io/ especially with component frameworks and resolver middleware boilerplate getting deeper and deeper.
I wrote this about the pragmatic programmer a while ago

https://news.ycombinator.com/item?id=17031609#17031874

Long story short, great book if you read it in the first year of your career but you'll get alot less out of it if you read it later on in your career.

Again it wasn't a knock on the book, I also put the Mythical Man month in the same category.

The "problem" these books have is that they cover alot of foundational concepts about being a programmer that you'll eventually learn on your own if you are even half way introspective.

Reading them early can really jumpstart your programming abilities, reading them later on in your career could have you wondering why everyone recommends a book that just lists out all the common sense ideas that you already know because you earned that knowledge.

A lot of what you say about The Pragmatic Programmer, applies to the book Code Complete too, particularly your last paragraph, however, it has so many "good practices" points, that it is worth reviewing now and then, even for experienced programmers, IMO.
> A lot of what you say about The Pragmatic Programmer, applies to the book Code Complete too

Agreed, that's why I listed that book in my linked comment:)

Oh cool, I did not read it since I thought you gave a summary of it in the comment I was replying to. Now I will :)
I think these books are very valuable for people in management and leadership roles. Instead of just working with the often misguided processes and setups in a lot of companies it’s good to go back to the basics and rethink how things are being done.
That’s a good point about books in general—not every book is worth reading and the information inside is only as valuable as the interest it generates or problems it solves.
Most companies I've worked at fail at the fundamentals in PP. If you can't do the fundamentals, no way to do more.
Is it true that: Pragmatic means logical, and Practical means real ?

And logical doesn't need to be real. (While being real means logical)

Interesting. I just started reading this (the original version) last week. Since I'm already a pretty experienced programmer, I'm not getting that much out of it, but it's been fun to read.

I'm not sure if I should abandon it now, and wait for the new version, or just keep reading the old version and enjoying all the dated references to 56k modems and all that stuff.