Live data from Hacker News

Competitive programming is useless

kislayverma.com

151–157 of 157 posts

Re: Competitive programming is useless

#151
post #127

Earlier quoted context omitted.

> So we're discussing a hypothetical developer who has "no interest towards algorithms", and you're imagining that this person is going to run a profiler to troubleshoot a performance issue and subsequently optimize algorithms to fix said performance issue? This sounds like a fantasy to me. Our experiences are vastly different then. Nothing fantasy or hypothetical about this. Every great software engineer I've worked…

You're arguing that someone who doesn't care to learn anything about algorithms is going to do a good job at optimizing algorithms.

No, not at all!

I am saying that being able to regurgitate an implementation of quicksort (to keep on the sorting example) onto a whiteboard is not a useful skill. There will never be a need to do this in a real life job.

The truly useful skill is being able (and interested!) in using a profiler to find bottlenecks, identify what is being done there (let's say, sorting) and being able to find a better replacement algorithm in the literature and change to code to use a well-optimized implementation (which exists already in just about every ecosystem, no need to reimplement it from memory).

Re: Competitive programming is useless

#152

Earlier quoted context omitted.

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 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 general writing code that is difficult to maintain because it's not well eng…

And if the proof of concept does work, you take all the code that you written, throw it away and rewrite it? Probably not. I've seen too much "proof of concepts" go into production because they worked. Except when someone else had to actually maintain the thing and the person that wrote it leaved the company 1 year before.

There is not proof of concept code to me. Every line of code that I write professionally I write it to the higher standards. That doesn't mean over engineering it, but it means writing it in a way that is maintainable and understandable by others. I can compromise on functionality, of course in a proof of concept I implement only the things that I need, but not on code quality.

Even if I have to write a script that I know it will have to be used once and never again I will write it in a good way, you never know if you need it again, if a coworker does need to do a similar thing and you can just give to him as reference, or if you can take pieces to do other things.

Re: Competitive programming is useless

#153
post #151

Earlier quoted context omitted.

You're arguing that someone who doesn't care to learn anything about algorithms is going to do a good job at optimizing algorithms.

No, not at all! I am saying that being able to regurgitate an implementation of quicksort (to keep on the sorting example) onto a whiteboard is not a useful skill. There will never be a need to do this in a real life job. The truly useful skill is being able (and interested!) in using a profiler to find bottlenecks, identify what is being done there (let's say, sorting) and being able to find a better replacement alg…

> I am saying that being able to regurgitate an implementation of quicksort (to keep on the sorting example) onto a whiteboard is not a useful skill.

In that case I'm not sure why you're arguing against me, because I've repeatedly expressed my dislike towards algorithm memorization. I don't believe memorizing algorithms is useful at all. It might give a very small edge in competitive programming, but it's not what competitive programming is about either. The best competitors have amazing skills at creating algorithms to solve problems ("create" as opposed to "memorize").

If you look up the parent thread, you started arguing against me when I said "Developers who have no interest towards algorithms will not [be good at some things]".

Re: Competitive programming is useless

#154

Earlier quoted context omitted.

This is so true. I've been looking around at jobs, and was advised to start practising on HackerRank for the technical interviews. I've been coding professionally for 30-ish years. There is very little that I've seen on HackerRank that comes anywhere close to a "real" software problem that I've faced developing actual software. Why is this being used to do technical interviews? What's the thinking here?

My guess is that people who can't code can't pass, but people who can code might pass. It's a kind of extreme fear of false positive. Then the firm that does the testing needs to look like they're doing something beyond fizzbuzz and you end up with crazy tests. It never made sense to me, I always just do a technical conversation and if for some reason a muggle has gotten an offer it's easy to detect and deal with. Pe…

hehe, I have a war story about that...

Back during Y2K I was working as a contractor for a large organisation. I was hired by a recruitment company, who were hired by the customer to provide a large number of contractors. Evidently someone messed up, and we had a guy join the team who couldn't code. He'd heard about the money to be made in Y2K, had done some simple exercises, and slipped through the screening process. But once he started it was obvious he had no idea what he was doing. We pushed back at the recruitment company, but apparently they couldn't fire him because they'd have to admit to the customer that they'd hired someone who couldn't code, and politically that wasn't acceptable. We were told to cover for him. So this guy clocked in every day and did nothing, literally nothing, all day, earning really good money for it. We disabled his login, so he couldn't do anything on the PC sat in front of him. If anyone from the customer organisation came by he had to look busy somehow - it was on him if he failed to do that and the customer started asking questions about him. He couldn't even read a book at his desk in case he got caught doing it. It must have been hell for him. We ended up feeling that he deserved the money just for being able to do that day in day out for months. I would have gone crazy. In the end, I moved on before he did so I don't know how it ended. I often think of that guy when pondering how life in a stable-but-boring job would be.

Re: Competitive programming is useless

#156
hmm. how so? before we rationalize this statement, ask yourself. what is your current skill level in competitive programming? how good is your C++/Python/Java/etc. and understanding of DS/Algo? If all the answers to these two questions are great then congrats, you're great! otherwise... just think about that question, ever felt passionate or enthusiastic about something? competitive programming can be a passion, competition, both of them. if you think it is useless, then passion is useless, solving is useless, problems are useless... competition is a way to keep improving ourselves! improvement sure isn't useless at all isn't it?
Post reply on HN