Fog Creek Software
Discussion Board




best programmers in the world

In a recent international programming competition, the Eastern European countries kicked everyone's butts. Cal Tech came in 13th after the Univ. of Buenos Ares.

http://www.nytimes.com/2003/04/03/technology/circuits/03code.html?pagewanted=1

Say what you want about how this is not a real competition, or doen't reflect the real world, but I think the ability to code quickly with no errors correlates to general competance and ability.

Dennis Atkins
Sunday, April 06, 2003

So does my ability to drink lots of beer and smoke no fags[0] yet still point out politely that the link in your post requires regisration count for nowt?

[0] 2 standard earth weeks and counting

tommyhl
Sunday, April 06, 2003

That should be "registRation".

tommyhl
Sunday, April 06, 2003

I wish JoS allowed one remotely not only to remove one's posts but also to create a hole in the floor into which one might sink.

(approx 30mins and much reconsideration after posting the posts above)

tommyhl
Sunday, April 06, 2003

"I think the ability to code quickly with no errors correlates to general competence and ability"

It is possible it correlates to general competence but it says nothing of ability.  If your intent is to be the proverbial "coding monkey" then these competitions have value in identifying candidates. 

However,  coding monkeys are the lowest on the totem pole of life in the development community.  If you are looking for skills that add value, and hence increase income, they are beyond the skills tested here.  Assuming you can code, the short, and certainly not conclusive list would be:
- Self starter, who can work unsupervised and takes initiative when work is scarce.
- Able to identify, describe, and document user requirements.
- Able to identify, describe, and document architectural requirements.
- Able to identify, describe, and document project management requirements.
- Able to identify and understand efficiencies in both code and process that will improve the end user experience.
- Understands their role in a successful development project is more than coding.

I am not attempting to diminish the skills of the people involved.  However, it is more than the ability to code that makes a successful developer.  So much so that companies are hiring psychology and sociology majors and sending the to coding training.  The better one then team these us with developers to cross pollinate best practices.

Mike Gamerland
Sunday, April 06, 2003

From the description of the event it sounded like a very serious competition, both from a coding problem and from an algorithmic challenge.  Additionally, I wouldn't diminish any of the teams' participants in terms of "group dynamics", "self starting" or the ability to abstract real-world concepts into design and implementation.  You don't make it that far by being a slacker.

Just for sake of Satanic Advocate: I'd float the notion that anyone who would insinuate that the participants even had a whiff of code monkey stench about them has been hiding behind GUI widgets and "business rules" far too long. 

If ever there was a summary of how the profession of Computer Engineer or Scientist has been degraded into "IT profeessional", the above post by Gamerland summarizes it.

Now, there is not only the sheer lack of talent posing for competence, but the inability to distinguish the difference.

Go Eastern Block, go.  Kick Ass.

Nat Ersoz
Sunday, April 06, 2003

Hear Hear Nat.

Mike...your comments make me cry, they really do. "Smart people who get things done"...sound familiar? These kids fit the bill more than adequately...your laughably BS, smoke-up-the ass requirements, notwithstanding.

On another note...not to take anything away from the Eastern European and Chinese teams, but it seems like they take this competition way more seriously than the American teams. It's almost like an extension of their attitudes regarding the Olympics during the Cold War. You know, hey it's a matter of national pride, let's win this at any cost, pump our guys full of drugs, etc.

Based on personal experience, I don't think the American ACM teams are necessarily stocked with the best talent, but only the talent that has time to spare and is interested in competing. I think the IMO (International Math Olympiad) casts a much more inclusive net in terms of talent identification (through the ASHME and the AIME tests) and this shows, via much stronger results for the US team. usually we end up in the top 3 countries.

John Harvard
Monday, April 07, 2003

I think using a competition like this to measure how good developers are in a country is about as effective as measuring a nation's fitness based on their olympic results.

The USA has topped the medal tally at every summer Olympics since they boycotted Moscow, but by and large the American populace are fat and unfit.

