Long post. I bolded the important parts. Unfortunately, this formatting looks a little swiss cheesey as a result.
1: I feel like I'm going to have to jump through hoops just to be acknowledged
I don't post in this StackExchange, but I write a lot of obfuscated and golfed code in my spare time. I don't like hanging out with programmers, especially not on StackExchange, but I like spectating and I like talking about programming.
I'm hoping I don't come off like a jerk -- that's really not what I mean, and a lot of the things I'm most upset about just seem to be things that happen with large groups of people. I moderate another programming community (from a bit of a distance) and I'm very tired of dealing with people who complain that people don't like them, and then they don't change -- I'm probably projecting a little bit of that frustration onto CodeGolf.
There is nobody specific on CodeGolf who I would say is a bad or irritating person, although I have a bad memory for names, so it's possible that if I gave it some thought I'd have some vitriol for some of you. (I'd like to give shout outs to a few of you guys -- like Dennis -- for being really really cool!)
Here are my thoughts on why I don't post here:
- I've read this StackExchange for maybe ~2hr a week for ~6 months. I really like some of the content that gets produced here, but I don't like the moderation or the community. I think I can be authoritative about how this community looks from the outside.
As the author/implementor of multiple esoteric programming languages, I still get turned off by golfing languages. There's an argument to be made that designing an esoteric language can require more cleverness than is apparent -- I absolutely believe this.
It doesn't mean I can see through to the creativity -- especially when these languages obscure the creative trick being used. Especially when a lot of them, like pyth or matl, appear to be crude minmaxing efforts. Taking an existing language and making the variable names one letter long is really not very interesting. The only reason you would ever do that, as far as I know, is if you really like winning and want to win on a technicality.
Even for really good esolangs, my reaction to a wall of nonprinting characters is still "wow, that's a wall of nonprinting characters" -- it's really hard for me to see through that to read creativity.
I feel like people put a whole lot of emphasis onto winning. That means emphasizing:
- nitpicking whether programs exactly implement the specs as given;
- using loopholes, or specifically ruling out loopholes;
- quibbling. There's so much quibbling.
- Creativity does not get rewarded that much:
- Everyone is golfing the same programs, and frequently winners are just esoteric reimplementations of techniques someone introduced in a different answer. There's not as much room to be acknowledged on an answer that doesn't "win."
Here is a concrete example of something I chose not to post because I didn't feel like anyone would take it seriously or give it attention.
- This is a problem that has a trivial solution that has been implemented fifteen or so times: N(e(s(t))) a string
- I wrote a totally straightforward golfed Haskell solution that's very short, but not as short as any of the golfing language solutions. That solution is
f[x]=[x];f(x:y)=x:'(':(f y++")")
I also wrote a solution to a close variant of the problem (with a different terminal case), but for the sake of fun, used no word characters. That solution is ((((++).(>>=(:"("))))<*>(>>")"))
.
I think this solution is a really fun monstrosity, but it fails on some technicalities:
- it generates strings like "a(b(c()))" instead of "a(b(c))"
- it requires
import Control.Applicative
-- which is a standard library module that almost every project imports in every file.
I elected not to post it because I figured I would be nitpicked and told I didn't follow the spec. It's possible this is what you guys want to encourage, but I feel like the demonstrated outcome of this situation is: (1) I am a guy who is able to produce weird golfy programs (2) I am too turned off to work with you. I am probably not the only person who has thought this.
I think a lot of this is just StackExchange culture. (and it's part of why I don't post on StackExchange more often)
But I think the StackExchange culture problem is worse here. If you ask me, this StackExchange has the same problems that a "comedy" StackExchange would have -- you can't win at telling jokes, even though you can compete. Quibbling over who told the best joke, or trying to turn the quality of a joke into a technical topic, imho misses the point of joke telling.
Obviously you can objectively assess how golfed code is by looking at how short it is, but I think treating that as an overriding concern dismisses a ton of creativity.
2: If I complain, I will be ignored. This is happening to people other than me in the comments of this very question
This is the real reason I wanted to write this answer. My estimation: I have probably read around twenty pages of CodeGolf complaints since I started reading this website. Here is a list of responses I have seen complainers get. The complainers usually leave the discussion. I don't know if they continue posting on CodeGolf:
It's weird that this thing bothers you (CodeGolf non-participant), because it doesn't bother me (CodeGolf participant) at all!
This site selects for people who like the culture on this site. If it bothers other people but not you, then you are possibly part of the problem. I'm not saying those other people aren't wrong too, but you're the one trying to get attention.
In general, your existing users are disproportionately loud compared to the users who are looking at your site and saying "this isn't for me" -- especially when your discussion is really buried in a place like meta.codegolf.
I know this bothers you, but it's not going to change.
OK, but understand that when you dismiss someone like this, you're also dismissing a whole lot of people who never said anything. In the past six months I've visited around ~20 communities which were moderated in a way that totally turned me off, and I complained in two. If every user is like me, then you're bleeding ten users for every user who complains.
But based on my experience as a moderator on other sites, I would guess most users are much less likely to post than me if they're upset, and far more likely to leave. I bled eight users in a week over a problem that, as far as I knew, only one person was bothered by. Instead of addressing it I ignored it and then about five more people quit. Those are just the people who told me it was bothering them.
We're not really like that.
It's very easy to say this kind of thing when you're on the inside. But it's really hard to know how you come off to the outside -- as far as I can tell, everyone here including me has been as honest as possible about how CodeGolf comes across from the outside, and I really think it's not a nice picture.
The solution is [something new users should do that they're not doing]
This is very easy to say as an old user and it's an absolute turnoff as a new user. There's a level of change I'm comfortable making if I want to be a member of someone's club, but I don't think the value proposition of CodeGolf is actually that strong. Like I went over above: I would rather post on a different website than deal with the possibility of being nitpicked.
There are a lot of people, mostly smarter than me, that don't have to do an iota of self-examination to feel unwelcome. Those people leave the second they hear stuff like this.
The solution is [something existing non-moderator users should be doing]
The answers by xnor ("Skillful golfing," "Strive to outgolf") pin the blame on unnamed internal users who do not golf well. Those users are not reading this post and probably will not change. If they do read this post, they won't think that they're the problem.
I'm not saying this is wrong, but it's not really actionable.
I'm not going to listen to your suggestion until you engage in a semantics argument with me.
This has happened in many "what is a golfing language?" discussions. "You're saying we should ban golfing languages. Well, is APL a golfing language? How about J? What about CJam or Retina or Matlab? You're not going to tell me FORTH is esoteric, are you?"
What usually happens is that the guy who complained about golfing languages leaves -- the insider who likes golfing languages gets to feel smug. This is not a behavior that helps you gain and keep new members, even if you're pretty sure those new members are wrong.
In the community I moderate, I think of semantics arguments as an indication that the surrounding discussion has failed. They force a new user to prove his dedication to group signifiers or else get lost. Someone who starts a semantic argument usually doesn't intend to change his mind.
This is especially true when you're in a discussion context that gives one party a lot of power and the other party not much power at all. (e.g. "I have all my friends here, you don't have any friends" -- "I have a number next to my name that says I'm smart; you don't have a number next to your name that says you're smart")
My actionable suggestions:
Encourage (on an official level) challenges that don't allow for "golfing languages." I don't know what the criterion is and I'm not interested in getting in a semantic argument here. We have a loopholes list -- we can keep a golfing languages list. By nature it'll be weird and arbitrary, and people will probably break those rules if they think the thing they're posting is interesting anyway. (And they'll be right to do it.)
Encourage challenges that don't have objective criteria for winning.
Encourage challenges where solutions aren't expected to duplicate others. (e.g. "Create this output" is bad -- "make a nice drawing" is good, because no one expects you to duplicate someone else's nice drawing)
Where encouraging a standard means, concretely:
Put the encouraged standard somewhere incredibly visible on the website.
Modpost when people don't meet the standard you're encouraging them to follow.
Correct existing unanswered challenges to match the new standard.
Repost variants of old challenges edited to meet the new standard.
3: Ask this question on other golfing sites instead of meta.codegolf.
Almost everyone qualified to respond to this question is not posting on this website.
4: Note on people who already like the CodeGolf format, but don't participate on CodeGolf
Peter Taylor points out in the comments: this answer broadly targets recreational programmers. He thinks this question pertains more to people who:
- like being scored solely on length
- like it when everyone writes the same program
(He makes a good argument for this: you should read it below.)
Those people might not care about "everyone writes the same program" or "the biggest influencer of your score appears to be length," but you might:
- have someone moderatorial go over and ask why these people aren't posting on CodeGolf
- ask how they feel about cross-language contests, the CodeGolf scoring format, golfing programming languages
I'd love to speculate about the degree of overlap between the people I'm talking about and the people he's talking about, but I'm not a sociologist, so if I speculate too much about large populations of people, someone will probably die.