Блог пользователя pritishn

Автор pritishn, 4 года назад, По-английски

Hi,
Somethings related to Competitive Programming (well, in a broader sense , Data Structures and Algorithms) have been on mind lately.

I know some people who haven't done Competitive Programming and also have very less knowledge of DSA but they never needed those. Example- Some of the seniors from my college are well-placed in good companies but they never properly explored DSA.

I know that being proficient in CP is not the only way to get good placements and I also realize that being proficient in CP also does NOT guarantee good placements.

Lately, my primary motivation to keep doing CP has shifted from "getting good placements" to "it's fun and exciting".
But along with that shift of mindset, I also find it harder to suggest others to start CP (knowing that most of them are just looking for an easier way to get well paying jobs).

So, I wanted to ask you guys.
If you'd ever suggest someone to start Competitive Programming, what would be your reasons to do so? I mean how would you convince someone to start CP ?

PS: I'm sorry if this has been asked before or if you find this useless.

  • Проголосовать: нравится
  • +134
  • Проголосовать: не нравится

»
4 года назад, # |
  Проголосовать: нравится +61 Проголосовать: не нравится

In iran if u get the gold medal in the olympiad you can go any university you want and you dont need to participate in "konkur" wich is very hard and boring to do and compete with 180k people for some universities that have only 100 sits! so most of the very talented guys in iran will choose to learn what they really like and dont participate in "konkur". and you can see that there are few people that are doing CP and they are not participated in olympiad :)

  • »
    »
    4 года назад, # ^ |
      Проголосовать: нравится +20 Проголосовать: не нравится

    Thanks for commenting.
    It's nice that there is awareness in Iran.

    In India , however , most people start CP after they have joined University.( We have to go through an exam called JEE. It has more than 0.5 million participation and around 30000 good seats are available.)

    It's because most of us aren't aware of the benefits of Olympiads.
    And also , I don't know why but companies in India give a lot of priority to DSA and CP (for freshers placement).

    • »
      »
      »
      4 года назад, # ^ |
        Проголосовать: нравится +4 Проголосовать: не нравится

      It's more than 1.2 million!

    • »
      »
      »
      4 года назад, # ^ |
        Проголосовать: нравится +3 Проголосовать: не нравится

      I don't know why but companies in India give a lot of priority to DSA and CP (for freshers placement)

      Is it not the case for FAANG even in other countries? Or they give less priority?

    • »
      »
      »
      4 года назад, # ^ |
        Проголосовать: нравится +2 Проголосовать: не нравится

      30,000? I don't think so. In my opinion only 10,000 seats are really good.

      • »
        »
        »
        »
        4 года назад, # ^ |
          Проголосовать: нравится -15 Проголосовать: не нравится

        He just said that to include himself , he clearly isnt in top 10000 you can see his college

        • »
          »
          »
          »
          »
          4 года назад, # ^ |
            Проголосовать: нравится +3 Проголосовать: не нравится

          To include himself? Does it really matter which univ. he is in if he is performing good? His rating seems much higher than you ig!

  • »
    »
    4 года назад, # ^ |
      Проголосовать: нравится +10 Проголосовать: не нравится

    I hope this happens in India as well. Lot of people waste more than two years for preparing JEE exam which just gives seat in university.

»
4 года назад, # |
  Проголосовать: нравится +118 Проголосовать: не нравится

It's fun and exciting.

»
4 года назад, # |
  Проголосовать: нравится -49 Проголосовать: не нравится

CP helps to build DSA skills, which increases the probability of getting good placements (or to be more specific, acing the coding/ technical rounds). Obviously, CP is not the only way and exceptions are always there.

»
4 года назад, # |
  Проголосовать: нравится +12 Проголосовать: не нравится

Why should one search for jobs? For having easier life for sure. For going on trips, food, etc. so I think finding job is a two step way to reach happiness: 1.get money and 2.enjoy life. But enjoying cp for just what it is and problem solving, being exiting and nothing else, is one step to reach joy. So I think it is enough to convenience one to do cp. (All of them are just my thoughts any way, a lot of people may disagree...)

»
4 года назад, # |
  Проголосовать: нравится +9 Проголосовать: не нравится

A while ago, I wrote a blog post trying to answer this question, at least to some degree.

  • »
    »
    4 года назад, # ^ |
      Проголосовать: нравится +9 Проголосовать: не нравится

    That's a really cool article. Thanks a lot for writing it and also for sharing it.<3 :D

    Bdw, there's a small typo. In the conclusion part, you have written "begging" instead of "beginning".

  • »
    »
    4 года назад, # ^ |
      Проголосовать: нравится +4 Проголосовать: не нравится

    I really liked your claim in the post.

