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.
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...
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.
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.
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.
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.
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.
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.
27 comments
[ 4.7 ms ] story [ 65.8 ms ] threadAlso, 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.
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.
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.
I've heard very good things about this book, is it worth a read for a more seasoned dev?
Some of the topics covered in the book grew and became more popular (Unit testing frameworks like JUnit) and some did not (Blackboards).
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.
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.
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.
Agreed, that's why I listed that book in my linked comment:)
- A quick reference for the important points in Pragmatic Programmer :https://blog.codinghorror.com/a-pragmatic-quick-reference/
- Code Complete: http://codecourse.sourceforge.net/materials/Code-Complete-A-...
And logical doesn't need to be real. (While being real means logical)
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.