Udit has just won a silver medal in the International Olympiad in Informatics 2020, and I feel that his journey can inspire some youngsters out there to get into programming. He has written a blog which is primarily meant for his buddies who are already into programming. So I thought there should be one which is more for students who are in middle school and thinking of exploring the wonderful world of Computer Science.
Udit was late in starting to program (in my opinion). Till his 6th class, we were in IIT Kanpur, with all sorts of sports facilities and he made full use of them. He learnt every sport, but he will do it for a few months, become really good at it and then suddenly leave it and start with another sport. But he always wanted to be outside home.
When he entered 7th class, we shifted to Delhi. And alas, no sports facilities nearby. He was very sad for a few days. But then he started exploring indoor sports. And he chose chess. We gave him a separate PC, bought memberships in a couple of chess sites and he would play online for hours every day. Soon he started participating in real tournaments, and he became a rated player. The rating started improving and in less than a year, he was around 1400, which was quite remarkable for his age and the time he had spent in chess.
But two things happened that had perhaps ignited a bit of curiosity about programming in him. We had met Naveen Tewari, founder and CEO of InMobi an year earlier. Since Udit was constantly playing some mobile games during the interaction, he told Udit that if he knew some programming, InMobi would hire him as a summer intern and allow him to play games for several hours a day. Second, at the beginning of his 8th class, we had met the family of Akshat Bubna, the only Gold Medalist from India in IOI so far. His story had also intrigued him. By that time, he was perhaps starting to get tired of traveling to all these chess tournaments. In any case, he had a history of suddenly changing his passion after a few intense months. He wanted something that he could mostly do online (like chess).
I recall it was the last week of June. He asked me if I had a book on Python. I gave him a copy of "Introduction to Computation and Programming using Python" by John Guttag. This has been my only contribution to his programming journey. He read the first few pages, and then found some online sites where he could write programs, submit them, check, and all that.
After four weeks, he told me that he would be participating in Procon Junior, the programming contest that IIIT Delhi students organized. We were living on IIITD campus. So it was very convenient. I wasn't expecting him to do well given that he had just started learning Python but he did get a good rank. He got very encouraged with that, and started participating on many sites like Codechef. IIIT Delhi students were very active in competitive programming and would organize seminars, camps, etc., and he benefited from those. That year, he was selected for INOI (Indian National Olympiad in Informatics) but did not perform well enough to be selected for IOI Training Camp. (Top 30 students or so from INOI are selected for a training camp where they select the 4-member Indian team. He also learnt other languages during the year, mainly C, Java, and C++.
At the end of 8th class, he had about 2 weeks before the school for 9th class were to begin. Around that time, he met Prof. Sudhir Jain, Director, IIT Gandhinagar, who suggested that he should do programming in real company environment and offered to ask a startup on their campus to let him work for 2 weeks. He immediately agreed and went to Gandhinagar. He worked in a company called 4Dea, and its founder Dhyey Shah told me that Udit was productive just within a couple of days, and he wasn't a burden on the company.
Then we shifted back to IIT Kanpur. During class 9th, he felt that he was not able to compete with those in class 11th and 12th because he did not know some advanced maths, concepts like complexity, and he needed to learn many more data structures and algorithms. So he got so much into the "theory" part that he would always say that he would study Theoretical Computer Science during college. But all this apparently helped him in competitive programming. He participated in "ICPC for Schools" in December. This is held in parallel with ACM ICPC regional contest, which is the most prestigious inter-collegiate programming contest. Despite the fact that this is a team event and no one else from his school was so excited about programming, and hence he had to compete alone with teams from other schools, he came first in the contest at Gwalior. Later, he did well in INOI and got selected for the IOI Training Camp. He did well there but came 5th and missed being on the Indian team by a whisker (top 4 form the Indian team). In retrospect, it was lack of confidence. He did not believe at that time that someone who has just finished 9th can compete with seniors. He got some of that confidence during the camp when he did extremely well in practice exercises. But it was perhaps a bit too late. But he was able to participate in Asia Pacific Informatics Olympiad (APIO) and also won a bronze in that. In later years, he would win Silver medals in APIO twice.
During class 10th, he got interested in open source and participated in Google Code In. He worked like crazy for three months. He is a hard working child but we have never seen him work as hard as those three months. He was working with a group of mentors at an open source organization. The mentors were working with several school students from around the world, and from that group the top 2 were going to be invited to Google Headquarter. He was number 3, and his mentors told him that they had ranked him third despite his doing better work than the others because he did not communicate as much. He learnt his lesson that programming is not enough in real world. You need to talk to your team members and tell them what you are doing.
Just before the 10th board exams, there was this event in Bangalore called Snackdown. We were a little hesitant in letting him go, but kind folks at Codechef convinced us that this would be a great experience for him and he would meet the best programmers from around the world. And we are glad that he went. It so happened that I also was traveling during that event, and in fact, changing flights at Bangalore Airport. The event was at Taj which is at the Bangalore Airport. Codechef invited me to spend some time with the contestants. I had never seen Udit happier.
At the end of 10th class, he went to the IOI Training Camp for the second year in a row. This time he was more confident of getting into the Indian team. On the last day of the camp, he called me around 2:00 PM to tell me that he is ranked 4th but before I could congratulate him, he said that there is a rule regarding rechecking submissions with additional inputs if the 4th and 5th are too close. And sadly, after a couple of hours, he called to say that once again he had come 5th and won't be part of Indian team. We were naturally very disappointed. Twice in a row, he had missed being in Indian Team by a tiny margin.
After this, we had a lot of discussion at home. He wasn't sure if he wanted to continue with programming. Should he try to put all his effort in JEE coaching and try to get into a place like IIT Bombay. Or should he continue to spend his time on programming and target IIIT Hyderabad and IIIT Delhi. We left the decision to him and he chose JEE coaching. He was really enjoying it, and he started doing extremely well. His teachers were telling him that his performance then was good enough for a top 1000 rank and that with little more effort he could get into top 500, and if gave up everything else (he was still spending an hour or two on programming, sometimes participating in online contests), he could be in top 100. But we were telling him that he needs to spend at least 1.5-2 hours a day on walking, playing, and other fitness related activities and if he liked programming so much, he could spend some time on that too. So he was progressing on the path to take JEE, may be get a 3-digit rank, and if worked very hard and had some luck on his side, may be even a 2-digit rank.
But then Covid happened. The coaching got disrupted. While they started online classes within a few days, he had spent those few days in doing only programming and his old passion had been ignited. He had changed his mind. He was to try to get into Indian team once again, and he started spending all the time on programming. But in between there were some doubts if IOI would happen this year. He was overjoyed when IOI decided that they will indeed organize this year's competition although it would be online. He was disappointed to not travel to Singapore, but he started preparing 24x7. He did not need any food, sleep, or anything else.
During the team selection tests (no training camp could be organized due to pandemic), he did not perform so well in day 1 and day 2, and he was ranked 8th at the end of day 2. But this is where his confidence, his experience, his perseverance, and past failures came to support him. For a change, the lady luck also decided to be on his side. On the last day, he did extremely well, and he was in Team India.
The IOI competition was on two days, 16th and 19th September. On 16th, he did very well and was ranked 52nd in the world. But that is when the disaster struck. He was severely ill and was completely bed ridden on 17th and 18th. On 19th morning he was somewhat better but we were not sure if he could even sit for 6 hours at a stretch. He rested most of the day. We dropped him at the center. We gave a bunch of medicines to him. If headache then this, if fever then that. If cough, then this, etc. We told him that if he felt very tired in between, he can just lie down on the floor for 10-20 minutes and then work again.
When we went back to pick him up after the contest, he told us that he had managed to work continuously, but his efficiency was lower, he had misunderstood some parts of the problem, and overall had done well but could have been better. He said that he was not sure if he would get a silver medal. If he had just a few points more, one subtask extra done in one of the problems, he would have been sure to get silver. We were sad that he was going to miss his Silver medal due to medical reason of all things. But when the result came, all of us were overjoyed to see that he had indeed won a Silver Medal.
Note to Parents/Students: With our experience, my advice is that start learning programming early, may be at the beginning of 6th class (though it is never too late). Get onto multiple online platforms like Codechef. Start participating in not just contests but also various workshops. Learn not just programming but also think about problem solving, efficiency, and other aspects. You can do what you like till 10th class easily. You shouldn't be doing JEE coaching for more than 2 years.
By the end of 10th class, if you have not been successful in reaching the INOI stage (that is top 300+ students), then perhaps it is time to focus on JEE/BITSAT and other engineering admission tests.
On the other hand, if you have reached IOI Training camp stage (top 30 students), then you can have reduced focus on JEE. IIIT Delhi will give you a benefit of 2 percentile (about 20,000 ranks) in JEE Mains. So you need to only get a rank of 20-30K to get admission there in a CS related program. Also, if you are at IOITC level by 10th, you will be in IOITC in 11th with a very high probability, and if you do reach IOITC stage in 11th, you may get admission in IIIT Hyderabad. So keep trying for getting into Team India and if you succeed, then try to get a medal in International Olympiad. That medal will open lots of doors around the world.
The difficult decision will be if you have reached INOI stage but not the IOI Training Camp stage, that is you are in top 300 but not in top 30. Because in this stage the only institute that will give you credit is IIIT Delhi. They will give you a benefit of 1 percentile (about 10,000 ranks) in JEE Mains. But you still have to take JEE Mains and still have to get a rank no worse than 10-12,000 to get admission in Computer Science, or up to 20,000 or so to get admission in other programs. IIIT Delhi is also a great institution and comparable to several IITs. Would you be able to do some JEE coaching to get a 10-20,000 rank in JEE Mains and still work hard to get into IOI Training Camp in parallel, or should you switch focus to JEE completely and forget about trying to get into Team India. Difficult choice.
Warning: Various institutes may change their admission processes any year. So for exact benefits, check their website. I am however hopeful that we will see better access for programming geniuses in future.