I am a beginner CS student and currently pursuing my bachelor degree. I have been told by many professors that I should spend my entire time practicing competitive programming at topcoder, hackerrank or similar sites. However, I personally dislike it. I made some small projects and programs for myself and had lots of fun but competitive programming is extremely mundane and uninteresting for me.
So, I would like to know from the professionals in here, whether competitive programming is useful at industrial level. I know it enhances algorithm making capability but I personally believe that working on projects does the same, and it grants added enjoyment.
there was a interesting find at google: "Being good at programming competitions correlates negatively with being good on the job"[1].
i like this quora answer for your question. tl,dr: the most valued skills that you should learn to be a good programmer in the market is not the same subset of skills that a competitive programmer is required. i would recommend you to work on projects but with a small team on it (5~15 devs).
I've never done it and I've gotten plenty of job offers. I've never been asked about it at an interview, even when I was in college, and I've never asked anyone about it. I do know some good programmers who have done it but I know far more who haven't. Go ahead and work on projects.
How to get over the feeling that competitive programming is a waste of time?
If you enjoy it then it's not a waste of time
More on reddit.comCompetitive programming is useless
Real-world use of competitive programming?
Competitive programming is useless
Videos
Leetcode, hackerrank is my favorite activity related to programming. But every time I attempt to solve a problem it feels like I could’ve spent that time learning new topics in CS, frameworks, or useful skills like AWS etc...
I am saddened by the fact that algorithms get a little too much importance these days in the lives of all computere science students and professionals. I do think that learning about fundamental algorithms and algorithmic problem-solving techniques is important but there is a little too much importance on solving leetcode/codeforces type problems.
Recently a friend of mine, who is reasonably well rated on Codeforces (1800+) talked about how Codeforces/Atcoder/Codechef tasks are very important in teaching us how to implement efficient code and how it is very important when you are writing general libraries (think Tensorflow, PyTorch, React, Express etc). I don't agree with him. I told him that people like Linus Torvalds wrote a lot of code that a lot of critical infrastructure uses. These people wrote fast and fault-tolerant code without having any experience in algorithmic competitions. But his argument is that the low-hanging fruits of algorithmic optimizations have already been achieved and in the coming years only those who have good experience with competitive programming will be able to improve these systems reasonably. What do you guys think?
Is it really that to learn to write fast and fault-tolerant programs you need competitive programming; or is there a better way to learn the same? If so, what's that better way?
Also, what, in your opinion, is a real-world skill that competitive programming teaches?
I’m a 1st-year engineering student and have always coded in Java. Now that I’m getting serious about competitive programming, I see most top coders use C++ for its speed and STL.
Switching feels like a time sink, but I don’t want to limit my growth either. My main goals:
• Increase CP and leetcode rating • Secure strong placements
Is it fine to stick with Java long-term, or should I bite the bullet and learn C++ now? Would love to hear from anyone who’s been in the same boat!