4 ms·
I disagree strongly with that. First, in all programming helps you become a better programmer, just in the same way as playing the piano makes you a better pia
by jsnell 13y ago
I disagree strongly with that.
First, in all programming helps you become a better programmer, just in the same way as playing the piano makes you a better piano player. Even if you already know how to play the piano, you still need to put in the hours to improve (or even to maintain your skills). The more you program, the more parts of the act become total routine that you don't have to pay any attention to.
Of course programming contests or challenges might not be the optimal thing to do to increase your programming skills. But the comparison isn't to programming something else, it's most likely to somebody wasting time by playing a video game, reading blog posts, watching TV, etc. If a contest acts as a extrinsic motivator for somebody to program something, how can that be a bad thing?
In my experience it's incredibly common for someone learning a new language to lose steam quickly due to not having anything to write. We'll always give the advice of just writing some program they need. But amazingly enough many people just don't think of the world like that. To them a well structured problem set is just what's needed. It'll allow them to learn the new language, and learn something else on the side.
But you're also making the assumption that a coding challenge can't teach you anything useful which is blatantly untrue. I learned a lot about writing efficient data structures for a certain class of problems during the Netflix Prize. Likewise for solving some of the harder ITA software puzzles. I'd known the theory of stack smashing attacks on a very vague level, but having to properly figure out how to do (microcorruption) it was a completely different thing, incredibly fun and helpful. Likewise the Matasano crypto challenges -- learning to crack badly applied crypto made me acutely aware of ways in which I've badly applied crypto in the past.
I'll admit that there's probably nothing of practical value to learn from e.g. doing high level Perl Golf.
- zura 13y agoWhat I generally don't like in these kind of puzzles is that the task itself is given with some specific method or algorithm in mind (but you're not being told). i.e. to efficiently solve some particular task you have to use K-D tree; Some specific graph algorithm for another task; Another specific DP method and so on... I find this quite boring.
- yodsanklai 13y ago"First, in all programming helps you become a better programmer, just in the same way as playing the piano makes you a better piano player." I think it's a good comparison. Programming contest would be a very specific part of piano playing, like playing scales super fast. It's useful, but still a very small part of what it takes to making music.
- fizwhiz 13y agoI agree that doing these challenges helps you play the scales super fast. But I think the important segue to acknowledge is that the fastest pianists don't necessarily make the "best" pianists in terms of the quality of the compositions they're able to churn out. I'm saying that being a super fast pianist is not a necessary and not a sufficient condition to become a great pianist. Does it help? Sure it does! It helps to move up and down the scales and play rachmaninov for the evening's entertainment effortlessly, but at the end, it becomes one of many ingredients required to actually "make" good music. The question is, is there a really good balance that we could engage in? What part of lives are best spent practicing heavily (and perhaps "composing" lesser music) and what's the best indicator to transition into a part where you're not practicing as heavily, but you're composing more music.
- brunoc 13y agoOr for those more fond of sport analogies, practicing 3-pointers over and over again. It's a very small part of the whole game and you need to excel at all the other skills required to be a great player. But I disagree with the blanket statement of OP that it doesn't make you a better player.