6 ms·
Marathon of the Mind: Competitive Computer Programming
- kevinwang 12y agoThat sounds insanely exciting. As a student entering college this fall, this is my new most anticipated activity for the year.
- nt_tdc 12y agoMy school offers a two quarter hour class(that can be taken twice) called Problem Solving for Contests and focuses on the basics of these competitions. I'm taking it this fall. Looks super interesting.
- witty_username 12y agoI disagree that competitions like this test programming mettle. While they may be beneficial for programming, programming under time constraints is different from typical programming.
- justlearn 12y agoThey may not directly test programming mettle- not sure how one would test this anyway, its such a vague term- but they test knowledge of algorithms, data structures, bug testing, abstract reasoning and intense problem solving. And usually people very strong at all those things make for great programmers
- Iftheshoefits 12y agoBut they don't test any of those things very well, or at least not in a very broad or deep way. Competitions like these test a very specific, narrow mode of thinking (one that, in my opinion, is also rather shallow). It's great for a specific class of problems, not so much to draw any real conclusions other than "they're great at competitions of this format" from.
- CHY872 12y agoYour conclusion doesn't follow. Just because something isn't representative of a typical situation doesn't mean that it can't accurately predict performance in that situation. I'm not sure why you (and others, it happens every time this sort of thing gets brought up, not a personal attack) seem to try to take away from the achievement of the kids that take part in this. It's really first rate problem solving, and so far as I can notice (at a skim) no one actually tried to claim in the article that it's the same as standard software engineering. To address your main point, my personal experience (I know four people who have performed strongly in such coding competitions) is that it correlates really quite well. That's mere anecdotal evidence, but furthermore, your point is dubious because this type of coding competition shows an extreme aptitude at a certain type of programming, as well as enthusiasm, dedication, high stress performance, teamwork - which are all in general useful qualities in normal software engineering. Of course, you won't be able to take someone with an incredibly high capability for understanding complex graph algorithms and plonk them in to every job (front-end stuff might go poorly), but chances are they'll be able to find something to their liking at Google, Facebook etc fairly easily. At risk of sounding like one of those recruiters that sends me all the emails on LinkedIn, if you're world class at a certain type of work (as a significant proportion of the people referenced in the article presumably are), someone will probably hire you to do that work.
- vonmoltke 12y ago> extreme aptitude at a certain type of programming If you are hiring for aptitude in that type of programming, great. If not, it really doesn't tell you much. > enthusiasm, dedication, high stress performance, teamwork It is definitely a good way, but not the only way, to show these intangibles. > Of course, you won't be able to take someone with an incredibly high capability for understanding complex graph algorithms and plonk them in to every job (front-end stuff might go poorly), but chances are they'll be able to find something to their liking at Google, Facebook etc fairly easily. And yet Google makes their hire/no hire decisions on all software engineers using the exact same interview gauntlet. They give the impression that a software engineer is someone they can plonk into any job. That is my frustration with the industry in its current state. Software engineering is a complex area of practice and, in my opinion, has outgrown the notion of the universal software engineer. Software engineering needs to develop true specializations, like electrical engineering, and evaluate people based on their area of expertise. The type of coding these programming competitions exercise is just one specialization, albeit a very important specialization for certain classes of problem. For the record, I am not trying to belittle the achievements of those who excel at competitive programming. In fact, I think its awesome and these kids will be valuable contributors to the profession later. My argument is against the notion that programming like this should be viewed as prototypical and expected of anyone who wants to be considered good at software engineering.
- arethuza 12y agoI think it's certainly a good idea to learn early on in your career whether problem solving under pressure is something you have an aptitude and/or liking for. I wouldn't suggest it's for everyone - but some of the work I'm most proud of was done under crazy time pressures that I happily volunteered for. Was the resulting work the best I've ever done? Absolutely not! But there have been times (e.g. sales demos, serious issues with large production systems) where having any kind of solution, no matter how inelegant, at least buys you the time to address the problem properly.
- justlearn 12y agoWhy are students from foreign universities, particularly those in Russia, China, so good at these competitions relative to their peers from the US? I understand it allows for good job placement and its harder to get a job as an immigrant, but does that really explain the vast difference? Is there a big divide in technical standards?
- wernerb 12y agoStudents from Eastern europe and Russia are typically more adept at mathematics than western students. I can only guess at why, but they probably focus education more on exact sciences. Many russian-speaking mathematicians are flown in for HFT, algorithmic work etc.
- kazinator 12y agoI suspect that it could be because "math" in USA elementary schools means years of doing arithmetic exercises, whereas kids in some other countries move on to symbolic math, like solving for unknown variables in equations. Kids need the symbolic stuff to be brought in as fast as possible, while their brains are malleable.
- Iftheshoefits 12y agoDo you have a source for that (eastern europeans/russians are more adept at mathematics), or is this anecdata?
- deleted 12y ago[deleted]
- conistonwater 12y ago1. They practice much more. It would be difficult for anyone, regardless of the country, to take up programming contests as a minor hobby and expect to compete against people who take it seriously. 2. There is maybe a greater emphasis on theoretical aspects with more rigour, which makes these contests more approachable to start with. But this is nothing compared with sitting down, reading CLRS for an introduction, and then solving some puzzles yourself. This is something anyone can do, just most people aren't very interested in doing it.
- cdelaney006 12y agoThis sounds like heaps of fun - does anyone know if there equivalent competitions (even online challenges) for non-students? I don't work in a programming field so it would be nice to have a good problem set to work through.
- justlearn 12y agoTopCoder and CodeForces have competitions roughly every week and last 2 hrs long. You can also 'compete' (unranked, but will be timed) in old competitions on CodeForces or browse a huge laundry list of old problems. Most of the top competitors on these sites have either won ACM, USACO, IOI,etc. but there are lot of beginners and good tutorials.
- conistonwater 12y agoGoogle and Facebook organize their own contests, I believe. And you can find problem repositories with judges that let you submit your solutions online. These are slightly tricky to use for learning, because they wouldn't tell you what went wrong with any particular solution. Some places, like topcoder and codejam, will post analyses of their contests that explain how to solve the problems. Topcoder also has many of these analyses going far back, so you can read them to learn about algorithm design. Links: http://www.topcoder.com/ https://code.google.com/codejam/ https://www.facebook.com/hackercup http://www.spoj.com/ http://uva.onlinejudge.org/
- kazinator 12y agoFive hours in programming is more analogous to a one-rep-max weight lift than to a marathon.
- doktrin 12y agoI don't want to split analogy hairs but 5 hours of intensive programming is orders of magnitude more exhausting than any single max weight lift.