Google Code Jam 2004
cymen writes "Google's Code Jam 2004 is open for registration at TopCoder.com. Slashdot reported on the 2003 winner and Google has a Code Jam 2003 summary. Grab some caffeine and get hacking!"
← Back to Stories (view on slashdot.org)
$10,000 for the winner, but the real prize is recognition amoung your peers. And it will help open source as well.
--
We are the collective Slashbot HiveMind
heh. thats all we need, people who can brag about how fast they can code.
only problem, when coding in speed, many people make more errors
its a proven fact that if you think through your objective 1st, and take a decent ammount of time doing so, you're more efficent.
in fact, i believe it was in the mid-70s that the us govt, thought about increasing the work day from 8hours/day x 5days, to 10hours/day x 4 days to make it more productive for workers.
I can see it now - something like the GoogleMail FS comes out of it, only to get blocked like the notifiers are.
"Sometimes a woman is a kind of religion, she can save your soul & set you free from all your sins" - Bad Examples
Are you serious? Do you have an idea as to what the salary would be? And after working for Google, you could likely pick your place of employment forever (provided you don't get fired). Google is now a world-wide power in the software community - it would be well worth it to take the job.
This pathetic competition - they moved away from real life problem of "here is lots of data show what you can do with it in your own time with code scaling well" to "school-like" timed tests. This is totally not realistic. As I said "school-like".
But it is certainly easier to "grade" submissions - they have got automated system to do that. So instead of tasking people with coming up with creative solution they just check your memory and do-it-in-60-minutes job.
Appauling - Google is NOT what it was before, and this is manifested in many areas including programming.
To me, it's more important to measure the potential of a programmer, more than the experience of the programmer. Creating new ideas and systems does not require experience alone -- it requires a great deal of potential. Simply breaking and fixing code in a realtime setting is good for the day to day stuff (and that is valuable for Google), but when a customer or boss asks to you build something new and difficult, many experienced programmers answer with, "that can't be done" when less experienced programmers will try to do it, with limited success.
I did the Google Code Jam last year and found that they required a lot more than basic coding skills.
One question involved analysing sequences of resource lock and unlocks, represented by upper- and lowercase characters in strings e.g. "ABba", "BAba" and "CADadBbc". Given such strings, you had to write a program to identify potential deadlock conditions e.g. the first two strings can deadlock at position 1 because the first string will hold a lock for A while waiting for B and the second string will hold a lock for B while waiting for A. Of course the real tests were more difficult than this. I think that less than 10 people out of 250 got this one.
Another question involved graph searching but with the cost of node traversal changing with time according to a pseudorandom algorithm. My solution was only twenty or thirty lines of code but it took a while to think how to do a time-based graph search.
The challenge phase is fairly challenging (excuse the pun) as well because you only have thirty minutes to make all of your challenges and you lose points if you are incorrect i.e. you claim that a certain valid input combination will cause the program to fail and it doesn't. Thirty minutes is not a lot of time to attack the 30 potentially flawed solutions that you are looking at. You have to pick a set of likely flaws (based on your own design) and quickly scan each set of code for it. Then, when you find a likely candidate, you have to read it in detail to make sure that you aren't wrong.
My point is that the Google Code Jam is for more than experienced programmers who can quickly bash out simple algorithms - you have to be able to devise novel algorithms under time pressure and devise strategies based on the psycology of your fellow coders
Perhaps they're not looking for people with true creativity or passion, because those people are already working on their own projects.
What they're looking for are typical Java, C#, and VB.NET (I'm excluding C++, as it's a catch-all) programmers who might be excellent coders, but typically lack originality and need to be spoon-fed with problems which they can then solve with some rapidly produced code.
The true masters out there aren't spoon-fed problems; they find the problems and then they solve them independently of the programming language. Google are looking for code grunts to do maintenance work. They already have the 'big minds' in the form of the many PhDs on their staff.
I read through the various sample problems, and I see nothing at all resembling a "programming challenge". Sure there are algorithms that need to be written, but it's just that, algorithms and logic. Things you can write down on a sheet of paper in long hand. The only reason programming is involved in any way, shape, or form is because it's an easy way to test people's algorithms, not becuase it's a fundamental part of this "challenge".
I offer that a mathematician who has never in his life even SEEN or HEARD of a computer could solve these problems, all of them, without a line of code. How then can this be considered a "programming" challenge?
A REAL programming challenge would deal with the real problems that programmers face: memory leaks, error correction, fault tolerance, user interface design, maintainability, speed, scalability, efficient object model design, database schema design, etc.
It's unfortunate that people look at these contests and think, whoah, that dude must be some hot shit programmer to be able to solve that! But really, he could be a crap programmer (hell they offer VB.NET for gosh sakes!) and just took a whole lot of logic and calculus. That doesn't mean if you hire him he'll do a damn bit of good for your company. It doesn't mean that any project he works on will be in any way maintainable. In fact, more likely than not, any code he writes will be only understandable by him and will turn into a taboo "don't touch it becuase it'll break if you sneeze" mess that costs endless amounts of pain and money.
I wish for once I saw someone have the intelligence to put out a REAL *programming* challange. One that requires you to think about entire systems, about design and IMPLICATIONS of design, about the subtle balance between speed and stability, about the umpteen million things that divides the '1337 h4X0r who is brilliant but considers random crashes to be expected from the professional and vastly underappreciated programmer who's work is so rock solid that he doesn't need a pager for the weekends. THOSE are the people who should be getting the props.
If I were google, I'd be a lot more interested
in what a programmer/software systems architect
can accomplish in a year than in a day.
A day is totally random.
Also, shouldn't the candidate's creativity
at originating novel ideas count for something
and not just their "well-studied code mechanic"
skills?
Spoken from the perspective of someone who used
to get ~100% on the portions of tests that I
completed in the allowed time for the test.
Unfortunately, I only completed the first
80 or 90% of the test because I thought more
like an Ent than like a squirrel.
So what was my ability? 98%, or 85% ?
I suppose for all those relatively trivial
problems that I have to solve in 1 hour or
less (strikingly few problems like that in
s/w eng. in my experience) I'm only an 85%er.
Usually I only have to solve problems in
real-time when someone else has screwed up
their planning phase (e.g. let's do this
live important demo before ever trying it
first.)
I think out of the code jam, google will
find very good plumbers. Maybe what they
need to find are software people who are
the equivalent of Rem Koolhas
or Daniel Libeskind (or Sergei Brin and Larry
Page). You won't find them entering
1-hour or 1-day coding sprints.
Where are we going and why are we in a handbasket?