omzer's blog

By omzer, history, 6 years ago, In English

Most of successful competitive programmers are success because there's a strong coach behind them who trend them towards the correct path and so on.

But in my country the competitive programming isn't that big matter unfortunately, and there's almost no coaching.

So, any ideas about: how to be a successful coach for my team and myself?

  • Vote: I like it
  • +8
  • Vote: I do not like it

| Write comment?
»
6 years ago, # |
  Vote: I like it +36 Vote: I do not like it

Maybe this message will be unvoted, but thats something that isn't true.

A coach is somebody who support you to make the things better, if you want a trainer, you can find a lot of trainers on the web, pages where the description of some topic is awesome, so you don't need a coach you need somebody who make you feel excited about this increible thing called competitive programming.

I thought like you, It is wrong to think that a coach does everything, all success comes from oneself.

But some in all of these things are true, this is a community and we will support each other, just ask for your doubts, somebody will help you.

If you want a guide, let me find and update this comment, there are many useful pages.

»
6 years ago, # |
  Vote: I like it +8 Vote: I do not like it

Well, I am not a successful participant. But I want to share with you the problems you may face, if you do not have a formal coach (guiding you through problems, not ones providing you funding or so), from my hindsight. I would not provide solution because if I have done so, I would be more successful with a higher probability.

The very first thing is to keep enough time of training. Well, from my experience, this is not something that can be solved solely by average enthusiasm. I mean, I am just not like those super smart guys, I felt frustrated when I tried to figure out tough problems and failed and then didn't want to solve any more problems. And then come tons of assignment, labs, and different annoying stuffs. Yes I admit that I am, to this point, lazy. In my opinion, you and your teammates should make sure that you have spent enough time on solving problems and making sure you understanding them.

Second, I didn't ask other people when I was stuck on problems. I was shy. I wanted to figure out the solution by myself. Well, I am not sure whether this is good under some circumstances. Because I found that I was wasting my time spending a week thinking a problem but not understanding it. Normally, I would let it go and would never try it. This is really bad. Also, I found it helpful if you could explain a solution and convince other people.

Third, you might encounter fancy terms, for example, suffix automaton, palindrome tree, min cut max flow etc. You might not know which to learn first without a couch. You might be really frustrated, if, for example, you learn suffix automaton without knowing enough about finite state automaton, and reading English or Russian well.(The best introduction I read about suffix automaton was written in emaxx's blog in Russian. I google-translated it.) I suspected doing the problem set order by # of people solved could be a solution. But I don't know.

»
6 years ago, # |
Rev. 3   Vote: I like it +62 Vote: I do not like it

You are making an assumption that most of successful competitive programmers have some coach behind them; from your point of view, it implies that coach is what you need to reach good results, and absence of coach is what stops most of the contestants from getting better.

From my point of view, that first assumption looks wrong.

When I was doing competitive programming, I think there were very few actual competitive programming coaches in the world. It wasn't centuries ago, and I'm generally following what's happening there nowadays, so I have no reasons to think that it completely changed recently. I'm not going to call somebody who only handles logistics a coach (though he may save a lot of time for team members by resolving bureaucracy, looking for sponsors etc.), and also somebody who's only working on popularization of competitive programming or helps his team by saying "work harder to improve" isn't coach either.

I wasn't elite level contestant — clearly not in the same league as ICPC winners/medalists or regular attendants of different onsite contests, yet quite a lot of people may say that I was successful contestant. I only got somebody to coach me at the end of 2015 — that was like 6 years after my first competition, almost 3 years after I started to do some more regular practice, and after attending ICPC World Finals once already and getting #16 there. I believe that my results could have been better — not because of not having a coach for a long time, but because of barely practicing for first ~4..5 years and not working very hard even after that. I know ICPC gold medalists and even ICPC winners who say that their team coach had very little impact on their training and their performances.

Competitive programming isn't well developed at all — there are very few people in the world doing it in some sort of professional way, with a lot of systematic (or, at least, non-systematic) preparation. There is no motivation for it, because this activity isn't a way to get fame and/or money. Even for a lot of rather strong (with red rating) contestants it is just hobby. Check how much time pro gamers spend on training — quick look at Google says that it is often way over 50 hours per week. How do you think, how many people are doing same in competitive programming? As a beginner, you can simply open TopCoder, Codeforces, Quora, CodeChef, or just plain Google — and look there for advice on how to practice, where to practice and so on, and you'll be not too much behind majority of contestants in terms of resources available. Yes, having somebody to ask about explaining complicated parts can make life a bit easier, and a person looking at your performances from the outside and telling about your weak sides will be good for you, yet it is not something crucial. You have all the editorials and codes and everything to learn what you need, you can ask questions at forums, you have everything from Wikipedia to specialized tutorials to teach you all the algorithms. Yes, having coach may be helpful — but most of the contestants don't have any sort of good coach, and most of the people trying to be coaches still don't even know well how the coaching should be done, because it is not some developed sport with strong theoretic background. Plus, very few coaches will want to spend their time on you — there are some enthusiasts who really enjoy the thrill of cheering for their students or the process of helping somebody to improve, but that's not a default case. You may check sports like triathlon — it is rather young sport, yet much more developed than competitive programming; you'll have to pay at least a few hundred dollars per month for a good coach there, and that person will follow your training, provide you with individual training plan and so on. Do you think there are lots of people doing it in competitive programming? Especially for free :)

It is common for people to think that they are not doing well because of lack of coach, or because of genetics, or because of any other reason like that. In practice one of the main reasons is usually not willing to work hard enough and intensively enough.

  • »
    »
    6 years ago, # ^ |
    Rev. 2   Vote: I like it -11 Vote: I do not like it

    .

    • »
      »
      »
      6 years ago, # ^ |
      Rev. 3   Vote: I like it +26 Vote: I do not like it

      Both coach and genetics/background do play role, but playing role is not about stopping you from reaching some decent level.

      I strongly believe that for vast majority of people their ceiling is significantly above grey rating.

      I have no idea if I would reach level of tourist if I decide to practice competitive programming for 70+ hours per week over next 10 years (that's clearly not what I'm going to do, just in case), and I have no idea if I'm talented or not, and how much that talent-related stuff matters in competitive programming — yet I'm quite sure that I can improve a lot by practicing (and will lose my skills over time without much practice), and I know that for me there was no case of practicing a lot without improving — each period of intense training resulted into notable improvement.