I always was dreaming that one day competitive programming will become a real sport, not just activity for a small group of participants. Why? Because I don't really like working and my tries to do some science were totally unsuccessful. It would be cool to live just by doing what you like. Very childish, I know.
But this blog is not about if competitive programming is important or are there any ways to make it interesting to watch to wider audience. I am just trying to understand, is it currently moving toward real sport or away from it? And I get some mixed signals about that:
Bad signals:
Big onsites (like GCJ or TCO) seem to cut the number of participants and the amount of prizes.
Some onsite-finals are turning to online-finals. For example, several years ago we had Russian Code Cup onsite in Russia, currently RCC Finals is online.
Some big companies are turning away from sport programming (IBM is stopping sponsorship of ACM ICPC).
Good signals:
Some new finals were created during last years. For example, VK Cup in Russia, SnackDown in India or Code Festival in Japan (for students).
Some small firms are holding rounds and even created their own little onsite finals.
Sports programming (not in the financial part) seems to thrive. For instance, there are new platforms for training that were created just in the last year: like atcoder (for international participants) or csacademy.
So, what future will you predict for a competitive programming? Will it become a real sport? Or will it forever be just for fun and for students to get to the interview in a big company?
It depends on what you call "real sport".
If by "real sport" you mean soccer, american football, basketball, hockey, and sports like this, then the short answer is no. People watch these sports, because they are interesting, and fun to watch. If you consider what would it be like to watch sport programming, you'll realize, it's boring as hell for the average people.
If you mean something like chess, which is considered a sport, but in fact is something different, then it's a bit more uncertain. In my opinion it won't become sport as chess also. The main reason is, people with minimal chess knowledge can understand chess comptetitions, but beginner programmers won't get any of the big contests tasks, so it won't be interesting for them. Also much fewer people know programming, especially competitive programming, than chess' rules.
Big companies sponsor "real sports", to advertise theirselves, in competitive programming they won't achieve this goal. They can help to make good programmers, (and maybe find it a good cause to sponsor) that's why there are still sponsors, but I don't see big sponsors entering this field, and sports programming rise.
Long story short, there wouldn't be a big enough audience for it, to make it worth for big companies to sponsor it, so in my opinion it will never become a "real sport".
I am talking about money primarely. Currently only one person in the world seems to be capable to live on competitive programming money and not to work at all (if he would want this life for some reason). And yes, I also think that we all are doomed to work (to teach / to do science) for the rest of our lifes. But I am interested if someone thinks otherwise.
Might be off topic but there's some potential money untapped in for Competitive programming. Maybe you can use these for now.
There's no major Youtube channel for Competitive Programming. Algorithms Live is slowly rising to that place but I think the style of it isn't attracting many people. If you can do 10-20 minutes tutorial for tricks not in books and have time for that..oh boy. You will get many views. It's pretty weird we are in 2017 and no one tapped into that potential publicity and money. You can even go and expand your channel in future for General algorithms so even regular university students can use it.
Coach people and make them pay. Most likely weak regions will pay you and not Russians, so keep it online.
How many views would you expect a competitive programming channel to get? The community is pretty small. I don't think it'll ever be enough to make a decent living even for one person.
It is a teaching in some way :) It is funny, I also was thinking about this recently. But it doesn't seem like a good idea. Let's be honest, youtube is not for education.
There are pretty good educational channels on YouTube. One example I really like is 3blue1brown who does extremely engaging and approachable explanations of university-level math concepts. With this level of presentation even algorithms can get into people's heads.
Oh, yeah, I just scroll one of his video, and it seems like hell of work. Thanks for link, but someone like "vsauce" can make 40x views by doing much less. And I am not telling about pure degradation content. It is predictable that there are few educational channels on youtube, but youtube is not for education :)
I still don't get the reason for the "not for education" part, the number of views is hardly a sign for anything. Should YouTube delete all videos but Gangnam Style? =) Tons of small to large communities of various nature revolve around YouTube while having relatively few views. I wouldn't exclude the possibility of competitive programming becoming (noticeably more) popular this way.
I just do not believe that translating education through youtube is efficient. Education channels are hard to find in youtube because of all the stuff like "gangnam style". For example, if pornography is allowed in youtube, then it will be harder to find anything else there. In some way the number of views is important.
Just watch Errichto.
I think that if programming industry will increase 5-10 times, then it is possible for competitive programming achieve same level as chess.
As a person with minimal chess knowledge, I beg to differ.
A small remark: Why do you think that GCJ is lowering the number of onsite finalists? Since 2009 it was always 26 people, and they also introduced the distributed GCJ Finals with 10, 16 and 21 participants in 2015, 2016 and 2017 respectively.
But there were 100 participants in 2008. And prizes for any places except first are just laughable currently.
Anything can be considered a real sport. But I think what you're asking is, will it become a spectator sport. Will it be shown on TV, live streams, where people across the world tune in to watch the top contestants perform.
This is unlikely. Competitive programming is great to take part in. It's fun, exhilarating, and extremely rewarding to solve these problems. But watching competitive programming, even for the rare few who are very interested, is boring.
Competitive programming has a lot going for it. It gets sponsorship money because companies are interested in hiring its contestants. It gets a lot of coverage because programmers all over the world can relate to it, and want to take a part in it. But unless it is fun to everyone to watch, even people who don't understand it, it will not become a good spectator sport.
I believe that this statement is factually wrong. The number of people watching streams of world-level competitions (like ACM ICPC world finals, onsite rounds of GCJ and so on) is at most a few thousands (I don't have the exact data. It may be even lower).
It's a very small number compared to the number of people who do software development/computer science professionally. Anecdotal evidence also confirms it: most of the software engineers and CS students I know don't know/care much about programming contests.
On the other hand, you can try the problems — such participation isn't possible in sportsball (drunk raging fan entering the playing field doesn't count).
Is watching competitive programming actually boring?
I think with proper approach it is not the case. I mean it is clearly true that random person can't get the idea of what are the tasks that contestants are solving, but for me as a spectator watching some ICPC World Finals stream sounds rather fun.
There are lots of emotions and action, teams are making submissions, standings are changing etc.. When compared to chess, I think for some arbitrary high level tournament latter one is less dynamical even when you have live stream covering all boards at the same time.
I know several examples of people who are not familiar with competitive programming, or even not familiar with programming at all, and who watched ICPC WF live streams to cheer for somebody they know, and they said it was interesting and spectacular.
I think it depends on providing proper coverage and approaching everything properly. I generally agree with example by snarknews — you don't really need to know how internal combustion engine works to find Formula 1 entertaining.
The Coverage can be interesting if it has good commentary and nice streaming. It has been about 3-4 days they posted GCJ streaming and it has already been watched 30K+ times!
It has been viewed 30K+ times. Someone opening it out of curiosity, watching for 10 seconds and quitting is also counted.
Less than 1000 ppl cared enough to upvote.
But watching competitive programming, even for the rare few who are very interested, is boring.
I wonder if will become less boring if they allow spectators to see the source code of all the submissions of each contestant- the WA, the AC, etc,- all post-match or even live and have commentators and/or analyzers talk about them and explain them. Commentary solely based upon the scoreboard is not always that appealing, since one doesn't know what 'moves' a contestant has made ... It's a thing to think about.
In chess competitions, a spectator can see the moves the the players made during the match and can find them entertaining or also learn from it. Commentary on the moves and analyzing them, explanation of moves by an expert greatly makes stuff more interesting and easy to understand, even to beginners.
In football and similar sports (e-sports too btw), spectators are entertained as they can see real-action- moves made by the players- the goals, the fouls, the gravity-defying kicks, etc. Moreover, commentators play a great role in making the sport interesting to watch.
TLDR:- I suggest 2 things which may make them less boring-
1) Being able to see the actual source code live or post-match, which will enable us to see the 'moves' made by the contestants- their mistakes, their thinking process. One can learn a ton from the numerous submissions made by them, the changes they made to finally get AC. As it will be a great learning opportunity, I believe that the spectator base will grow.
2) Live or post-match commentary and analysis, in which the commentators not only talk about the contestants, their history, background, rankings, etc, but also analyze their source code and explain it, so that beginners can lean and improve.
If you think that "Dota 2" is a real sport, then obviously CP is also a real sport(at least will be), IMHO. CP can addict people as well as DOTA2. On other hand, you may think that everyone can play video games, but not CP. Actually, believe me learn playing DOTA2, is not so easy as other games (i.e GTA).
Main question is: Do you consider "Dota2" as a real sport?
Haha guys, seems you haven't understood what I meant. I did not say that cyber sport is not type of a sport. Maybe it is also a sport, but my point was "what do you think about that type of a sport?". I told nothing bad about your favorite game :)
Right, but how many people?
This has nothing to do with the capability of becoming a sport here. By the way, the learning curve in Dota is steep but it doesn't necessarily mean that people with less skill don't play it.
I've watched a fair amount of live streams from ICPC, IOI, GCJ and I found them all too boring for the majority of audiences. There are a lot of actions going on in e-sports, which makes watching games entertaining to people. Unless you can find something similar to that in CP, comparing it to Dota just doesn't make any sense.
Why is it on the main page? :)
Yeah, I also was pleasantly surprised :)
Competitive Programming is a sport. You're competing against people in a certain field. Will it be monetizable i.e "a real sport"?
The prospect is very interesting. About 15 years ago, people were laughing at the prospect of eSports — why watch a game when you can play it? Yet, last year's League of Legends WFs brought in an audience of 43 million. The International has a prize pool of 23M$ this year.
However, as close as eSports and sport programming seem to be — they're really not. Think of it this way — could you make watching a math competition enjoyable? There are people sitting there solving problems. There's no 'action', and your audience is going to click away to the next football game.
Time will tell, though.
With the criteria of real sport = money sport, I think you really do need spectator value. So how do you get spectators? One way is good commentry I guess, another would be some kind of mind-sport olympics where you get people watching all of it (people seem to care about weightlifting every four years and powerlifing (not in the olympics) never). Maybe something where it's made visual like bot-building and you can see the bots play each other?
E.g. when you watch World Chess Championship there are good commentators, who comment, talk jokes, talk about history of players, analyse position by their minds and sometimes with engine. In programming, commentator should have talk strategies to solve problem, and comment progress of participant, having access to debug his code and visualise how do its components work.
Maybe this would be in case competitors are given >2x more problems for same time, then final result will vary more(?), some need intuition for choosing easiest problems for him, it has some luck. But this have a disadvantage: 2x more problems for 1 competition, while it is difficult (I think) to compose interesting problems.
Is this really the best example you could think of?
I don't recognize chess as a sport at all.
There's completely no fun to watch it for a person who is not professional in chess. For most of other sports like soccer (I don't like it myself), anyone who's watching it can understand most of things happening in the game.
It can take more than 5 hours for a game to take (except blitz games) and if you're not again a professional, there's no excitement during a game for you. The only thing you can enjoy is the ranking and player's points, and it takes about a week or more for you to follow a complete chess match.
If you say that blitz chess games are fun to watch for everybody, this is bullshit again, cause a usual guy won't understand anything during the game.
I'm 100% sure that you're a chess player yourself cause no one else would call chess a real sport :/.
There's completely no fun to watch it for a person who is not professional in chess
I didn't realize I am a professional. I think all you need is interest in chess to enjoy watching it.
You mean watching the chess world championship? I know it's fun to watch it when two of your friends are playing it for fun.
yup, I don't watch it all the time as it consumes a lot of time to understand what they are doing, but when my friends share them with me, I do enjoy watching it.
Teapot is explicitly asking about the money though. How much do you make as the n th best chess player in the world vs the nth sport coder?
Imagine you analyse editorial after contest, you realise can solution. Maybe you can't implement it, but you realise an idea. And you can be less than red to understand difficult solution. During programming contest commentator could comment pieces of code and visualise programs with graphs with animation. Show solutions with worse time-complexity.
In competitive programming maybe real-time analyses of codes could help popularity to grow. Maybe it is possibility to convert codes of different competitors to comparable logic structure/tree. For example, if commentator have 5 different solution codes, then if participant is writing his code logically equivalent to one of 5, then lines with same logic will light on, showing progress.
Yes, I'm pretty sure competitive programing will never become something like sport you are talking about, Cause in my opinion they are two completely different things.
But maybe something like Game AI become popular in the future cause it's fun to watch.
Try a youtube channel like Agadmator's Chess Channel or MatoJelic.
Watch a few of their videos- their jokes, their style of commentary, their explanation of moves played by Super-Grandmasters and you'll realise that watching chess too can be really entertaining. Give it a try :)
Prerequisites? — An honest interest in chess.
Also, if you give 2x more problems, a lot of beautiful problems will be wasted since there is no point in solving the hardest problems when you know that you won't have time to even code all of them.
And apart from tourist, there are actually pretty interesting changes in top 5-10 worldwide. We saw TooDifficult beating everything on his way at the peak of his performance followed by
jc-snake sound-bjcvb's impressive progress. Now I can't wait to see Radewoosh, Yuta and Xiao compete in GCJ/FBHC.In addition, it's not like tourist is unbeatable. He has been dominating for quite a few years but so has Carlsen. Still, I find chess tournaments pretty damn interesting. And even though Gennady won the last few GCJ finals, I don't think anybody will disagree that they were quite interesting to watch with no obvious winner until the very last submissions were evaluated (except for 2016).
UPD: This is when I realize that jcvb's handle is jc...cccsb and not jcs...sssb. facepalm
Upvoted for Jc-snake sound-b.
In my opinion competitive programming is a sport but not something that can directly give you money in hands. It helps all of us or might help in future in order to generate income using algorithms that we learn. Even if you think with the point of view of sport persons they don't play for money but it's one of the benefit.Especially in India any sport except cricket doesn't earn much. And a money oriented sportsman can never be successful.
Really?
Hm... The only thing I can find is this post in russian (published after previous Finals):
http://codeforces.net/blog/entry/44920
So maybe that is not true, we will see later.
Yes it was announced in this World Finals. The sponsors will vary from now on. Next year sponsor will be JetBrains.
Yes, it was actually pretty elaborately covered even on CF
Anyway. it requires one's physical strength sometimes.
I think it has begun to become one . Being a CS / IT major u can never ignore sports programming and will always take ur attention . Most of the hiring by the software companies in Indian Institutes.. they prefer to screen u and evaluate through the a programming competition like Directi Hiring contest or the hiring challenges on Hackerrearth , Hackerrank so ur competitive skills shall land u in ur dream job here and sooner we may see an increase of interest in this area.
But you are not doing sports to "land in your dream job"...
Well some people are doing sportsball to get degrees...
In "real sports" like soccer or basketball there are huge audience because people understand what players are doing at that time, will they score or not. Competitive programming is other. Even good programmers can't understand other's code (or can but like in 30 minutes or more) and it wouldn't be interesting even for them. They would like only to watch the results and it would take only one minute. That is not good for advertising and wouldn't give much money. I think only thing to be a bit good is betting. people can bet on programmers based on the last results. That will keep their faces to the results the whole time and advertising would give organizers more money. The only way to make people bet on programmers is making competitive programming famous. That is a huge problem and I thing we will not come to that. This is my opinion lease don't judge strictly. P.S sorry for bad English :)
I disagree with you, you should say: people believe they understand what players are doing at that time.
In CP people know they don't understand what players are doing at that time.
I always thought it was a real sport. Everything about training, mental preparation, good shape is the same in every sport I heard of: no matter whether it's dota or soccer.
I think that the main problem with the number of people watching is too complicated way to understand what is going on.
If you're the guy who likes watching the sport he understands -- you need to spend a lot of time to understand common algorithms, and that's hard. Because it's really hard to train your brain a lot of time in a row, you need to spend years. For these kind of guys (like myself), I think that it would be cool to be able to watch a code of any team you like, maybe with some comments from commentators for the top teams.
The biggest audience, on the other hand, is people who don't understand what happens but feel themselves a part of the process. So there should some action, maybe faces of people accepting the problem or angry guys with WA. I guess currently icpclive team is trying to do something like that and they're becoming better.
And yes, I agree, sometimes watching dota game for >70 minutes is far from interesting. So I guess competitive programming could become something more. But getting more is also getting more money and more cheating, there should be some new ways to prevent it. And so believing no high-level guy would try something bad will not work anymore. Not everybody is ready for these changes maybe that's the main reason we're at this point right now.
Yeah, this is what we miss. Some live streams can show us screens, but we don't have commentaries about what's going on on the screens. Streams can become significantly better if some red person can explain what every team is doing and how to solve the problem they are coding.
Because I don't really like working and my tries to do some science were totally unsuccessful. It would be cool to live just by doing what you like. Very childish, I know.
I do only competitive programming. I don't have any other jobs at all. I heard that Errichto is the same. Is there anyone else who lives only by competitive programming?
By the way, does anyone know well about players of (preferably non-physical) minor sports? How do they live? How did those sports develop? Maybe we can get some idea from those sports.
Do you teach competitive programming ? How do you live only with competitive programming?
AtCoder hires me as a full-time admin. My main job is to prepare contests (like other admins).
That is cool! Among all stars of CP to choose from, I am fan of you particularly. So, I am happy to know that you probably managed to have a life style that I can only dream about :)
Have you ever thought of becoming CF coordinator? I don't know specific requirements, but they are changing every year, so maybe that's worth giving a thought?
I believe that KAN and previous coordinators are just kind and enthusiastic people and were working mainly to help the community and one cannot actually live by just being a coordinator. Maybe one day when I be less dependent on money I will apply for this kind of job.
Errichto is a university student, I am not sure whether he should count in your example.
You sure?
I am not entirely sure, last time I talked to him a month before, he mentioned that he is studying in a university.
One example that comes to my mind is Kevin Charles Atienza kevinsogo, he works in Hackerrank and does stuff mostly related to competitive programming.
I am not the guy who like to say something strict like "define A to B", so I think it is not good to discuss whether competitive programming is a real sport in a narrow perspective, like definition or something. So I might not like the ' OR ' in sentence
Will it become a real sport? 'OR' will it forever be just for fun and for students to get to the interview in a big company?
In my opinion, they are not a contradiction.I would like to answer question like this: "Will competitive programming be an activity that confines in minor, confined and limited participants in future?"
What we could witness and feel in real life actually exists in the world of competitive programming and they are enough to give us touch and inspiration likewise. Pain and gain, motivation and disappointment, sweat and weep, win and lose, they are all hidden in countless 'Accepted' and 'Wrong Answer'(you can ignore TLE... for antithesis). So it is not easy for the true love shrinks.
What is more, competitive programming has not only a large and number of participants, contests and online-judge platforms, but the number is increasing. Also, some companies and high level users, aim to popularize the competitive programming to more and more people. And with the development of CS(cannot remember how many times I used in TOEFL exam), It is a necessary trend to learn programming. It will definitely attract more and more people to take part in. I also recommend competitive programming to many friends of mine, some of them are really intrigued inside(they just need someone to lead them get in).
Therefore I think and hope competitive programming will thrive, it is for everybody. I wish it will come true.
And I am childish too.
I hope it will become a real sport, then I'll have good answer for grandma's questions "Do you sometimes play some sport, or do you just play these games?"...
Please star my projects and contribute if you are interested. 1. https://github.com/ArmenGabrielyan16/DiceRoller 2. https://github.com/ArmenGabrielyan16/SuperLibrary
Wow, your projects are awesome, i like them both :)
I think,progamming can't be a sport.Because it requires too much like math,physics and computer science.More exaggerated ,you have to learn almost all aspects of math.A real sport is very simple for everyone.
This is the right answer.
"A real sport is very simple for everyone."
To answer this question we need a good definition of a sport, and I define a sport to be as such: Simple to understand, but difficult to master.People watch things like tennis, baseball, and other physical activities because they understand the rules and can see what's happening -- pros are an extension of what they already know. It's cool to see a player make a trick shot or some absolutely stunning play.
Less people are into chess and go, but they are still highly spectated. Again, the rules are simple, and pros are an extension of low-mid level knowledge. When a spectator watches a top-tier grandmaster or 9 pro dan make an amazing move, spectators can see the implications/"coolness" right away, especially with commentary.
These are sports.
In competition programming, it's hard to understand what the geniuses are doing, and you can't really tell what the implications of the 3 lines of code with 5 bit shifts are. It is exciting to see who's winning/losing, but if a large portion of potential viewers have no clue what's going on, there will not be a large audience.
Yes, competition programming is growing. However, that doesn't constitute our definition of a sport -- it's not simple enough for the layman (and probably most competition programming people as well) to understand. It's not a sport.
Why IBM stopped sponsering the ACM ICPC ?!
I think competetive programming is sporter than chess! :)
It would be super cool if competitive programing becomes a sport everybody knows. Actually I think competitive programing is like electronic sport.
Isn't Competitive Programming called Sports Programming as well? I guess, its already a sport then!
We can call the pear an "apple". But nobody besides us won't call it apple. It will be an apple if majority of persons call it apple. P.S. If you haven't understood apple is the sport and pear is competitive programing :)
I think to become a real sport is a little difficult...
For conventional sport like football, race, etc., the host provides arena and staff, and this is almost enough. However, for competitive programming, I think one of the difficulty is to design nice problems, which seems not as "easy" as renting an arena or employing staff.
That's definitely not the limiting factor. Even today there are many people willing to write problem sets for a small fee (I believe under $1000 in the case of Codeforces or Topcoder). If there's any growth at all as a sport, payment for quality problem sets would only increase.
I think there's one possible way of becoming a professional competitive programmer, by contracting some tech companies as the role of billboard and increasing the number of applicants for a software engineer who has learned specious skills from programming contests.
I also have been hoping to make a livable profit only by participating in contests, but for now no companies are trying to do so, besides you have to be a very very skilled coder to attract attention, like a CF legendary grandmaster or a TC target. Also I think just because no one have done such a work before, you have to be more active for finding your dreaming positions.
Whoever wants me to work as a contracted competitive programmer, offers are always welcome (but not on Codeforces talk, please. It's the rule violation). I can post some advertisement on Twitter and wear your company's T-shirt during the onsite contests.