Programming as a sport
Like every sport it requires practice and persistence.
The only difference is that it does not require a lot of physical activity like many other sports. Programming, or coding, is usually considered a strategy to get a good paying job in the tech industry, but there is a large community of programmers who do it just for fun.
What is competitive programming?
Wikipedia describes competitive programming as :
Competitive programming is a mind sport usually held over the Internet or a local network, involving participants trying to program according to provided specifications.
The main aim of competitive programming is to write code in an acceptable programming language (the languages allowed may vary from contest to contest) to solve given problems. The problems are generally mathematical or logical nature and require comprehensive knowledge of data structures, geometry, number theory and graph theory to name a few. Problems related to Artificial Intelligence and Code golf are also popular nowadays. It’s called “competitive” coding but most people get involved only to improve their own coding skills or just for the thrill of it.
Some of the most notable competitions include the ACM-ICPC, Google Code Jam, Facebook Hacker Cup and TopCoder Open. The International Olympiad in Informatics (IOI) is an annual international competitive programming contest for secondary school students.Competitions usually take place over an Online Judge where the code is executed and tested on pre-constructed data. The ACM-ICPC is the most prestigious and probably the oldest competitive programming contest. You can explore more about ACM-ICPC here and you can read about the experience of the 2016 World Finalists from IIT, Roorkee here.
Competitive coding is all about thinking quickly to break down the problem in the most optimal way possible and implementing it in a programming language. A lot of people are engrossed in competitive coding for the sheer thrill of it — the adrenaline rush and the satisfaction of getting your solution accepted. Competitive programming has a very large and diverse online community including school and college students and even people working in big tech companies. In my opinion, everyone who wants to code should at least try their hand at competitive coding.
Why competitive coding?
Here are some things that competitive programming won’t teach you
- How to write good and well-documented code
- How to make optimum use of memory and other resources
- Using version control and working in an organizational environment
Then why should you do competitive coding? Sure, competitive coding is not the ultimate coding practice but if you’re good at it, standard coding interviews will be a piece of cake for you. These interviews generally require you to solve a programming problem or puzzle and if you’ve had good practice, you shouldn’t have trouble in solving the problems or explaining your solution to the interviewer.
Competitive coding also provides a good platform to display your skills. A good ranking on a competitive programming profile is just like a good Github contribution chart. It indicates that you can actually code well and improves your chances of getting an interview. You are habitual of getting challenging problems and do not get intimidated easily on seeing a problem that you’ve never seen before. You also learn to read your own code to debug it in case your code fails to get accepted. While participating in team contests like ICPC, you also learn to think,code and debug as a team which is probably the most important skill required in the industry today.
But competitive coding serves a greater purpose than just getting you a big paycheck at a tech company. It helps to improve your knowledge of data structures and algorithms tremendously and develops your logical and analytical skills, which are hard to instil otherwise. The fact that these skills are hard to teach in a classroom or work environment is what makes these skills valuable for the companies. You become proficient in your language of choice and can get pretty fast working with the libraries and syntax. Additionally, you might also win free t-shirts and/or goodies in the contests!
Although competitive coding does not involve any other aspects of programming like Machine Learning, Artificial Intelligence, Networks, Cryptography etc. but it sharpens your mind and makes it relatively easier to learn new paradigms. In the end, competitive programming is not everything there is to do in the gargantuan world of programming, and to be honest it’s not everyone’s cup of tea. But, I suggest that everyone must at least try their hand at competitive coding and if you think it’s not for you, there are numerous other things to learn like Open Source, Data Science and Network Security.
Never stop learning!
Programming and Algorithms Group, commonly known as PAG, is a student run group that fosters competitive programming under the Software Development Section at IIT, Roorkee. We have a Facebook group open to all doubts pertaining to competitive programming for everyone.
Also show appreciation by clicking the ‘clap’ button if you liked the article.