Not having done anything exciting in a while, I was pondering on a new contest concept and wanted to run it by you and see where it goes. All of this is just a beginner’s draft and we can modify stuff quite easily.
Please “reply all” if your feedback is important. Feel free to loop in anyone you might want to. This is all transparent and open.
The reason this is an old idea, is because it’s done internally in many companies regularly (including Microsoft), in student contents like the Imagine Cup, or Topcoder Marathons. In short, the idea of a 24-hour coding contest isn’t new. However, such a contest conducted in a format for students is probably new.
The purpose of this contest is to give students confidence and make them stronger when they come out of it, and not only to distribute prizes or to gain publicity. There is a subtle difference between the two. The Olympics are for people who’re already confident and strong. It’s just a contest. People compete and someone wins. However, the aim of build24 is more like an activity as opposed to a contest. And the only reason we call it a contest is because we will give out some prizes.
The reason I’m posting this is to see if we can formulate a new contest of our own. A contest not affiliated to any institution like the IEEE or ACM or CSI. A contest not affiliated to any college (or even the university). A contest not organised by any “great” personality. Simply a contest – organised by us (us means anyone interested in organising the contest). They can be colleges, or computer societies, or anyone, but they come to the table only as parties interested in organising the contest – nothing more, nothing less. Think of it as purely for the academic interest of conducting a great contest where everyone has fun.
An interesting revelation at LinuxAsia was that not one single student from the entire state of Maharashtra registered for Summer of Code. Now I am not willing to accept that no student in Pune is interested in working at Google. Prove me wrong if you can! It simply means that we gratified some stupid idiots for nothing, and they never gave the students the information that we gratified them for in the first place.
Purpose of this contest:
1. There’s really no contest that is student-centric in Pune. Sure, we all like to pretend that they’re helpful, but we all really know that all contests are mostly cheap marketting scams. I really don’t see anyone going home after a contest being able to truly say they will do something differently as opposed to what they would have done previously. I haven’t seen a single contest in Pune where the question papers were carefully designed to measure any kind of specific ability. Many people, it seems, fail to realise the fine difference between an examination and a competition. And hence, students never learn to differentiate between beer and champagne.
2. Very few contests held in Pune really prepare anyone to compete in the ACM ICPC, or Google’s CodeJam or the MS ImagineCup, or Code4bill, or the IPSC or the Topcoder Challenges, and so on…. the list is endless. And yet with all the “industry”, and coaching classes, and guest lectures, not one person in my college is even aware of these openings. I know this sounds ironic, but today, it’s a lot easier to get into Google and IBM due to all these open and transparent contests, than it is to get into any other company where such
openings aren’t available.
3. The industry is predominantly non-committing (my theory of the two-player no-win game). They’ll go around showing off their ego and telling students what they should do, but when students really do it, the industry won’t commit to hiring them. Very few companies like IBM (ACM ICPC) or Google (CodeJam), really commit to their contests. Well, at some point, everyone needs to be held accountable. Otherwise we sound like some 70′s-hindi-movie politician.
4. Though we all demand students to follow “industry standards”, do we ever give them industry standards? In the industry, we’re allowed to work whenever and however we want, so long as we provide results. What student is given this previlidge? In fact, colleges pride themselves on the “strict rules” that they have. What’s sad is that the “strictness” of these rules has nothing to do with output. No college has a rule saying that a program for simplex not giving a correct answer to the 10th decimal place will be rejected. Every college has a rule stating that the student needs to sit in the lab at least six hours a week.
In the industry, we have the state-of-the-art equipment. What student is given this previledge? And then who are we to demand that they produce a project that is “industry standard”?
Parameters:
1. It should be inherently college-neutral. No politics. One completely-neutral institute might provide us the venue.
It’s not about whether a college can be neutral or not (I’m sure they can be). It’s more about being transparent and proving that we really are transparent.
2. It should be educational (I was thinking of a half-hour talk every four hours during the contest to give contestants important feedback on what they’re doing). It should not just be a competition where people already are confident. In that case, we would have teams already competing in the ACM ICPC. The purpose of this contest is to give people to confidence to compete in the ACM ICPC. No contest so far gives contestants a feedback on what they did wrong, where they need to improve, how they could have done things differently. We should give this feedback.
3. It should be purely industry standard – we should give them industry-standard facilities, and then demand without compromise that they give back industry-standard performance.
Format:
1. Contest begins at approx 9:00am at some common, central, easily accessible, place like CCD or Barista. Let’s give contestants some coffee and breakfast to get them started. Here we give them a briefing of the rules once more (though they’ll know everything before).
2. Approx 10:00am we take them to the contest venue (whatever institute graciously agrees to be the host).
3. Here they will be given a “theme”. The theme will be necessarily concept-oriented such as “Education”, “Social Networking”, “Storage”, etc. but nothing technology-dependent such as “C#” or “Java”.
4. They will be given one hour to think on the concept, identify the current open problems, figure out rough solutions (they’ll have access to internet-connected PC’s at all times). We will give them total freedom to find their own problems and decide what they will do.
5. They will get 15 minutes beginning at 11:15am to talk to an “industry expert” (:-D I love using that phrase). What we won’t tell them is that these experts will be their judges later. There are three things that they learn here:
Feasibility analysis: In one hour can you figure out what’s feasible and what’s not?
Talking to your boss: We’ll introduce the judges as casual people guiding them. Most people can’t speak frankly and clearly with their bosses regarding their apprehensions.
6. We serve lunch during which they can work out their strategies once more. Maybe another 5 minutes after lunch with the experts.
7. At approximately 2:00pm, they begin coding. They will have exactly 24 hours till 2:00pm on the next day to code. This is the catch: No rules! They can use whatever technology/platform/code they want. When I say no limits, I mean it quite literally. We won’t look at code. Do whatever you feel like. Steal it, borrow it, write it, we dont care! Naturally, lunch, dinner, etc. will be provided on time.
and lots of caffeine too.
8. At 2:00pm the next day, they have to DELIVER! We never limited them, and now they must not disappoint us. They must deliver the solution. Not code, not documentation, not excuses, not apologies, not explanations, not references, not guidelines: only the solution. They must provide the answer to the question they set out to answer. If we don’t see the answer, they lose! If it’s a program, they need to run it. If it’s a search engine, it has to give us the search results.
This is the most important aspect lesson people need to learn. They’re too used to giving explanations, and comments such as, “But I used the method listed in Bach”, or “My program is logically correct”, or “This is the method everyone uses.” Such crap doesn’t work when you’re on the cutting edge. It’s easy to depend on Bach or Korth, and to blame them later. But even the toppers in Thomas/Finney have difficulty depending on themselves. Hardly do we hear someone saying, “I know this method is right, and hence I used it.”
Judging and Prizes:
I had an interesting idea of judging. Let’s not have a set of absolute winners. Industries today complain about not finding good talent. Well, we can have the industry sponsor the contest and provide a panel of judges. This is the diabolical genious of my plan. Any company send a judging team. Each judging team will give a general idea of what they will look for. (I have given a fairly good idea of what my team will look for above). In the process, they might end up finding some good talent.
So there will be “XYZ Winners”, and “ABC winners”. Let each define their own winners. Let students also know not to be depressed by just one company’s criteria. Besides companies might get good talent. They can measure real ability to perform. If they need mathematical geniuses, let’s challenge them to implement the Karmarkar Algorithm for linear optimisation, instead of holding tests with puzzles.
What’s in it for the students?
1. They learn how to quickly work out solutions to problems and turn them into working code as fast as possible.
2. They learn to understand that there is no such thing as “industry standard”. Each company looks for different things and getting rejected isn’t the end of the world.
3. And most importantly: they see that what the industry does is NOT AT ALL DIFFERENT from what they do already. Hopefully, we give them some confidence in themselves and teach them not to be beaten around by some bigshot blazer-wearing freak.
4. They just might get a job offer that they wouldn’t have gotten through conventional channels. We basically give them a second chance.
Additional remarks:
1. Part of the concept is to keep the contest as informal as possible. There should be minimal felicitations and stuff. Let’s break that 16th century european dark-ages format being promoted by everything-Pune-University.
2. Contestants should look at judges as their friends until the actual judging round begins. Judges will be encouraged to tell contestants what will make them win. No contest today gives this feedback. You just get a “you won” or “you lost” response.
3. Let’s see if some companies get some good talent in the process. We all know they’re despera
te.
5. Let’s get some people employed while we’re at it.
Any thoughts and comments will be appreciated and welcome.