It was the social aspect of coding competitions, developing friendships and reading other’s solutions to problems, that gave me the opportunity and confidence to see what I could do to possibly develop a better solution.
, Software Engineer
Several weeks ago, Research at Google featured an interview with two of the four founding members of Google’s Code Jam team, Software Engineers +Igor Naverniouk
and +Bartholomew Furrow
). With the Qualification Round beginning this Friday, April 11th, we wanted to share another perspective on coding competitions from a newer member to the Code Jam team.+Ishani Parekh
is a Software Engineer with the Ads Review team sitting in our Mountain View, CA office, who joined Google in 2012 after obtaining her degree in Computer Science at Dhirubhai Ambani Institute of Information and Communication Technology in India. Code Jam 2014 marks the first time that Ishani has been involved with the Code Jam Team, so we invited Ishani to share her thoughts about Code Jam and about coding competitions in general. Read on to learn more!
My first experiences with programming came during my first year at university, where some of the Teaching Assistants held programming sessions in support of my courses. It was there I was first introduced to the TopCoder (http://goo.gl/qOy00z
) competitions, where I started reviewing the problems in order to practice my programming skills. I found that the problems were very interesting, a nice mix of mathematical and algorithmic puzzles. Honestly, at first the experience was somewhat daunting, as I was new to coding and needed help to get my programming environment set up properly. It was definitely a new environment that I felt uncomfortable jumping into!
While practicing with TopCoder, I was also exposed to CodeChef (http://goo.gl/bzuHmj
), a startup in India that was running monthly contests which consisted of both short problems, which took about ~15 minutes to solve, and longer more difficult problems which demanded much more time. It was through CodeChef that I formed a community of friends, and found that not only do competitions allow you to hone your skills as a computer scientist, but they are also a very fun way form new friendships.
Although it was initially challenging, I found that participating in coding competitions was incredibly useful in allowing me to apply what I was learning in classes by practicing tough problems, but it was also very beneficial in an unexpected way; The social aspect of programming competitions, working as part of a team with fellow students or participants I met online, provided me with the support and encouragement I needed to later have more confidence in my ability to tackle the very challenging problems.
During my final year of university, I decided to participate in the 2012 Code Jam. I was impressed by the quality of the problems, but also the fact that the problem analyses are uploaded right after the contest, allowing me to see where I could have improved my understanding of both the practical, more algorithmically focused problems, as well as the theoretical and more mathematically based ones. Furthermore, through the Code Jam mailing list I was able to discuss with the wider competition community, in which many Googlers are actively involved. Again, I found that it was social aspect of coding competitions, developing friendships and reading other’s solutions to problems, that gave me the opportunity and confidence to see what I could do to possibly develop a better solution.
Once I joined Google, I decided that I wanted to be a part of the Code Jam team, just to get an inside look at how the top programmers in the world create, what I think, is a great contest. So in 2014, I became involved in the rating of some of the submitted problems. My first impression was that I was surprised by the fact that inputs from everyone on the team are welcome. Anyone can submit problems ideas and rate others’ proposals, regardless of experience.
It’s great to work with some of the best programmers in the world to develop puzzles, identify potentially confusing issues in the theory or phrasing of the problem. An area I was surprised by was just how much work the team puts into making sure the competition is accessible and understandable to everyone, regardless of language spoken. A very large part of CJ problem preparation process involves many iterations of the problem statement, and test cases, to make sure it is as clearly understandable as possible, in addition to properly assessing difficulty of the problem in order to assign it to an appropriate round.
It started solely as an avenue to practice my skills to supplement what I was learning at school, but now my involvement in coding competitions like Code Jam enable me to become part of a network of friends and colleagues whom I can learn from, and vice versa. Additionally, I feel that participating in programming contests helped in preparing me for the interview process, as I gained valuable experience in knowing the basic strategy for solving a large variety of problems.
Although I am now involved in the development of Code Jam rather than actively participating in competitions, I still appreciate the challenge of a coding problem, and the nature of the creative process behind the solutions that the community actively discusses. I would encourage people who are hesitant to join Code Jam to sign up, regardless of what you feel your experience level is, and join a community that can help you improve your skills!
Code Jam 2014 registration is currently open, with the Qualification round beginning this Friday, April 11th. Register at http://goo.gl/dwizmh