Likewise, the fact that a country has a couple of wiz bang programmers who can win competitions like this really goes to show nothing about the quality of those working in the IT industry in general.

And the horse you rode in on
Monday, April 07, 2003

Actually, the US worked hard to ensure that Soviet programmers had worse programming languages.  Their programmers were too damn good.
http://www.cis.ohio-state.edu/~gb/cis655/Reading/gigo-1997-04.html

(Though the guy at lambda the ultimate really likes ada... go figure.)

anon
Monday, April 07, 2003

Without a doubt the teams and people that win these contests are incredibly talented. To conclude anything else would be really silly.  These guys are GOOD!!

The winners of these contests deserve all the prestige for their hard work. The winners of these contests are most defiantly first rate hard core programmers and developers. I
would take any of them for my teams.

The contest questions are available at:

http://icpc.baylor.edu/icpc/

However, to conclude from this contest that the state of developers in North America is 2nd rate is even more stupid then to conclude that winners are not talented.  (just how dumb can we get here!).

Fact is, most well educated people will choose carriers like Medicine, business, and law.  In the last few years with very high incomes, then many of those bright stars also were choosing computing. With huge layoffs, and virtually all of the prestige gone from the computing industry, then few if any of those well to do families are sending their prized kids into a computing career. It also means that Universities are NOT spending the time, and effort to win these contests.

However, having said the above, the results of contest do not allow one to conclude anything about the general industry.

Further, it would be STUPIDER (remember, we are now stacked up to 3 levels of stacked of stupidly here) to conclude the state of our industry with the results FROM JUST ONE YEAR! You would have to look at each year. It is well known that those teams that win are coached very well indeed. Russia is well known in this case:

Now that there is LITTLE prestige in the computing industry, I expect less converted efforts by the US schools. After all, computing is now viewed as a very dead end job.

In case anyone is living in a cave, the competing industry is not very cool, or producing any jobs that pay well.  As a result, those schools are going to put even less effort into these contests in the coming years. Attending computing at many schools in north America is about the lowest thing one can possibly choose at a good school.

If you got money to go to a good school, you sure are not choosing CS these days. (that is low of the lowest choice right now).

Anyway, here are the result from the last 4 years. The USA has done just fine and dandy. Of course, my Country Canada on a per capita performance bases absolute rules! Go figure!!. , but then who has not used a watCom compiler!

The last 3 years are:

• 2002:
Shanghai JiaoTong University (Shanghai, China
Massachusetts Institute of Technology (Cambridge, MA, U.S.A.)
University of Waterloo (Waterloo, Ontario, Canada)

• 2001:
St. Petersburg State University (St. Petersburg, Russia)
Virginia Tech (Blacksburg, VA, U.S.A.)
St. Petersburg Institute of Fine Mechanics & Optics (St. Petersburg, Russia)
University of Waterloo (Waterloo, Canada)

• 2000
St. Petersburg State University (St. Petersburg, Russia)
The University of Melbourne (Melbourne, Australia)
The University of Waterloo (Waterloo, Ontario, Canada)

• 1999:
The University of Waterloo (Waterloo, Ontario, Canada)
Albert-Ludwigs-Universitat Freiburg (Freiburg, Germany)
St. Petersburg Institute of Fine Mechanics & Optics (St. Petersburg, Russia)
Bucharest University (Bucharest, Romania)
Duke University (Durham, North Carolina, U.S.A.)

Albert D. Kallal
Edmonton, Alberta Canada
kallal@msn.com

Albert D. Kallal
Monday, April 07, 2003

Wazzat Saddam's Horse??!!

Woohoo!

Nat Ersoz
Monday, April 07, 2003

Slang has done me in.  "Coding monkey" is not as negative a message as I see it is taken. (hindsight being 20/20 of course).  It was coined to refer to people who are astute at coding but lack the interpersonal skills to move them further in business. 

While many developers (myself included) code for the enjoyment, many (myself included) also do so for a living.  The original post asked the question (or posed the statement), that these contests help identify the best in both "general competence and ability".  My point, and experience has been that competence is expected of all developers.  Ability is far more nebulous.  My experience is the best paid developers have skills that are not truly tested in this type of environment.

Do some of the winners of these competitions posses both?  Almost certainly.  However that does not make the competition a test for who will succeed in this profession.

Mike Gamerland
Monday, April 07, 2003

Bah, who does coding contests for free anymore.

College students go to http://www.topcoder.com and win contests for CASH and JOBS.

(The topcoder contest is a tournament system, each online tournament consists of people with their own skill level, competing each other with the standard fare of contest questions. Then, they have a chance to review each others code, and try to figure out input to break each other's code. They win tons of points for this. Each tournament offers a little bit of cash, and you move up the rankings.)

S. Gwizdak
Monday, April 07, 2003

I'm curious - how would you apply such a programming team in a business? I can only picture them as the "go to" guys when you need an algorithm solved, like "what's the best way to generate a pick list for a warehouse minimizing walking time for the stock picker?"

Now mind you, being able to code fast to a given algorithm with no errors does not mean they can't do other stuff, but I'm not sure I see a huge need for that specific talent in and of itself in the real world. The money is in CREATING the algorithms from the real world and applying them.

Next question:
Are any of the teams state-sponsored? Are we talking about the way things used to work in the Olympics, where the Eastern Bloc nations fed and groomed their atheletes while western atheletes had to make their own way?

I honestly don't care if it turns out that Russians are naturally better coders or that their educational or business infrastructure encourages computer scientists more to achieve - those are just some questions I have to ask before I'm convinced. :-)

Philo

Philo
Monday, April 07, 2003

Philo, I did a summer math camp in high school (no laughing, please) with a kid from...romania? who was one of these contest winning types. I think he was on a team from RIT that did reasonably well one year. ...or something.

Anyway, he ended up doing database internals for Oracle.

Another guy I know who was a competition-caliber programmer guy, but a (famous engineering school in the east) dropout, wrote compilers that targeted chips that work in mobile phones, and sold his company to intel.

So yes, there is a world where these types of guys can thrive, it just isn't the typical "deal with requirements documents bullshit" IT programming job.

choppy
Monday, April 07, 2003

Now I'm all jealous...

Philo

Philo
Monday, April 07, 2003

Looks like the contest allows the contestants to CREATE and design the algorithm.  After a cursory review of the questions, I didn't see any algorithms given... just the rules of each game.

Anyway if the contestants can solve the given problems in a finite time limit (5 hours), imagine what they can do given several days, a week, a month, etc.

Also, I think you will definitely need to deal with requirements and specifications if you are writing compilers for chips on cell phones.

My 2 cents.


Monday, April 07, 2003

I have no problem with someone posting their belief that people who win coding contests are very good at coding.

DA wrote, "The ability to code quickly with no errors correlates to general competance and ability."

What does this mean and why should I care?

If DA is trying to suggest that the best coders typically don't write business applications he would get no argument from me.

Maybe Microsoft, Sun, etc. should be recruiting more programmers from Eastern European countries?

One Programmer's Opinion
Monday, April 07, 2003

I wish I was the best coder in the world. My chest would be inflated and my pride would blind those below me. I would sing the praises of myself and flaunt my ability to devour the most complex problems in a matter of seconds. Whole worlds would be devoted to me. I would move to a small island and the locals would worship me.

This is utter bullshit. The typical JOS post flaunting the prowess of the great programmer and his genius. Meanwhile they are all being whored by those in charge. Unless you sign the checks you are a code monkey and a whore. But don't be ashamed, it beats digging ditches and pays a little bit better.

fred fakie
Monday, April 07, 2003

"Maybe Microsoft, Sun, etc. should be recruiting more programmers from Eastern European countries?"

Sure! And China and Canada too apparently.

Of interest was that the best scoring school in India placed 43rd, down there at the bottom with the American engineering schools that US & News Report gives top rankings to. I find that interesting.

To those of you who think this contest doesn't reflect on real world abality, it might be fun to 'make it interesting' -- I'd be willing to put up $50,000 to anyone who can, in real time, do better than next year's winning team. Of course you'd have to pay if you lose...

Dennis Atkins
Monday, April 07, 2003

Dennis,
If you meant better at creating an algoritm to solve a specific problem set similiar to those defined in the contest I'd be a fool to challenge. They ARE genius and I wont deny that. Some programmers are simply gifted and that cannot be denied. They see solutions where others see problems.

But if you meant competing in the real world I think I might be up for the challenge. Those listed in the contests where green-horns with no actual experience in this industry. How will the genius react when he decides it will take 6 weeks to complete the task layed out before him and his manager says no it will only take 2? His ego will say 'yes I can do it' and he will fail miserably OR he will argue the point until he is fired and replaced with someone who is more of a 'people person'. Now that is REAL programming. No place for the timid. Don't underestimate the power of experience and common sense.

fred fakie
Monday, April 07, 2003

Did anyone read the problem descriptions? I'd be surprised if any people on this forum could solve more than one or two of the problems listed -with no errors- in five hours. The polish team solved NINE. 

xyz
Monday, April 07, 2003

Hmm.. NYTimes registration. Code quickly and without errors? Hah!

I code relatively quickly and my code is relatively free of errors. However, I do find some bugs in it during the development stage. But coding something at a time limit, and expecting it to be error-free is not something that indicates _anything_. Nothing, zero, zilch. What matters is how good your code is after 3 days, or 3 weeks, not after three hours.

Competitions I did like the concept of are:

1. Perl Golf - code the shortest Perl program to achieve a certain task within a limit of a few days. (highly addictive)
2. International Obfuscated C/Perl/Whatever Code Contest - more amusing than nice.
3. The Google challenge and similar challenges.
4. Given a task, produce the best code that implements it, again, with enough time on your hands to test it. (I remember one where Perl was eventually excluded because someone implemented something in Perl at a much greater ease)
5. The Perl QOTW by Mark Jason Dominus - You are given a task , which may be a bit vague, and have to come with the best implemenetation. Later on, Dominus publishes a post-mortem where he compares the different approaches. Too bad Mark has become too busy lately to publish new quizes and post-mortems.

There may be others I am forgetting. I don't try to train myself to write the perfect code in an extremely short time. I try to write code that as bug free as possible the way I see it, (sometimes I can avoid bugs a priori, because I think about them), in a good time. Sometimes the code flows. Sometimes I have to think on every line. It depends on the context.

When I write a Perl script I often rely on the running stage to weed some bugs. When I write something in C, I do my best to avoid bugs , because this can bite you in unexpected places. But I never expect me or anybody else to write perfectly correct code within a few hours or so.

Shlomi Fish
Monday, April 07, 2003

fred,

Yes of course! But you were the same way at their age as well, as were most of us, right? These are bright kids who learn quickly. They might give a poor estimate a few times or think they can accomplish the impossible but then learn their lesson well. Where will they be when they are our age?

And for many of them I am sure, they will accept impossible challenges and slove them without realizing they are impossible!

xyz,

I looked at the problems. They didn't give any algorithms. The contestants had to extract the detailed requirements, do the design, invent the algorithms, and come up with a way to test based on some rather high level specs.

Now, I'm pretty good. If you let me gather together the best developers I have had the privledge of knowing -- and I know some good ones who are much better than I am -- I think we could certainly get three of the questions and maybe... maybe four correct if we were lucky, fast, diligent, had spent some time preparing, and were 15 years younger.

The team that got 9 of them is obviously absolutely brilliant and could obviously take on any project that any of us are working on in 1/10 the time and 1/20 the cost of any one here.

Dennis Atkins
Monday, April 07, 2003

I don't know what the big deal is with NASA rocket scientists. Last week, I dug a hole in the backyard to bury some smelly food that had been accumulating in the back of the refrigerator. It was a mighty fine hole. I'd like to see one of them smart-pants rocket scientists dig such a fine hole. There is far more of a demand for practical jobs like ditch-diggers than there is for going to the mars. What good is that anyway? No one needs to go to mars. The hole I dug was a very fine hole and those big wigs at NASA are obviously incompetant as they could not dig so fine a hole!

Bitter Old Coot
Monday, April 07, 2003

I am an American of Polish ancestry, and I find the current situation in Software Engineering kind of humorous.  Ten years ago Poles (or "Pollacks") and generic Eastern Europeans ("Hunkies") were the butts of many jokes.  Today, however, I don't hear so many jokes - just a lot of panicked conversation about how to save American jobs from the Poles & Russians.

anon
Monday, April 07, 2003

Young whippersnappers with your newfangled contraptions!

oldtimer
Monday, April 07, 2003

Dennis - bet they couldn't take on mine. [grin]

Philo

Philo
Monday, April 07, 2003

Was that guy Turing happy or not after all?

another guy
Tuesday, April 08, 2003

Albert,

You may start to convince yourselves that CS is not so popular, but IMHO the truth is that programmers outside US are much more CHEAPER, and you and your government can do nothing to stop this - so - be afraid for your jobs.

Eastern Programmer
Tuesday, April 08, 2003

Bitter Old Coot,

FYI, humans have to go to Mars because sooner or later the Earth will run out of resources.

Cheers
Dino

Dino
Tuesday, April 08, 2003

[I am an American of Polish ancestry, and I find the current situation in Software Engineering kind of humorous.  Ten years ago Poles (or "Pollacks") and generic Eastern Europeans ("Hunkies") were the butts of many jokes.  Today, however, I don't hear so many jokes - just a lot of panicked conversation about how to save American jobs from the Poles & Russians. ]


Yes, we are shaking in our boots of those dreaded Poles and how they are stealing our jobs! Damn you Poles! Damn you! ;-)

fred fakie
Tuesday, April 08, 2003

I work for a small civil engineering software company in the U.S.  My team has three Chinese nationals, two Polish nationals, two Romanian nationals, one naturalized Russian, and me - the lonely American.  The company is owned by a naturalized Iranian and an American.  It feels like I work at the UN - only everyone doesn't hate me because I'm American.  (At least I think they don't!)

Bob
Tuesday, April 08, 2003

Accountants, Lawyers, etc etc are all cheaper outside the US too. What makes programmers special such that they'll all lose their jobs but not the other profesionals?

And the horse you rode in on
Tuesday, April 08, 2003

for one thing, the skills you mention are professional skills. Programmers are unskilled laborers, like textile workers. The following article explains this:

http://newsobserver.com/news/story/2407528p-2241912c.html

>Software companies started by Richard Holcomb over the past two decades have employed scores of Triangle programmers. But with money tight and customer expectations high, Holcomb's latest venture, a Web services software company called StrikeIron, will design its product in Durham but send the rest of the work to eager programmers in Vietnam. "No offense, guys," Holcomb told his co-founders, "but programmers are the textile workers of the future."

Resistance is futile
Tuesday, April 08, 2003

Regarding accountants, they are unskilled labor too:

http://www.gainesvillesun.com/apps/pbcs.dll/article?Date=20030406&Category=APF&ArtNo=304060696&Ref=AR

> The accounting industry has recently begun using the burgeoning India
> outsourcing and technology markets to process American clients'
> tax returns. The work being performed is replacing tasks of
> U.S. accountants.
>
> Information like your salary, your bank and brokerage statements,
> credit card information, and anything else that you might be submitting
> as part of your tax return could be going to companies abroad without
> your knowledge.
>
> "It's not simply data entry," said Kevin Robert, chief executive of CCH
> Tax Compliance, a tax software company that provides software for an
> India-based outsourcer. "We're taking in raw tax source information and
> there're going to be levels of interpretation."

Resistance is futile
Tuesday, April 08, 2003

Well then explain to me exactly what a lawyer does that is so much more skilled than an accountant or programmer.

I can send out cease and desist letters in my sleep, and I've never been to law school (and from what I've heard, law as a course is way easier than engineering/science).

And the horse you rode in on
Tuesday, April 08, 2003

It's simple -- most politicians are also lawyers. Thus, there are laws that prevent outsourcing of legal services, but no laws preventing outsourcing of programming or accounting.

Resistance is futile
Tuesday, April 08, 2003

That's a different question that whether it's skilled or unskilled labour.

Anyway, from my completely unscientific study (looking at salaries in the paper), programmers still have it much better than accountants or most other professions you care to name on average.

And the horse you rode in on
Tuesday, April 08, 2003

Ostensibly, one issue with lawyers is the risk - when you outsource software you are outsourcing money at the risk of losing that money.

If you outsource a contract and the randomly-picked contract monkey screws it up, you could find yourself out a house or even in jail.

Also, a LOT of legal work has to be done in person in the US - you cannot outsource a court appearance. You cannot outsource a client meeting.

IMHO, outsourcing legal work would be like buying a cheap mail order computer from some company you've never heard of - it'll be great and you'll laugh about the money you saved until something goes wrong. That's when you realize why you really want an accountable body in an office in your home town that you can talk to. One that's bound by rules of ethics and malpractice laws.

Or imagine if you're sued under an outsourced contract - the overseas firm says "can't help you, we only do transactional work" so you go to your local attorney, who:
1) Is either booked to the hilt because a lot of attorneys have gone out of business, or
2) Charges you double, since he has to defend a "foreign" contract, or
3) Doesn't feel like representing you at all, since you didn't feel like using his services to draft the contract