»
4 года назад, # |
Rev. 7   Проголосовать: нравится +366 Проголосовать: не нравится

Well, I believe that the ultimate goal of my existence is to be happy. And I have learned from many well-established people that getting a great job or being famous or other common stereotypical goals won't make you happy as when you get used to those they become meaningless.

I think happiness is living your present with excitement.

That being said, now your main goal is to find something that will make you happy. There are lots of things you can do like being a musician or an artist etc. For me it was CP. I can lose myself into CP for hours and hours and still hold my excitement. A good contest is enough to make my day.

Man, I am not saying that you have to choose CP too. Find anything that suits you well, delve into that and maybe you will find peace.

Because I wanna spend my precious time on something so that in the end I can say with Heisenberg, "I did it for me. I liked it, I was good at it, and I was really... I was alive".

Let's discuss something if you think CP is the thing that you wanna do.

Many of us set this goal like I wanna be red and continuously looking at the goal and not enjoying our current hard works. I am not red but I can guarantee myself that when I will be red I will be happy for a day or two and will get used to it. So what was my 3-4 years of hard work all about? Just a day of excitement? I don't believe in so. Wouldn't it be great if I could live those 3-4 years of my life with excitement? Well yes. This is what I am currently doing. I am living in the present, working hard and whether I become successful or not I will still be happy as I was alive throughout the whole process and lived my life to the fullest.

Thanks for your time. May you find that something that you have been looking for throughout your life!

  • »
    »
    4 года назад, # ^ |
      Проголосовать: нравится +72 Проголосовать: не нравится

    I'm gonna upvote this comment from my second account too. :D

    • »
      »
      »
      4 года назад, # ^ |
        Проголосовать: нравится -17 Проголосовать: не нравится

      :)

    • »
      »
      »
      4 года назад, # ^ |
        Проголосовать: нравится +3 Проголосовать: не нравится

      Thank you for asking this question and thanks for the reply above. It's really hard to pick yourself up from a bad contest or when you feel you are stuck. At least in my case I start to question CP's worth every time and why am I doing it. This question and the answer does give some insightful direction.

  • »
    »
    4 года назад, # ^ |
    Rev. 2   Проголосовать: нравится +12 Проголосовать: не нравится

    One of the best comments ever!

  • »
    »
    4 года назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    I feel this comment... a good contest or solving a problem finally after investing a lot of time makes my day... and so did this comment! Cheers to all :)

  • »
    »
    4 года назад, # ^ |
    Rev. 3   Проголосовать: нравится +1 Проголосовать: не нравится

    Deleted

  • »
    »
    4 года назад, # ^ |
      Проголосовать: нравится +7 Проголосовать: не нравится

    Excellent comment. But I don't agree with the statement "happiness is living your present with excitement". To me happiness is being in peace, having less heartache, anxiety, disappointment etc. and more freedom and positivity. I don't get excited when I eat with my family, but I feel happy.

    I used to play a lot of computer games. I still get excited while playing them. But I quit, because now I feel more disappointment in losing, than I find positive feelings / feeling of accomplishment in winning.

    • »
      »
      »
      4 года назад, # ^ |
        Проголосовать: нравится +36 Проголосовать: не нравится

      To be fair, even if "excitement" is not the best word there, your comment doesn't really challenge underlying idea. You were unhappy at the moments where you were not "living your present with excitement" (due to losing). The point is precisely about enjoying something about the process in a way that doesn't make you rely on having CF rating increase or win in an online game in order to be happy or excited. Nowadays there are multiple things that I'm doing on my free time such that I'm quite bad at them (including competitive programming), and I enjoy them a lot precisely because I don't care about the fact that I'm quite bad there.

  • »
    »
    4 года назад, # ^ |
      Проголосовать: нравится +2 Проголосовать: не нравится

    couldn't agree more...... a good contest just makes my day and nothing makes me happier than seeing my code getting accepted during a contest:D

  • »
    »
    4 года назад, # ^ |
      Проголосовать: нравится +9 Проголосовать: не нравится

    I believe that the ultimate goal of my existence is to be happy. Why do you believe so?

    • »
      »
      »
      4 года назад, # ^ |
      Rev. 2   Проголосовать: нравится +14 Проголосовать: не нравится

      Because everything people desire, everything people do, the final cause of every action people take is happiness.

      Let's take an example. Alice is a martyr. He sacrificed his life for his country. Why did he do so? Because his country needed him and sacrificing for his motherland is the thing that made him the happiest person on earth.

      Quoting from a book "Happiness is a goal of human existence because it is the end that we are constantly trying to achieve. Aristotle explains that everything in life we do in order to achieve happiness, and we are aiming to find the means to accomplish this through things such as money, being brave, and having others in our life".

      I have asked lots of old people what their biggest regret is. And every one of them said that they were a little less happy when they were supposed to be truly alive.

      As this is that something that we always end up with, this must be the ultimate goal of our existence.

      Well, that's my point of view. You can share yours if you think happiness is not what we should ultimately look for.

      • »
        »
        »
        »
        4 года назад, # ^ |
          Проголосовать: нравится +8 Проголосовать: не нравится

        I don't see meaning in 'being happy'. I don't even know if something can be truly meaningful. So I just don't have answer to your question.

        • »
          »
          »
          »
          »
          4 года назад, # ^ |
          Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

          Well, I don't know if something can be truly meaningful or not, I don't know if life has any hidden meaning or not. But what I know for sure is that being happy is the best way to live my life.

      • »
        »
        »
        »
        4 года назад, # ^ |
          Проголосовать: нравится +8 Проголосовать: не нравится

        Desire is never ending bro, if you gain happiness by achieving something, it is momentary, so the happiness you are talking about is like a painkiller which may temporarily make you feel good but once its effects wear out you need to use it again. What you are looking for is a medicine that cures you permanently however.

        The people from whom you are taking suggestions from (old people) lived a normal fruitless life and those that follow their advice will probably come to the same end because the solution they offer you is another hit and trial method they think might have worked for them XD.

  • »
    »
    4 года назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    buddy thnx for the comment was feeling a lil depressed but u make sense to a great extent.... wish i could save this particular comment in my cf account coz i think this might take me long ways( i took a screenshot ;) ) thnx a lot .

  • »
    »
    4 года назад, # ^ |
      Проголосовать: нравится +8 Проголосовать: не нравится

    Goosebumps

