
Marathon of the Mind: Competitive Computer Programming - lnguyen
http://thecore.uchicago.edu/Summer2014/features/marathon-mind.shtml
======
justlearn
Why 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?

~~~
conistonwater
1\. 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.

~~~
icefox
I would second this. Think of it like interviewing. If you do five to fifteen
programming interviews you really get a feel for how programming interviews
are conducted, the type of problems, the amount of time the problem should
take. Most importantly you get a feel for the questions that are asked can for
example abandon a solution that while it would work would take longer than the
interview time and thus can recognize that there must be a faster solution you
should look for.

Simply by doing a number of practice and real interviews you will be much
better at interviewing. You as a programmer are probably not that
fundamentally better, but you the interviewer are.

And if you don't like programming interviews just go lookup how people prepare
for Jeopardy, most that appear on the show don't just show up, but have
methods for training.

~~~
vonmoltke
> Simply by doing a number of practice and real interviews you will be much
> better at interviewing. You as a programmer are probably not that
> fundamentally better, but you the interviewer are.

That is true, but I see that as a serious weakness in programming interviews
rather than a feature. If you can, or even need, to train yourself in things
that have no bearing on the job you are being hired for, the interview is
flawed. I understand that, to some degree, this is unavoidable. It seems like
there is a drive to structure interviews like programming competitions or
Jeopardy. However, the latter two are games; an interview should be a well-
constructed test, not a game. I do think a large number of non-US people
participate in these competitions because of their relationship to current
hiring practices.

------
cdelaney006
This 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.

~~~
conistonwater
Google 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/

------
kevinwang
That sounds insanely exciting. As a student entering college this fall, this
is my new most anticipated activity for the year.

~~~
nt_tdc
My 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
I disagree that competitions like this test programming mettle. While they may
be beneficial for programming, programming under time constraints is different
from typical programming.

~~~
CHY872
Your 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
> 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.

------
kazinator
Five hours in programming is more analogous to a one-rep-max weight lift than
to a marathon.

~~~
doktrin
I 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.