I think the outsourcing accounting will work until the first firm is indicted for accounting irregularities and the overseas firm just shrugs. Then you'll see a lot of the work come back home.

Philo

Philo
Wednesday, April 09, 2003

There is a much more important reason you don't outsource legal work. Laws differ from place to place. It doesn't really matter if a foreignlawyer is cheaper than a local one; the foreign one probably knows his own laws, not yours. Of course legal work is regularly outsourced to a country if you need legal advice appropriate to that country.

David Clayworth
Wednesday, April 09, 2003

>"I think the outsourcing accounting will work until the first firm is indicted for accounting irregularities and the overseas firm just shrugs. Then you'll see a lot of the work come back home."

While at the same time they can continue to outsource programming without fear because somehow corporations have managed to escape responsibility for crappy software, even though the malfunctioning of the software could cause anything from accounting irregularities to medical tragedies.

Anand Ymouse
Wednesday, April 09, 2003

There's a good reason accountants, lawyers and medicos are not suffering from globalisation of their professions - and won't. It's because they control their professions and that control is even backed up by the state.

You can't represent a client in court unless you've gone through a certain lengthy process, for example. You can't audit public companies unless you're a registered accountant. Doctors, especially specialists, actively restrict the numbers that graduate, let alone migrate.

Programmers are completely vulnerable.


Thursday, April 10, 2003


And that's why programming is an area where lots of other groups, like recruiters and employers in general, enjoy the profits of programmers' work.

Lawyers and accountants have state-sanctioned partnerships, and this keeps salaries high outside those firms too.


Thursday, April 10, 2003

laws are quite different from country to country. So are accouting regulations.

Broadly though, the main principles are the same in a lot of countries. Law is largely based on Roman-Dutch law...  Accounting standards on GAAP.

A lot of the time, one only needs to take a localised accreditation exam to validate a foreign qualification.

Be afraid. Be very afraid.

tapiwa
Friday, April 11, 2003

*  Recent Topics

*  Fog Creek Home