How can we attract experienced golfers?

There are people who have already been golfing for a while on other golfing sites, language-specific forums, local groups, and so on. I think we'd benefit a lot from having them here to contribute their knowledge and enthusiasm.

What can we do better to attract experienced golfers to join us?

• I feel like this question is very dependent on the other sites you are talking about (e.g. whether you can advertise PPCG on them or not). – Fatalize Oct 17 '16 at 11:37
• This question should be closed as primarily opinion based. ;) – anonymous2 Oct 17 '16 at 15:47
• @Fatalize Are there sites we could advertise on? I'd be interested in an answer about doing that – xnor Oct 17 '16 at 23:16
• @xnor Reddit possibly? – Fatalize Oct 18 '16 at 7:25
• How does one obtain experience in golfing? – Neil Oct 18 '16 at 11:25
• @Fatalize reddit.com/r/codegolf – cat Oct 18 '16 at 15:06
• Is the goal to attract people using golf languages? Or is the goal to attract people interested in puzzles and golf using normal languages? – enderland Oct 19 '16 at 13:31
• @enderland Both. – mbomb007 Oct 19 '16 at 13:49
• @mbomb007 as a non-"golfer" I am pretty turned off when I see every HNQ where most of the top answers use languages built explicitly for the purpose of making convoluted and impossible to read code to minimize the total number of characters. ¯_(ツ)_/¯ That's a pretty big detraction from me being involved here with normal languages. Not sure if other people feel similarly to me or not. – enderland Oct 19 '16 at 14:59
• @enderland Same. IMHO, people should create languages for the purpose of doing something special or unique, like Martin's languages Hexagony or Retina. People who make languages that are mostly golfed versions of existing languages (Pyth, MATL) or for the sole purpose of having one-character functions are not creative. The purpose of PPCG is to get creative programs that happen to be short, not short programs that happen to be creative. – mbomb007 Oct 19 '16 at 19:52
• @mbomb007 I'm not really sure I see the difference. A language specifically designed for purposes of golfing (maybe those languages aren't golf intended languages, I don't know, I can't imagine what other purpose a language using obscure symbols to represent things has) makes it not interesting to post if you are using a more verbose language. How can someone who writes Java compete with Retina for shortest answer, a criteria in most answers here? Almost impossible. And thus really disinteresting. I think you need to accept that a ton of "normal" programmers won't be interested as a result – enderland Oct 19 '16 at 19:56
• @enderland That's your loss. You have to understand that Retina isn't built entirely for golfing. If you knew regex at all, you'd know that. For the most part, it uses .NET regular expression syntax. The personal goal is not to be the shortest answer. Just do the best you can, and stop upvoting answers that are short but you don't understand. – mbomb007 Oct 19 '16 at 20:01
• @mbomb007 ... ok? I'm not the one asking how to engage other people, you (technically your site, not just you individually) are. I'm giving you my perspective as someone familiar with the site from a lot of HNQ. – enderland Oct 19 '16 at 20:02
• @enderland You might want to have a look at the question mbomb's linked answer belongs to. We're very much aware that people are put off by the use of golfing languages, but they're not going to go away. Partly, because designing and using golfing languages is a lot harder and more interesting than laymen will give it credit (as evidenced by the above discussion). (ctd...) – Martin Ender Oct 20 '16 at 8:23
• Also, there are many esoteric languages (which you'd consider obscure and unreadable) which were not designed for golfing. I'm sure you've seen Brainfuck before? Their purpose is recreational programming. I'm also not sure why it's not interesting to post in a normal language, if there is already an answer in a golfing language? If you're only golfing for the checkmark, then you're not going to get much enjoyment out of golfing anyway. A well-golfed Python or Java answer can be very interesting (and fun to craft) regardless of other existing answers. – Martin Ender Oct 20 '16 at 8:25

Strive to outgolf

For skilled golfers to take us seriously, they need to see us try for the best golf.

If someone's already submitted in your favorite language, take it as a challenge to do better. Don't just move on because it's "been done". Write your own golf in that language, or suggest improvements to theirs. We need to get rid of the attitude that the first person to post in a language has claimed it.

There are many things you can do to encourage this.

• Vote for later-posted submissions. Don't just vote for the first thing you see.

• Appreciate small improvements. A 53-byte solution versus 56 bytes may be the difference between a fantastic golf and an OK one, even if the code is much the same.

• Be a good sport when you're outgolfed. Congratulate the person who beat you.

• Don't accuse a similar-looking solution of having copied. It's rude, and they almost surely came up with it on their own.

• Don't complain about a submission being longer than an already-posted one. Chances are it's a less experienced golfer who tried hard on their own and deserve to be proud of their efforts.

• Don't be shy about posting your own solution. Even if there's already one in that language, you don't have to post your improvements as comments on it. Even if you looked at the solution and improved it significantly, you can post as your own answer and give credit.

• I personally have submissions sorted by "active", so that I see those that are golfed (presumably) first. – Conor O'Brien Oct 28 '16 at 19:10

Vote.

The main mechanism of stackexchange is voting. As @LuisMendo said, if you attract more users in general, you will gradually bring in those more experienced golfers.

When you see a good answer or question, vote it up. It attracts new users when they see there reputation going up because of a good post. As they get used to the system, they will learn to love it and improve their post quality. You have the power to vote. Do it.

• I do agree that voting is important, but you have to vote on the right posts. Seeing a 0-byte hello world program with 200+ votes isn't going to encourage experienced golfers to join, but drive them away. – DJMcMayhem Oct 20 '16 at 13:38
• Absolutely. However seeing an excellent answer with only 2 votes is also going to drive them away. Point is: vote up good posts. Don't vote up bad posts. – anonymous2 Oct 20 '16 at 13:40

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.

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.

• About the minmaxing efforts: I would definitely not say a lot of languages are like that. Sure, maybe the early ones like GolfScript/CJam/Pyth, but after that there haven't been many more like that IMO. About the fun variant? It's fine to post it as a note on your answer - people do that all the time. A golfing languages list? That definitely won't work. Every single language has a different level of average verbosity - Java is almost always going to lose even if every single language even remotely close to golfy is excluded, Perl is going to be very competitive. – ASCII-only Oct 25 '16 at 13:20
• Furthermore, we are a multiple-language golfing site. Languages are not meant to be pitched against each other. Other scoring systems? It's possible, but a very subjective one (like popularity-contest) just doesn't work the way it currently is. About whether programs implement the spec exactly? Every single golfing site does that. Most even have automated validation. Loopholes? They're there for a reason - we don't want a winning answer that anyone could come up with easily e.g. compression via a URL shortener. – ASCII-only Oct 25 '16 at 13:31
• This seems to me to be an answer to a very different question. The question specifically asks how to attract people with a strong interest in a specific objective scoring mechanism, and a large part of your actionable suggestions is to promote challenges which deliberately avoid it. – Peter Taylor Oct 25 '16 at 18:25
• No, the question asks how to attract "experienced golfers." These are not necessarily people who are attracted to the "smaller code size generally wins" format that CodeGolf promotes. – Zekka Oct 25 '16 at 23:35
• Thanks for sharing your perspective. An outside view just what I was looking for. – xnor Oct 25 '16 at 23:36
• "Furthermore, we are a multiple-language golfing site. Languages are not [...] pitched against each other." This doesn't appear to be true. The feeling I get -- and this is a feeling -- answers get voted up based on size more than based on subjectives -- I haven't done the data on this though. I bet I'm not the only one with this feeling. IMHO it's OK to say "these ideas won't work for our format." As a golfer who doesn't post here, that just tells me I won't be happy under your format. I doubt I'm the only one. "Doc, I'm fat. Why?" "Stop eating food." "No." – Zekka Oct 25 '16 at 23:40
• Oh, one other thing: I think we're coming at this with really different reference points. I'm less of a golfer, more of an obfuscated code guy. Compare the IOCCC, which is a competitive event with minimal objective standards where everyone writes different programs. So from my viewpoint, "everyone writes the same program and then we measure them" is actually an abnormality. Most of the guys I know would not be into that. – Zekka Oct 25 '16 at 23:49
• Key word: golfers. As in "people who have already been golfing for a while on other golfing sites". The question is explicitly about people who do code-golf, not other forms of recreational programming. If people aren't "attracted to the "smaller code size generally wins" format that CodeGolf promotes" then they are not golfers, and this question is not about them. – Peter Taylor Oct 26 '16 at 7:28
• I think I get what you mean! If that's what asker meant, then no argument, but I totally assumed they colloquially meant "people who write small+weird programs for the purpose of showing off." Let me write a quick addendum tailoring parts of this answer to the population you're talking about. – Zekka Oct 26 '16 at 16:34
• I should say that there are always going to be languages that are small, even without golfing languages, agreeing with @ASCII-only . I have made an esolang, Turtlèd, that is not a golfing lang, however, it does tend to beat non-esolangs. Should Turtlèd be excluded from participating because it does well? Also, while you can't post a competing submission that doesn't follow the spec, you can easily post it on your existing answer as a noncompeting bonus program that might be interesting. – Destructible Lemon Oct 27 '16 at 0:27
• I think this is an instance of the argument I didn't want to have. – Zekka Oct 27 '16 at 0:36
• Er, whoops. I accidentally terminated that comment way too early. – Zekka Oct 27 '16 at 0:36
• By "I think this is an instance of the argument I didn't want to have," I meant I see two problems here. One is that outsiders will see Perl and say "horrible esoteric languages?" I'm leaving. I don't think they'll say that with "normal" terse languages such as Ruby, Perl and Haskell. The other is that guys who like really interestnig terse languages (like Jelly) will feel excluded. I suspect (but can't prove) that the people who post here care a lot about the second problem, but the average non-posting visitor cares far more about the first -- and there are more non-posting visitors. – Zekka Oct 27 '16 at 0:41

