Well, it describes people like GP as "writing a recipe for a horrendously unimaginative cook." It's telling them that they're writing clunky, minutia-obsessed instructions, instead of elegantly orchestrating a collection of mathematical functions.
Not me, specifically, although it does, occasionally, get personal.
It’s basic human nature. We always reinforce that the way we do things (in this case, FP), is The One, True Way, and all who do otherwise are to be pitied/scorned.
I’m a real slob. I mix my peanut butter and chocolate all the time. I may use 35-year-old techniques, and mix them with just-published-brand-spanking-new stuff.
I get stuff done. It may be a sausage-and-laws thing, but the end results seem to make people fairly happy.
A great deal of the time, I’m constrained by the context of my work. For example, I write software for Apple devices, and am still one of the poor, unenlightened that writes using UIKit. I haven’t written my first shipping product with SwiftUI.
If we write in UIKit, we can use different patterns, but UIKit was designed to be implemented, using classic MVC, and lots of OO. Attempting to circumvent these design considerations is a “kludge,” at best. If we want to write good, performant, maintainable software for Apple devices, we need to hold our noses, and use the tool the way it was designed.
Apple is refining SwiftUI, which I’m really looking forward to learning and shipping, but I am not there, yet, personally.
I assume that SwiftUI will also end up using a pattern that will become “obsolete,” even while SwiftUI is still the dominant development tool, much as is the case with UIKit.
Also, SV (or it could just be this community, specifically) seems to be focused on “going big.” I think there was a post, a day or two ago, entitled something like “I don't know how to count that low,” or whatnot.
The work I do is “small.” It may actually be fairly intense, “under the hood,” but I write stuff for small demographics, and spend a great deal of time, “polishing the fenders.” This is doing things like ensuring a smooth and intuitive UI workflow, presenting data in as simple and attractive a manner as possible, affording localization and accessibility, etc.
These are all about the individual end-user. They are not “big picture” things, and I have limited tools and venues at my disposal. I need to be practical, and make compromises and concessions to achieve my goals.
I have nothing but awe for some of the technology and technologists out there. It’s a great time to be alive. Cool stuff is happening.
It’s just that a lot of it doesn’t really reach me, down in the trenches, and it’s discouraging to see the mindset that what folks like me do, “doesn’t matter.”
> We always reinforce that the way we do things (in this case, FP), is The One, True Way
Just curious... have you played with functional languages before? It may feel like snobbery to you, but once you start thinking functionaly, it really does feel like you're painting a house with rollers and a spray gun rather than a wet noodle.
How many Apple apps have you delivered, and how many of those were written in a functional language (Swift can act as a functional language, but it is not a "pure" one.)?
Seriously. We all have our specialties. It is, indeed, "snobbery," when we rubbish the experience and expertise of folks that choose different paths. I won't rubbish some of the truly marvelous stuff I see, coming from people that think what I do is "quaint." It would be nice if the favor of respect were returned.
Delivering ship software is quite valuable; especially at the Quality and Usability bar that I set for myself. I suspect that you may not be aware of the Discipline, creativity, patience, and just plain old-fashioned Hard Work that goes into moving a piece of software out of the "toy" arena, and into the "ship" arena. The difference in project lifecycle times is quite sobering.
I can write a fairly full-featured app, in a couple of days, but it takes months to make one that I consider "ship-worthy," and I'm really at the top of my game, in my sandbox.
I have been delivering ship software for my entire adult life. I know that it isn't world-changing, prize-winning, theoretical marvels, but it has had direct and meaningful impact on thousands of lives.
I really appreciate it when the work of theorists makes it to my level. The Swift language is an object example. I really like it, and I know that one of the big reasons is because they cribbed from the FP workbook.
I think you're taking my comment too personally. I'm not attacking what you're saying. I completely understand where you're coming from, and that's from a Perl developer of 13 years.
But what I'm trying to say is that this isn't about quantity shipped or how many users you have made happy - what I'm trying to convey is a measure of programming artistry and helping you see and maybe appreciate it.
Maybe a better analogy - I understand you like Rock music and that it's the only thing you play in your car, you grew up with it and it's all your friends ever talk about... but maybe if you looked at Jazz, you may be able to enjoy it as well.
... sorry if it came out as condescending, that wasn't my intention.
Yah, you’re right. I am sensitive. Comes from being primarily self-taught, and spending a lifetime, staring up noses.
I also have problems with “purism,” when it comes to tools and techniques. Purism, by definition, eschews orthogonal viewpoints, and I feel that’s quite destructive. I also feel that it is anti-intellectual. One thing I’ve learned, over the years, is that I was definitely right, yesterday, but I’m definitely wrong, today. Happens regularly, and that can get tiresome (but it’s unavoidable -part of the price I pay, for a career in tech).
I really like the ideas behind FP. It’s just that it is not a practical tool, for me to use in anything close to pure form, in the drive towards realizing my goals. I do not have the luxury of purism. I’ve always had to play in someone else’s sandbox, and by their rules. Believe it or not, that can be quite exhilarating.
A house framer uses drills, saws, and nailguns. They can’t make these tools, but they use them, to do what the people that designed those tools, cannot do.