EVENBAO's blog

By EVENBAO, history, 4 years ago, In English

Hi Codeforces Community!

I am currently a high school student and an olympiad participant.

It may sounds silly , but I just wonder , what's the meaning of doing CP? One of my seniors once told me , many algorithms which are well-known for competitive-programmers turned out to be useless in reality.

I love CP , but is it really worthy to spend so much time doing it?

Thanks for advance.

Yifan Bao

2021 / 05 / 16

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

| Write comment?
»
4 years ago, # |
Rev. 4   Vote: I like it +7 Vote: I do not like it

I probably asked a dumb question , if my words made you feel sad , sorry for that.

  • »
    »
    4 years ago, # ^ |
      Vote: I like it +22 Vote: I do not like it

    Why do babies try to walk or talk? They keep failing for so long, why don't they just give up?

    And on another note: CP isn't just memorizing algorithms and applying them; it's learning how to problem solve, which is a skill that's very useful (and I've heard that being a good problem solver is one of the most highly sought-after properties of people in jobs, especially software jobs)

    • »
      »
      »
      4 years ago, # ^ |
        Vote: I like it 0 Vote: I do not like it

      Thanks! I must admit that CP is really helpful for our problem-solving skills.

»
4 years ago, # |
  Vote: I like it +14 Vote: I do not like it

What do you mean by being useless in reality?

At least from my experience as a theoretical computer science student, more than half of the algorithms I initially learned for competitive programming have come up on university courses. This period alone one course used link-cut trees, another had polynomial multipoint evaluation and interpolation, and for the project of a third course which isn't even related to algorithms we are using Montgomery multiplication.

More fundamental algorithms from competitive programming come up way more often, not to mention how important learning to design and prove algorithms is.

It goes the other way too. One recent case I can recall is no regret dynamics on the NERC online round. We got the first solve on that problem.

If by "useless in reality" you mean "useless in software engineering jobs", you are probably right, though competitive programming is still a highly valued skill among the top companies (how that makes sense, I don't know).

»
4 years ago, # |
  Vote: I like it +3 Vote: I do not like it

The meaning of doing CP is not the same for everyone. You have to find your own reason. For some people, they do CP because they enjoy it like an entertainment. Some just love learning. Some may say they they do it to prepare for future jobs. And there are still a lot of reason to enumerate.

My advise to you is if you think CP is not doing anything good for you, then stop doing CP. But if you have any reason (for whatever reason just like what you said — you just love CP) then just continue. Anyhow, it will not harm you. It will just take a lot of your time but in return, you got to learn.

»
4 years ago, # |
  Vote: I like it +2 Vote: I do not like it

Do you have something more interesting, entertaining and productive hobby to do? If not, continue CP.

»
4 years ago, # |
  Vote: I like it +16 Vote: I do not like it

The vast majority of software developers are doing application programming. That requires nearly nothing of the stuff you learn while doing cp. Apart from that you need to consider that since the complexity of software development rises further and further, software development becomes less programming, more organizing. Writing code might be a dying craft.

So it depends on your "reality". If you want to earn money you can spend your time way better.

  • »
    »
    4 years ago, # ^ |
      Vote: I like it 0 Vote: I do not like it

    Thanks for commenting. I totally agree with you.