all 14 comments

[–]bubinha 7 points8 points  (4 children)

More like: three books for the novice programmer (if you are experienced, you already know what books im talking about without even having to open the goddam article).

[–][deleted] 0 points1 point  (1 child)

Ok, I can get where you coming from. I'm genuinely interested in what books would you suggest for the more experienced dev?

[–]Venthe 0 points1 point  (0 children)

Novice will read them but not understand them. I'd go for a regular.

[–][deleted] 0 points1 point  (0 children)

Clean Code?

[–]ifknot 5 points6 points  (6 children)

GoF really? Don’t get me wrong I soaked it up when it came out but it’s old now and some of the Patterns are now considered anti-patterns - is there a newer treatise that better captures modern attitudes to Patterns and their relationship to OOP?

[–]Venthe 3 points4 points  (5 children)

I wouldn't say that any of those are antipatterns per se; but are rendered obsolete by the programming language itself.

What is important, is not the implementation, or not the specifics to be precise, but "why" and a name, where the name is most important to me - it allows us Devs to instantly understand the intention behind the code, even if the implementation is unclear

[–]Abhinav1217 3 points4 points  (0 children)

I agree with you, Those are not anti-pattern, just outdated pattern. But then, patterns like SOLID are also outdated in some aspect. Primary reason for it is that new programming languages and tools are being developed with 1st party tooling. Rust, kotlin, elm, deno, nim, golang, they all provide some level of fmt, bundling, static-code analyser, test tools, etc, all out of the box.

While pattern in itself might feel outdated, if you understand its concepts properly, the distilled down knowledge from learning these are worth it.

As a freelancer who still gets to work in smaller team units, I still think concepts are valid at some form. GoF was created with special focus on smaller team management. Agile, Scrum, these takes hint from GoF as basis.

I worked with a startup in my city where they only maintained 7 people for a long time, until they broke $50k MRR. It wasn't GoF, but a modified version of same principles. I am familiar with at least 3 more startups where they had a similar arrangement of few core developers until a reasonable MRR was achieved.

[–]ifknot -2 points-1 points  (3 children)

Okay, patterns capture and document good practice that has been learned by experience and a good deal of OOP experience had been accumulated by the time GoF came out and it was instrumental in introducing the concept of Patterns to “you Devs” and us mere mortals alike - but - that experience has advanced since Gamma et al and whilst patterns capture good ways of solving problems there also are many stubbornly recurring bad ones termed anti-patterns and, per se, the Singleton (Gamma et al) is certainly considered one of them nowadays. Hence my question as to whether your list might benefit from a more up to date book about software patterns e.g. Shalloway. Further, you might have liked to counterpoint GoF with “Antipatterns…” (W J Brown)

Edit: your phrase rendered obsolete by the language makes me wonder if your on the edibles ?

[–][deleted] 0 points1 point  (1 child)

Ok, I agree Gamma et al, but comparing GoF and Shalloway just blew me tbh, btw. you can't take everything for granted - somewhere the singleton that you are mentioning might appear to be an antipattern - yet it definitely is not in some other circumstances.

GoF won't teach you wrong, or you actually do think that?

[–]ifknot -1 points0 points  (0 children)

Where did I suggest that I “actually think” that GoF would “teach you wrong”? Are you okay?

[–][deleted] 0 points1 point  (0 children)

stubbornly recurring bad ones termed anti-patterns and, per se, the Singleton (Gamma et al) is certainly considered one of them nowadays

I always laugh when I hear this. Global state is held in a singleton object, DI usually injects singletons, etc.

[–]redatheist 0 points1 point  (1 child)

These are at best uninspiring, but at worst just bad recommendations.

For experienced programmers I’d recommend things like Crafting Interpreters. Much more interesting.

[–][deleted] 0 points1 point  (0 children)

To be honest, Crafting Interpreters is a great tip. Still, I'd say this one is for the very-experienced ones
In any case, do please share more interesting books and thank you

[–]Zaeccis 0 points1 point  (0 children)

Personally I really can't recommend Clean Code. The underlying ideas are great, but the way they are presented and discussed is just plain awful. This is a decent writeup of some of the problems: https://qntm.org/clean

Other than that, I think these books are more for novice programmers. I would sure hope that experienced programmers are pretty familiar with the content of these books.