»
4 года назад, # |
  Проголосовать: нравится +3 Проголосовать: не нравится

I will risk putting forward a hypothesis that many disagree with. In my defense, I’ll say right away that I was on both sides of the barricades in this matter

olympiad mathematics or olympiad programming is the fastest way to understand how intelligence works when solving problems. All this under the assumption that work takes place at the limit of concentration

p.s. google translator

»
4 года назад, # |
  Проголосовать: нравится +39 Проголосовать: не нравится

brain goes very big

»
4 года назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

There are two categories of people i think in this.

1) People who feel it as a sport.

2) People who do it for placement or job.

From my perspective, i think it is fun though i am not good in this. I have been with software industry since an year approximately, yet i don't see the usage of these algorithms there. Still, recently i started doing again as it brings me a bit of fun.

»
4 года назад, # |
  Проголосовать: нравится +24 Проголосовать: не нравится

I found that I was addicted. I got "Accepted" after writing the code, just like Pavlov's dog.

»
4 года назад, # |
  Проголосовать: нравится +11 Проголосовать: не нравится

I would be completely honest. I am doing it for placements.

»
4 года назад, # |
  Проголосовать: нравится +5 Проголосовать: не нравится

In Cuba is held the OCI , a competitive programming contest to chose our IOI contestants, and the top ten participants of every grade(10th,11th,12)are chosen to integrate the national preselection. That students had her scholar year closed , they dont have to exams or any kind of evaluation, so instead of 10 months of school , they only have 3 or 4 and the rest is competitive programming. Also if you consider ,like me, you have scientific qualities and enjoy exploring reality and looking for the why of most things CP is an elegant way to raise those aptitudes. But that is not all , CP is synergistic , because you also must learn a programming language , a lot of experienced programmers will tell you that the first is the most difficult to learn , making super easy to learn others if you need it. Obviously that and the algorithmic skills you develop will greatly increases your chances to get a good job and it may open some windows. But even more , if you can solve problems in hours ,like competitive programmers do,that most of people never solve in her existence you can answer roundly this question: With my programming skills , my CP knowledge ( and any other skill or kwonledge you have) what can i make that people benefits form it and i get profits?

»
4 года назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

