4 ms·
> I mean, yes you could argue for no true scottsman here, but it is a little different when the initial book or whatever that spurred the movement is the one be
by _gabe_ 3y ago
> I mean, yes you could argue for no true scottsman here, but it is a little different when the initial book or whatever that spurred the movement is the one being quoted.
I honestly have no idea whether this makes any difference. I'll take SOLID
as an example. I know I've debated several people about the drawbacks of SOLID and how I believe those outweigh any proposed benefits. And almost every time I do this, people will tell me that I just didn't use it correctly, even when I am basing my opinion off the original blogs etc that started the principle.
When that fails, I'll point to code that I've seen in production, in real world codebases, and they'll just tell me those people are using it wrong, even though it seems that no matter where I work code that follows SOLID looks awfully similar to what I described. I think this still falls into the No True Scotsman fallacy.
I guess I'm basically saying, does it matter if the original authors of a principle had a certain ideal in mind when they coined the principal if the colloquial use is vastly different? I think OOP is a perfect example of this, because most people mean something very different than what Alan Kay meant. However, if I argue against OOP it's generally understood I'm not arguing with Alan Kay's idea of message passing even though that was the original intent.
Edit: but overall I do agree with your sentiment haha. A 3 word principle is bound to have many interpretations. It just irks me when people try to call out an argument with a "technically it really means this..." when everybody understands that "sure while it technically means this everybody really ends up using it like this...".
- Sakos 3y agoI'm interested in what the drawbacks of SOLID are. Do you have any links or could you briefly outline some?
- _gabe_ 3y agoSure! Here's a few: http://qualityisspeed.blogspot.com/2014/08/why-i-dont-teach-solid.html?m=1 http://qualityisspeed.blogspot.com/2014/08/why-i-dont-teach-... https://blog.cerebralab.com/Bimodal_programming_%E2%80%93_why_design_patterns_fail https://blog.cerebralab.com/Bimodal_programming_%E2%80%93_wh... https://stackoverflow.com/questions/2997965/are-solid-principles-really-solid https://stackoverflow.com/questions/2997965/are-solid-princi... And I have my own opinions of course, but to summarize I usually see SOLID code bases lead to extraordinarily overabstracted code bases that are impossible to debug or explore because everything is an interface that's injected through some DI framework. Exploring these code bases is a nightmare because everytime you Ctrl+Click a function, you're taken to an interface. The best part, the interface only has one implementation 99 times out of 100. But boy does it mess up your flow when your actively tracing and trying to understand a code path. I would argue debugging + maintenance are the majority of a programmer's job. So any ideology that obfuscates your code and makes it increasingly difficult to maintain is not something I want people I code with to follow.