Americans Are Scarce in Top Programming Contest
Carl Bialik from WSJ writes "Only four of the 48 best computer programmers in the world are Americans, at least according to a computer-programming competition run by TopCoder. Poland had 11 of the final 48, and Russia had 8. Wall Street Journal columnist Lee Gomes asks whether this is more evidence of a sad decline in American education and competitiveness: 'Surprisingly, the Eastern Europeans don't seem to think so. Poland's Krzysztof Duleba, 22, explained that in countries like his own, there are so few economic opportunities for students that competitions like these are their one chance to participate in the global economy. Some of the Eastern Europeans even seemed slightly embarrassed by their over-representation, saying it isn't evidence of any superior schooling or talent so much as an indicator of how much they have to prove.'"
The focus on mathematics in education in Poland (along with Russia and China) is far higher then in the US. The difference in what a typical high school graduate can do between these countries is huge. (I also note that at least 1/2 of the four Americans amongst the top coders began their education in Singapore)
There are shills on slashdot. Apparently, I'm one of them.
That's because all the best American programmers refuse to work without a pay-check. Capitalism at work, Ladies and Gentlemen! ;-)
Note for the humor impaired - it's a joke, OK?
The gift of death metal does not smile on the good looking.
...American Idol is on.
-- http://frobnosticate.com
10 PRINT "HOME"
20 PRINT "SWEET"
30 GOTO 10
RUN
One of my professors did an exchange year at an Ivy League university, and when they got there they had to send back to the UK for their A Level (pre-university qualification) notes as the students were not at the level that they expected.
Also, I had a friend who was on the student exchange program at the same University at the same time. She was a pretty average C grade student (I'm sure she won't mind me describing her like that), but in her year in the US she got straight As.
I don't know if the standard of education is going down in the US, but it apparantly was nowhere near the standard that my professor and friend expected.
Bob
Listen to my latest album here
And, if you are unemployed, then you have lots of time to enter programming contests and try to make a name for yourself so that you can get an H1B and job in USA.
I could also draw the conclusion that a country that exports by value the most software in the world probably doesn't need contests to prove anything.
I shall now be modded down as "Needs more Slashdot 'education'"...
"If you want to improve, be content to be thought foolish and stupid." - Epictetus
does it matter?
Ofcourse it's also a matter of signing up for contests. I don't really like contests\races\etc. I hate being competitive, it doesn't bring up the best in me. Besidies, I believe we can get a better solution if we work together instead of competing. So I wouldn't sign up for a contest like that. How many others have similar reasons for not competing in contests like these?
So, from the X that signed up for that contest only 4 to place within the 48 were American. Being 3rd with only 3 competitors still makes you last.
but as for myself I make programs at work and the last thing I want to do when I get home is program for recreational purposes. I think that sentiment likely goes for a vast majority of programmers, especially ones with a family or a (so-called) life.
Additionally I think its hard to decide just what makes the "better" programmer. I don't consider myself a good coder when it comes to strictly algorithms and other not such fun stuff. But let me create a program that someone else can actually use with a functional UI and you have yourself a force to be reckoned with. Its all in the eye of the beholder.
From what I have seen, these contests are more who can write the coolest macros for simple but commonly used tasks, and primarily involve creating quick hacks to get things coded faster.
Maintainability and good engineering are rarely tested. It is just who can create quick and dirty implementations for a given task. There is a lot of skill involved, but not the sort of skill that most enterprises would want.
If there was a coding competition that involved developing robust, scalable architectures for enterprise applications, and designing software to best meet the needs of a client, then we would see who had the best software engineers.
I believe it's more how American corporations have dumbed down everything so there's fewer opportunities to excel while gainfully employed. When's the last time your employer recognized someone with real talent? The only people I ever see on these annual awards are butt-kissers.
I would tend to agree with Mr. Duleba. I don't think this reflects on the intelligence of American programmers, it reflects on our work schedules. I'm 22 just like Mr. Duleba, and I would love to enter contests like this just for the fun of it... I just don't have the time.
I'm gainfully employed building financial systems and whatever other contracts I'm working on. As Mr. Duleba was saying, I think it reflects more the economic state of some of the Eastern European countries. There is a lot of talent, but not a lot of opportunity. A little publicity from a contest like this can make you more viable to employers and give you an edge on the competition.
Will I get time off from work to enter a competition that I've never heard of (nor has my boss) and will I be compensated for the expenses incurred in travelling to Las Vegas and which ultimately proves only that I can write code under pressure in a town that you couldn't pay me to live in?
No.
"My God...it's full of trolls!"
The great programmers in this world are those who have demonstrated their abilities by actually designing and implementing great software. Coding the solution in a competition proves nothing. You don't have to look any further than the GNU, Linux, Apache, KDE, Gnome etc. etc. CVS logs and mailing lists to find the real greats! As a European I say that the US can hold its head up high on this front.
"Oh well. I don't think I would need to study for this competition, in college I never studied for a computer science exam. It was my theory that if I couldn't deduce the problem on the fly, then I shouldn't be coding at all. Coding isn't about regurgitation or memorization, it's about how you instinctively attack a problem."
And then forgetting all about how you did it, so you can solve the same problem in the same short-sighted way infinitely in the years to come. Way to go, cowboy!
---
"The chances of a demonic possession spreading are remote -- relax."
Gosh, I hope not. What with their 21st century tax mechanisms, high literacy and technology adoption, I think the Baltics, Poland, and much of the rest of Eastern Europe are leapfrogging Central and Western Europe. Why would you open a new business anywhere in Europe outside the east or Ireland? Folks in France, the UK or Germany are not _that_ much better (nor are Americans, to be honest), and any skills you can't find locally just acquire them via fiber optics and conference cams... I wonder if the tax schemes of Croatia are nice and flat, Dubrovnik would be a _great_ place to live and work I'd think...
Better yet, they can take part in Euroland while remaining far more attractive for business investment (and, thus, jobs).
Wouldn't the ironing be delicious if "East Germany" were to secede again, but this time in order to go 21st-century capitalist (flat tax, low corporate tax) and join the Eastern European economy?
Luckily they can still remember the true face of socialism, and what havoc it can wreak, though perhaps in a couple of generations they too will transform into ignorant ingrates...
There are good programmers here in Poland.
But after my studies I had choice:
- stay in my home city and work for awerage wage
- move to western Poland to big city and work for foreign company
- emigrate to another country
I have chosen second option, I moved far away from my home city, but many people just emigrate as fast as they can.
And now there is one more reason to emigrate: terrible political state (PIS, Lepper and Giertych).
Science and technology is just give lip service here in America. We don't value science and tech geeks here. You want to earn some real money? Don't wast your time in science - go study law.
... and have a connection with local computer science, and Americans, and I think there's a mixed bag of reasons. Education style is a factor: education here is "memorize these twenty sort of situations and learn to recognize them. Next week you'll memorize twenty more." American education is more creative, and against "rote learning." The result is that here in Eurasia students have very strong memories, are very good at pattern recognition, and can beat the Americans in a question of "How do you code Kruskal's algorithm? Quick!" The Americans are not very good at memorizing anything, but I think they do better on problems that might be unlike any problem they've seen before, that maybe stumps a local. Also there are cultural factors. On the plus side, clever geeks here are definitely into programming, and PCs are more or less affordable; coding is pretty accessible. Lots of people see education and qualifications as their big ray of hope to make a decent living in a precarious economy -- and there is some truth to this point of view. On the minus side, creating a strong object-oriented design, writing maintainable software, doing good documentation -- not very much encouraged here. It's hard work, it is not nearly as fun as writing really hot code. So there is a tendency to turn code into an Olympic sport, with an accent on speed coding, learning all the cool algorithm paradigms, using clever tricks, the saving four bytes of memory, the saving of two clock cycles ... and writing unreadable, unmaintainable, undocumented code. That kind of coding is fun, but it isn't pro quality software engineering.
$META_SIG_JOKE
I see they're still stuck on the strange idea that speed is the proper metric for determining who's the best programmer.
Sheesh, evil *and* a jerk. -- Jade
I think that may be a big portion of it. I love to code, I've been doing it since I was 12. However, after putting in 60 hours a week coding at the job that puts food on my table, I find it hard justify entering a contest when I could spend that time getting more coding done. To top it off, I actively contribute to a number of open source projects when I do get some spare cycles. So, on that note, if outsourcing wasn't nipping at our heels, we worked a (gasp) 40 hour work week, got a more than a couple of weeks vacation a year, and my wife didn't have this unintelligible need to spend time with me, I'd be far more likely to enter these types of things for fun.
Good people do not need laws to tell them to act responsibly, while bad people will find a way around the laws-Plato
Dude, when you win a contest and you apologize, you're humble. When you didn't enter a contest and play down the results, you are arrogant.
Absolutely spot on.
Why can't Americans just realize that, taking away first-world advantages and throwing them into situations dependent upon meritocracy, that they really are just average?
Instead, first post that says, "Oh, we didn't do that well because we don't want to come across as ubergeeks etc. etc." gets modded up. Meanwhile, you can bet some radically different rationalization would be at work if Americans had placed a much higher number. American Exceptionalism sure is ridiculous.
Why should there be more top American programmers in the world?
USA counts for about 4.6 percent of the world population. (300 million out of 6.5 billion). 4 out of 48 is actually almost double of what could be expected based on numbers alone.
America isn't known for its outstanding education system. So again I pose my question: why SHOULD there be more American programmers, and why are the results a surprise?
The only thing that surprises me about it is that there weren't fewer than 4 of the 48 who were American.
I'd like to stress that I'm not trying to be anti-American or anything... just realistic. If you want to change the numbers, you've gotta look at the truth of the matter, and make decisions from there.
Look at what the Russia and the European countries are doing right instead. It's curious to note their humble attitude toward their over-representation.
Why waste concentration on memorization when you have instant access to all your past work right at your fingertips?
Why limit yourself to only consulting your own past solutions when there are decades of well-documented research into innovative, ingenius, and non-intuitive solutions that smarter people (Kernigan, Ritchie, Knuth, Torvalds, Tanenbaum, etc.) have already figured out and written out for you to learn? I think that was the parent poster's point.
It's stupid to ignore the wealth of knowledge and experience already learned the hard way because you discard it as merely "memorizing." It's not. If you study the problem and learn why the solution works, you've just made yourself into a better coder. I didn't "memorize" how Huffman Encoding works. I learned why it works, and I probably wouldn't have figured it out on my own. But it's one of the tools I can use now, because I understand it. I learned it.
It's arrogant, ignorant, and shortsighted to believe you can just "teach yourself" and "figure out" perfect solutions to all the potential programming problems you'll encounter, while ignoring all the work done (and published) by the computer science and mathematical luminaries that preceded you.
Like woodworking? Build your own picture frames.
I don't think I would need to study for this competition, in college I never studied for a computer science exam.
Nor an English exam, apparently.
It was my theory that if I couldn't deduce the problem on the fly, then I shouldn't be coding at all.
Deducing problems is easy. Deducing the solutions, however, is much harder. And believing you can do it without the benefit of the pioneers that came before you is arrogant and closed-minded. It's not about "memorizing" the work of Knuth, Tanenbaum, Stroustrup, etc., but rather learning why their solutions work. I didn't "memorize" that 2^5=32. It just does. I understand it.
Coding isn't about regurgitation or memorization, it's about how you instinctively attack a problem.
And university is about learning the best practices and tactics that have been discovered and published by those who came before you, and learning how to apply those techniques to problem-solve. Its not about "instinctively" attacking a problem, but rather using the research and study that came before you to improve those instincts. Widening your horizon. Expanding your toolbox.
Certain courses can't make you memorize stuff to be a better coder but they can give you a bag of tricks or arsenol with which to attack problems.
Yes, and those are the things you should be studying. But you claimed you never studied for a computer science exam. Now you're contradicting yourself, but you still sound arrogant.
Like woodworking? Build your own picture frames.
I would also be cautious to make a general statements because programmers are considered 'elite' in Poland. There is huge competition to enter the computer science departments and the good majority of them can earn a decent salary after graduating (a decent in Poland, it would not be that great in the USA). The studies at good universities are hard with a lot of mathematics. The state of the general education is probably less rosy. I was teaching quantum chemistry at the university and the math skills of the students were not that great. However, some of the students were indeed excellent. I think it can be explained by large differences between schools in Poland. Some high schools teach very good maths and some are abysmal. I learned integration, differential equations and complex numbers in high school but some of my students had problems with functions, differentiation and some were even bad in fractions.
On the other hand, I took part in International Chemistry Olympiad while I was in high school and I remember the USA students were rarely at the top (and the results of the recent competitions linked in the Wikipedia article show similar results) but I'm still not sure it is because of worse education in the USA or that the science contests are less popular.
P.S Poland is in Central Europe. I forgive you your math skills but could Americans at least learn geography? :)
Save the bandwidth. Don't use sigs!
I attended the TCO 2006 finals as a spectator, because TopCoder does attract some really great talent and therefore makes for good recruiting and good entertainment. The talent pool does skew toward non-US and early 20s developers, because as you say, people who already have good programming jobs don't have the time or the real need to put in the hours of practice required to compete at these levels.
4 129668120/
But TopCoder is still a lot of fun. I gave it a shot - if you just look at it as a fun way to compete in a field in which you have skill, and not as some reflection on your overall talent level - you can have a good time.
Even being a spectator in the finals - being able to watch the top competitors attack some hard problems in real-time - was an exciting experience.
More thoughts on TCO 2006: http://journals.aol.com/juberti/runningman/
Photos from the TCO 2006 finals: http://www.flickr.com/photos/juberti/sets/7205759
Even folks like me, who tend to work in older langauges on systems which are less mainstream, can take advantage of the huge body of work that's out there. I might have to translate the algorithms I find to another language, and I certainly have to be careful about licensing issues in some cases, but there's no reason for me to have to create something out of thin air if the basic building blocks and floorplans are already created for me.
:-)
I'm a programmer. I'm lazy by definition.
Mainframe/UNIX Bit Twiddler and long time Windows/Linux Hobbyist.
The Theorem Theorem: If If, Then Then.
Is it wise to study those that have already solved many of the problems that we encounter? Of course it is, but to say that it is the only way (or even the best way) for us to be great at what we do is equally arrogant.
Evolutionary thinking will move you down the road, revolutionary thinking will put you on a new road!
Poland's Krzysztof Duleba, 22, explained that in countries like his own, there are so few economic opportunities for students that competitions like these are their one chance to participate in the global economy.
I don't recall commenting on Polish economy (I have my opinion and in fact I think it's doing quite well).
I said that in Poland we don't have too many *scientific* opportunities and that biology, chemistry, physics etc. are underdeveloped in comparison to maths and CS, so bright students lean towards maths, while in western countries they have wider choice.
I also mentioned our general high competiveness and great job done by the organizers of Polish Olympiad in Informatics and other contests, but those comments didn't make it to the article.
Krzysztof Duleba
Just to touch upon a few of your points.
Studying doesn't really help with TopCoder - it's a timed, algorithms contest. You have to be able to implement solutions to three problems (easy, medium, and hard), that are then peer-reviewed, before being tested, in a relatively small time window (90 minutes I think?). Think the ACM contest, but shorter time, and no teams . . .
The hard problem from this year's final was:
Solution and discussion for this and the other two problems are here.
To get to the finals, you have to qualify through a series of online matches. Only 48 advanced to the onsite competition, so holding it the same weekend as DefCon wouldn't help . . .
As for the bit about prizes, there's a significant purse ($20k was the top prize.) And you wouldn't spend money to get to the finals - if you qualify, they pay up to $1,500 per participant in travel costs, provide accomodations, etc. A few years ago, they even paid for a guest to accompany you. I'm not sure if they've figured something out, but in past years, the foreigners had to play for charity as TopCoder couldn't legal give them the purse.
TopCoder and other competitions are as much about the coaches and the effort people put into training as they are about intelligence. The people who do really well on these competetions train very hard, specifically for computer science contests, and the University of Warsaw people have a really, really good coach.
I think that America does poorly on TopCoder not because we have poor students (although America's educational system could be better), but rather because Americans aren't as interested in it. I don't know who the other two Americans are, but I expect that several of my friends and I would have a good shot at Las Vegas if we studied a few hours a week as an extracurricular, particularly if we had a coach as good as the Polish guy.
I'm not just spouting this, either. TopCoder is very similar to the math olympiads and the Putnam (which I have first-hand experience with), so much so that the same people often do well at both (Reid Barton, Po-Ru and Po-Shen Loh won multiple gold, gold and silver respectively at the IMO).
I hereby place the above post in the public domain.