being proficient in CP also does NOT guarantee good placements. is that true?

  • »
    »
    4 года назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    Of course. What did you think? You become a candidate master and companies start chasing you with job offers?

    • »
      »
      »
      4 года назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится

      I don't mean companies will chase, But I don't think any candidate master is unemployed

      • »
        »
        »
        »
        4 года назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится

        Well, as far as I know, only CP is almost irrelevant in actual software engineering. You also need to learn other relevant things like DBMS, Computer Architecture, etc and have some small projects too. Those all build up a wholesome CV. CP only shows your problem solving skills to your employer. They will still ask questions from other topics.

        Surely, being CM+ is a worthwhile achievement but the employers also look for some things other than pure-problem solving I guess.

        That's my point of view based on what I've noticed. There may be exceptions.

        • »
          »
          »
          »
          »
          4 года назад, # ^ |
            Проголосовать: нравится 0 Проголосовать: не нравится

          Learning DBMS, COA, OS and CN isn't a big deal. They(companies) just test the basics(sometimes medium but rarely ask questions deeply related to these) of CS fundamentals afaik. And tbh i found reading about OS and DBMS quite interesting. Found COA weird and CN tough.
          PS: These are just my opinions.

        • »
          »
          »
          »
          »
          4 года назад, # ^ |
            Проголосовать: нравится 0 Проголосовать: не нравится

          How is Computer Architecture relevant to software engineering? It's completely hardware-based topic, and most software engineers never use it.

          • »
            »
            »
            »
            »
            »
            4 года назад, # ^ |
              Проголосовать: нравится 0 Проголосовать: не нравится

            I'm not entirely sure, but isn't Assembly a part of syllabus of COA?

            A friend of mine needed some Assembly knowledge for one of his projects. I'm not entirely sure what he was trying to do but it was software based.

            Also I'm not exactly aware of what software engineers need for daily use so I may be wrong here.

        • »
          »
          »
          »
          »
          4 года назад, # ^ |
            Проголосовать: нравится 0 Проголосовать: не нравится

          I have heard that being a Candidate Master doesn't guarantee you a job but is it right to say that CP is almost irrelevant ? Don't know much about actual software engineering but in the placements ,isn't there a coding round for almost all good companies?

      • »
        »
        »
        »
        4 года назад, # ^ |
          Проголосовать: нравится +6 Проголосовать: не нравится

        I am unemployed.

»
4 года назад, # |
Rev. 2   Проголосовать: нравится +26 Проголосовать: не нравится

I think a healthy amount of puzzle is good for keeping your logical thinking ability. Just like how reading books, newspapers, or going to a gym helps.

And if you are doing something related to algorithmics, CP is a good thing to try, because it's a regular activity that can have positive impact to your jobs.

»
4 года назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

If Competitive Programming is not so important. why companies like google contacting open events like kickstart for recruitment propose?

  • »
    »
    4 года назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    Because there are way too many people wanting to join them. And just think about it, You are a big tech giant company head and you see 1000s of people every month wanting to join.

    Obviously , for example , some will have experience in ,say, Machine Learning and some will have experience in Web Development and so on.

    Would you conduct different contests for each category?

    The smart thing to do is to test all candidates based on something common they have. That common skill is logical thinking and problem solving skill.

    So they test the candidate based on this.

    • »
      »
      »
      4 года назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится

      If checking logical thinking and problem-solving skill is the only reason. why can't they use hard maths problems like in IITJEE or maths olympiads? even non-CS people know maths

      • »
        »
        »
        »
        4 года назад, # ^ |
          Проголосовать: нравится +3 Проголосовать: не нравится

        Why check only logical thinking and problem-solving skill when you can also simultaneously check programming skills too?

        Competitive Programming contests are like the perfect way to test

        • Problems Solving Skills
        • Programming Language Proficiency
        • Debugging Skills
        • Mathematical Thinking
        • Pressure Handling Skills

        all at the same time. So why only do a maths test when you clearly have a much better and relevant test ?

    • »
      »
      »
      4 года назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится
      The smart thing to do is to test all candidates based on something common they have. That common skill is logical thinking and problem solving skill.

      I think it is far from true to say that such events (FHC, GCJ, GKS etc.) are testing some abstract generic "logical thinking and problem solving skills". Generalizing it this far is like saying that playing snooker is testing not your snooker playing skills, but your general fitness conditions.

      It is also not true that they test "all candidates based on something common". It is simply used as one of many ways to find candidates who have high probability to be sufficiently skilled, because apparently there is sufficient correlation between expected value of the candidate and their good performance in such competition.

      If things were the way you described, the companies would've stopped to waste their resources on other recruiting channels. Moreover, they probably would've taken another step and stopped wasting massive amount of resources on interviews. Let's simply substitute them with automated tests similar to competitive programming.

      In reality, majority of engineers at companies like Google or Facebook don't have competitive programming experience. A lot of them don't even know what competitive programming is.

      • »
        »
        »
        »
        4 года назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится

        I think you misunderstood my point. Well, it my fault because I wasn't being more specific.

        His question was "Why companies like Google conducting open events like Kickstart for recruitment purpose ?" I was just giving him a reason why competitive programming contests could be a good way to recruit candidates. I was actually talking about Kickstart only. Codejam and Hackercup problems are way too difficult to judge an average candidate's problem solving skills.

        I wasn't trying to imply that CP contests are perfect "Hiring tests". I was just telling that CP contests are good way to test the problem solving skills.

        I think my point is clear now. I was only trying to justify "Kickstart being used as a hiring test".

      • »
        »
        »
        »
        4 года назад, # ^ |
          Проголосовать: нравится 0 Проголосовать: не нравится

        Also regarding that ..

        The smart thing to do is to test all candidates based on something common they have. That common skill is logical thinking and problem solving skill.

        I was just giving an ideal scenario. What I meant was , If you were approached by 1000s of candidates and you had to pick one test to filter them, wouldn't you pick a CP contest as the test?

        Sorry for not being clear enough earlier.

        • »
          »
          »
          »
          »
          4 года назад, # ^ |
          Rev. 3   Проголосовать: нравится +8 Проголосовать: не нравится

          Honestly, I don't know. I think CP contest would be a bad idea; but it is not like I have some much better solution in mind.

          I've already interviewed quite a lot of people, and I should say that in some cases I get much better impression about somebody who has zero competitive programming experience and very low chance to do well in a competition of such format — compared to some random dude with 1900 CF rating who can really only solve competitive programming problems they memorized, and don't even have a clue about how to apply algorithms they know to something that isn't competitive programming, leave aside using common sense and those abstract "problem solving" skills that you are trying to test by CP. In other words, I can recall many examples where somebody who would've been discarded by CP test looked like much more bright & clever person than somebody who's already well above average at stuff like CP or LeetCode. I think this is precisely why large companies have huge number of different recruiting channels working in parallel — because limiting it to a single one, like "they should do well in CP" or "they should be from great university" or "they should have awesome GitHub", would leave too many valuable candidates outside.

          • »
            »
            »
            »
            »
            »
            4 года назад, # ^ |
              Проголосовать: нравится +1 Проголосовать: не нравится

            That's exactly why I had written

            I know that being proficient in CP is not the only way to get good placements and I also realize that being proficient in CP also does NOT guarantee good placements.
            in the blog. I too believe that judging a candidate by only CP performance is just stupidity.

            Fun fact: The reason I believe that is because of your Quora answers. XD :D

