Live data from Hacker News

Competitive programming is useless

kislayverma.com

81–90 of 157 posts

Re: Competitive programming is useless

#81
> Competitive programming is a good tool for building the programming muscle. An extreme pursuit of competitive programming is worse than useless. Unfortunately, companies and students are both headed in that direction at the moment instead

So if both companies and students are heading in that direction then it's not that useless, isn't it?

This is a low effort anti programming interview difficulty inflation rant.

But anyway, competitive programming is one thing, tech interviews are another thing if you want to get technical about it. Mostly different set of skills are cultivated by each.

Finally, saying competitive programming is useless is equivalent to saying golf is useless (for example). Some people really enjoy competitive programming.

Re: Competitive programming is useless

#82

I'd disagree with this assessment. In my own experience, I've found that competitive programming is useful in teaching a few skills. However, the apparent point of competitive programming--building up a good repertoire of advanced algorithms and data structures--is pretty close to useless. In my professional career, the most complex algorithm I've ever had to code myself is ... union-find (on like two occasions), wit…

> However, the apparent point of competitive programming--building up a good repertoire of advanced algorithms and data structures--is pretty close to useless. That's not the point of competitive programming. If you talk to anybody who is good at competitive programming, they will tell you it's _not_ about memorizing algorithms and datastructures. It's about developing algorithmic problem solving skills; skills that…

I have seen successful competitors people do basically that. And I have seen them train how to write basic algorithms super fast again and again.

Yes, they had also algorithmic problem solving skills. But they learned huge amount of algorithms and datastructures so that they don't have to derive them each time. And they spend time literally training how to write them fast without mistake.

It was not just about problem solving skills. It was a lot about knowledge base.

Re: Competitive programming is useless

#83
post #45
post #39

Earlier quoted context omitted.

> my point is that MIT will have a higher percentage of mathematically gifted students, because it isn't something that can be prepped for. What are you talking about? The requirements to get into MIT are not mathematical genius. It's above average quantitative skills. And you can prep for the standardize math requirements quite easily. All of my high school friends did, and some managed to get into MIT.

you obviously have a pretty strong bias. I didn't say its a requirement, I said they would have a higher percentage of gifted students. Also the requirements are not "above average", a math SAT of 750 is in the 95% percentile of SAT takers, which is already below average for MIT. Even then, the "average" student isn't even taking a college readiness test. You are grossly overestimating what average is.

Can you clarify how this can't be prepped for, and is a marker of intelligence instead of also being explained by average intelligence, coupled with means ($$) and drive?

I attended a top school. I can assure you my classmates weren't on the whole more intelligent. They did have more drive, better study habits, more external forces (parents) pushing them. Some were extraordinary, but not the average. I would have trouble saying as a body they were more intelligent than say those that went to large state schools.

Re: Competitive programming is useless

#84
post #66

Earlier quoted context omitted.

I’d love a programming competition that wasn’t about speed of implementing algorithms, but rather was about speed of implementing solutions, using a provided standard library of algorithms and data structures. Competitive glue-code programming, per se, but glue code that still requires that you understand the need for specific advanced algorithms in order to pull them out of a toolbox.

Isn't this basically what competitive programming is? Maybe I'm a bit clueless, but my assumption was most people have standard libraries of common algorithms/implementations they pull from and tweak/glue as needed to fit the problem in front of them. Those libraries are not standardized, but there is for sure basically a common set of things you need to be competitive, right?

There is a common set of algorithms that most people who do well in such a contest can implement whenever they like, but most of the effort involved in solving the problems happens before they write any code, and many (half or more?) problems can't be solved by just applying the techniques from this repertoire.

Re: Competitive programming is useless

#85

I'd disagree with this assessment. In my own experience, I've found that competitive programming is useful in teaching a few skills. However, the apparent point of competitive programming--building up a good repertoire of advanced algorithms and data structures--is pretty close to useless. In my professional career, the most complex algorithm I've ever had to code myself is ... union-find (on like two occasions), wit…