Skillful golfing

Ultimately, we need for experienced golfers to find our community worth their attention. That means having competing golf submissions that challenge or even impress them. If they just see poorly-golfed submissions in their language of choice, they won't consider this as a place for "real golfers". Or, perhaps, they will submit a few solutions to show off, then get bored quickly.

• i.e. get dennis to golf more – noɥʇʎԀʎzɐɹƆ Oct 24 '16 at 22:23
• There is plenty of skilled golfing on this site. Wide variation in skill level is to be expected, unless there is a selection process such as qualifying rounds in a contest. – Mitch Schwartz Oct 29 '16 at 20:14
• This answer has several "maybe other golfers see the site this way" statements, and I find it somewhat disturbing: wanting to be impressed, looking down on a site if not everyone is skilled, participating just to show off. For me this comes across as an insult, "I think experienced golfers from other sites are probably arrogant and shallow". But it seems strange to insult the people you want to attract? Maybe arrogance and shallowness are seen as positive traits in this community? Or maybe you think that people who like to compete are like this? Maybe I read it wrong? I'm confused. – Mitch Schwartz Oct 29 '16 at 20:41
• @MitchSchwartz I certainly don't mean this as an insult. Perhaps I am unfairly caricaturing them by exaggerating the reaction. I wouldn't find it arrogant or shallow if someone found this site not worth participating in if they correctly see that level of golfing is much lower than they want. I'd think it the same as an experienced chess master declining to join a chess club where all their potential opponents are much weaker than them. I would be happy to have a golfer like I describe gets a better impression on a second look and decides to join. – xnor Nov 1 '16 at 3:23
• @xnor Thanks for clarifying. I think it goes beyond exaggeration, but I don't want to belabor the issue. Incidentally, it just occurred to me that saying "these people aren't real golfers" could be an accurate assessment that they lack a genuine interest in golf, as opposed to being an expression of dismissive condescension (which I think is how "not a real X" is usually used these days (and often ironically)). – Mitch Schwartz Nov 11 '16 at 12:21
• (Clarifying more, "not a real golfer" doesn't necessarily refer just to skill level; it can refer to interest/attitude as well.) – Mitch Schwartz Nov 11 '16 at 12:47

By attracting more users in general

If we can attract more users in general, that will automatically help get experienced golfers from other sites. Everyone, and specially someone with experience, prefers to join a site where they can show off demostrate their abilities in front of a larger audience.

• But how can we attract more users in general? Is there a post about this already? I seem to recall one... – ETHproductions Oct 18 '16 at 13:47
• Showing off is definitely a value proposition for experienced golfers. But I'm not so sure more users will automatically help. We're already pretty big -- would a larger audience really matter? And more users splits attention over more answers, making it easier for their answer to be missed. – xnor Oct 18 '16 at 16:36
• That very much depends. If experienced golfers are avoiding the site because they feel it would be casting pearls before swine, adding swine isn't going to help. – Peter Taylor Oct 19 '16 at 7:57
• But if experienced golfers are avoiding it because there's not a "critical mass", increasing mass will help – Luis Mendo Oct 19 '16 at 8:44
• @LuisMendo So we should be more critical? – mbomb007 Oct 19 '16 at 13:50