You don't think the damage was done by the people who religiously follow whatever loudmouths says? Those are the people I'd stop listening to, rather than ignoring what an educator says when sharing their perspective.
Don't get me wrong, I feel like Fowler is wrong about some things too, and wouldn't follow what he says as dogma, but I don't think I'd attribute companies going after the latest fad as his fault.
You need to understand that Mr. Fowler works for a consultancy.
LLMs sound great for consultants. A messy hyped technology that you can charge to pretend to fix? Jackpot.
All things these consultancies eventually promote are learnings they had with their own clients.
The OOP patterns he described in the past likely came from observing real developers while being in this consultant role, and _trying_ to document how they overcame typical problems of the time.
I have a feeling that the real people with skin on the game (not consultants) that came up with that stuff would describe it in much simpler terms.
Similarly, it is likely that some of these posts are based on real experience but "consultancified" (made vague and more complex than it needs to be).
I'm a bit too lazy to check, but didn't he leave thoughtworks?
Apropos of nothing I saw him speak once at a corporate shindig and I didn't get the impression that he enjoyed it very much. Some of the engineering management were being super weird about him being a (very niche) famous person too...
> [...] I don't come up with original ideas, but do a pretty good job of recognizing and packaging the ideas of others [...]
> [...] I see my main role as helping my colleagues to capture and promulgate what we've learned about software development to help our profession improve. We've always believed that this openness helps us find clients, recruit the best people, and help our clients succeed. [...]
So, we should read him as such. It's a consultant, trying to capture what successful teams do. Sometimes succeeding, sometimes failing.
> gloriefied global variable is pretty high on my BS list
Say you have a test that is asserting the output of some code, and that code is using a global variable of some kind, how do you ensure you can have tests that are using different values for that global variable and it all works? You'd need to be able to change it during tests somehow.
Personally, I think a lot of the annoying parts of programming go away when you use a more expressive language (like Clojure), including this one. But for other languages, you might need to work around the limitations of the language and then approaches like using Singletons might make more sense.
At the same time, Fowlers perspective is pretty much always in the context of "I have this piece of already written code I need to make slightly better", obviously the easy way is to not have global variables in the first place, but when working with legacy code you do stumble upon one or three non-optimal conditions.
So all global and static variables without exception are bad, therefore calling them singletons and documenting when and how to use and not use them is bad, huh?
Do you really believe that nobody would be using global variables if it weren't for Martin Fowler? Do you never use them?
His Refactoring book was a good thing at the time. But it ends there, he should have tried to program instead of writing all the other books that made no sense.
(Attaching too much value to the person instead of the argument is more of an ‘argument from authority’)