To me competitive programming doesn't make you a good software engineer. It will teach you bad practices, like abusing of dangerous programming constructs or data structures to optimized the code or just save some typing while writing the code (like one letter variable names, macros, etc), global variables and state in the program, not using common design patterns, not using OOP, not documenting the code and in gener…

> It will teach you bad practices, like abusing of dangerous programming constructs or data structures to optimized the code

If someone can't weigh up the pros and cons before using a particular technique, they're going to be a bad software engineer anyway. The field is all about making the right tradeoffs in particular situations, and blindly following current generalised "best" practices without really understanding what they're meant to be better than is going to get you into trouble too.

Breadth of knowledge and experience is a great thing. If you follow from the start that OOP is the right and only way to do things for example, you're not going to have a feel for when it gets in the way. Actually knowing what it's like and what happens when you do something the "bad" way is very valuable experience too e.g. you're going to be a better coder if you'd had to battle with buffer overflows and memory leaks in C in the past even if now you only use Java and Python.

This kind of logic really bugged me after moving from academia into industry. In academia for example, it's usually the right choice to make quick and dirty prototypes to get the results you need for a paper and not burn time over-engineering it. This doesn't mean I don't how to clean up code. I would also say it gives me more experience on avoiding over-engineering compared to someone that tries to copy best practices all the time.

Re: Competitive programming is useless

#86
Competitive programming is fun. It’s amazing that some people seem to think everything is about career path optimization.

Are we not allowed to do things for fun or just to pass the time anymore without someone writing that we’re wasting our time since it isn’t boosting our career?

Re: Competitive programming is useless

#87
post #7

Earlier quoted context omitted.

Yeah, this. My home state's college's CS program boasted it was one of the best in the northwest. My friends that went through it constantly had to ask me to explain simple stuff to them because the professor's assignments were wrong or confusing. Compare that to our local community college, which seemed to have a much more well-rounded course and taught the fundamentals in a way that made much more sense. Anecdotal…

The fact that so many people are getting CS degrees and yet can't even FizzBuzz is alarming. Is it the students? How many people are going into CS because they've had a taste of programming somewhere outside of school and decided they want to be a software engineer, and how many of them just get into CS because they heard that CS grads have very good employment prospects (Low unemployment, high salaries)? Anecdotally…

Cheating is really rampant in CS degree programs and it’s very difficult to do an actual test of coding skills in a reasonable timeframe rather than pure memorization.

Re: Competitive programming is useless

#88
post #7

Earlier quoted context omitted.

Yeah, this. My home state's college's CS program boasted it was one of the best in the northwest. My friends that went through it constantly had to ask me to explain simple stuff to them because the professor's assignments were wrong or confusing. Compare that to our local community college, which seemed to have a much more well-rounded course and taught the fundamentals in a way that made much more sense. Anecdotal…

The fact that so many people are getting CS degrees and yet can't even FizzBuzz is alarming. Is it the students? How many people are going into CS because they've had a taste of programming somewhere outside of school and decided they want to be a software engineer, and how many of them just get into CS because they heard that CS grads have very good employment prospects (Low unemployment, high salaries)? Anecdotally…

So much of this. In my CS class, I could hardly find anyone who actually had some curiosity to learn. Everyone does their homework by sharing answers on the class chat. And in team projects, either there is one person who does all the work, or they end up copying from google and stackoverflow.

Re: Competitive programming is useless

#89

Reminds me of a comic I saw: Interviewer: How do you swap two variables without using a temporary variable? Candidate: x = x + y; y = x - y; x = x - y! Interviewer: You're hired! ... two months later ... Boss: What the hell is this code you wrote? Programmer: I swapped two variables without using a temporary variable! Boss: You're fired!

[deleted]

Re: Competitive programming is useless

#90

I'd disagree with this assessment. In my own experience, I've found that competitive programming is useful in teaching a few skills. However, the apparent point of competitive programming--building up a good repertoire of advanced algorithms and data structures--is pretty close to useless. In my professional career, the most complex algorithm I've ever had to code myself is ... union-find (on like two occasions), wit…

I believe the author will agree with your assessment.

> Competitive programming is a good tool for building the programming muscle. An extreme pursuit of competitive programming is worse than useless.

Post reply on HN