»
4 года назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Looking at the level of most of the coders I think my answer might not be very relevant as I am still an amateur but in my opinion competitive coding gives a lot of thrill and excitement.I really like trying to solve challenging questions and I experience a deep sense of satisfaction every time I get an AC. However,(speaking as an Indian at least) I think the fact that competitive coding benefits me in placements is always there at the back of my mind.But even with the placement factor,if a person doesn't find passion in CP he can't really excel in it. My reasons to convince somebody to start CP would be that it is a useful skill from placement perspective and at the same time ,something so deep and challenging that if you really start loving it, you will find real happiness in solving problems.

»
4 года назад, # |
  Проголосовать: нравится +3 Проголосовать: не нравится

Everyone needs to feel this adrenaline rush. This changes one's way of thinking in a particular situation.

»
4 года назад, # |
  Проголосовать: нравится +14 Проголосовать: не нравится
"it's fun and exciting

" Lately I have gone through the same mind shift. I have started learning DSA recently and after watching a bunch of Youtube videos decided to start doing CP. Earlier if anyone asked me — "what is your hobby ?" I used to start wondering like what is my hobby as I am no good in sports, dancing etc. then I used to say my hobby is listening music.. LOL! then I used to wonder " Man! what kinda hobby is that ?". But now, although my rating is not increasing right now, I have found a hobby of a lifetime. :-)

»
4 года назад, # |
  Проголосовать: нравится +6 Проголосовать: не нравится

Positive:

Just like any video game — it's fun. It's really really fun.

It develops your brain.

It makes your brain feel satisfied when you're done (unlike other games/competitions that just make you file tired and that you accomplished nothing, anyone else knows the feeling of playing 10 hours straight league of legends? it's not a good feeling).

It prepares you for any riddle or problem solving in real life, and helps you understand complex topics faster than most other people.

Negative:

Just like video games, it shouldn't consume your life unless it serves you purpose. If it interrupts your life (you miss opportunities to advance in life, advance in your job, get into a good school, etc.) then it's not a good thing.

If it's a hobby on the side (like any other hobby), it's always a great thing. If you're legitimately consumed in it and it serves you purpose (https://codeforces.com/profile/tmwilliamlin168 for example) then sure, go ahead.