The Right Approach Towards Competitive Programming
What is Competitive Programming?
Most of the CS or IT undergraduates have certainly heard of the term competitive programming or Competitive Coding(CC to be short). It’s nothing but a mind sport where the participants try to solve a problem by achieving the desired output for a given set of inputs but that’s not all. Many can give a solution to the problem but very few can give an “efficient” one. By efficient, I mean both concerning time and space complexity. This article is meant for those who zeal towards becoming good competitive programmers and are willing to embark on this journey of competitive coding.
Why do it?
There are many reasons why we should keenly study and focus on competitive coding. Some of them are listed below.
The first and probably the most important one is that it makes you a desirable candidate for major companies. A high rank in competitive coding leaderboards is indicative of your good problem-solving aptitude and thinking functionality in the face of limited time. Top companies like Google, Apple, IBM among others keep a very keen eye on CC events like ACM ICPC to state a few. Such companies often extend job offers to winners of these events.
The above is one of the primary reasons why people start competitive coding but the benefits do not just stop there. Training and taking part in programming contests make you a more disciplined, faster, and focused coder. Practicing competitive coding teaches you how to be more focused on a task and not only complete it quickly but accurately. These skills are beneficial in any job and not just coding.
The Right Way To Do Things
Students new to programming are often seen committing certain mistakes over and over again which not only wastes their time but the energy they mustered in order to start doing it as well. I will be highlighting a few common mistakes people make during the course of studying CC.
- After a contest gets over, people often don’t “re-solve” the questions they failed to do during the contest owing to exhaustion. This is where the actual learning starts. Carefully analyzing why you couldn’t solve the problem is an integral part of the learning process. Look at the Editorials and discussions and try to understand how others approached the problem and accordingly try to solve it once again.
- After completing a coding course, students stop practicing problems on a regular basis. The problem-solving ability they developed over the duration of the course declined. After a period of 3 to 4 months, you are back to where you started. Revisiting all concepts and building that problem-solving skill once again becomes a time-consuming and cumbersome task. Most people often lose motivation at this point and give up on CC. The point to take away from this is that you should never stop practicing questions regularly.
- Stop worrying about languages. This should not be your main focus. Choose one language and learn all the concepts thoroughly in that one language. Languages can be learned over time but the concepts you build can be applied anywhere as the core logic in any language is the same.
- Don’t be a loner. Have a group of friends with whom you can discuss all your doubts. It is really important that you start doing this from the beginning itself. It not only helps you clear your queries but also know other better approaches to a certain problem.
- Stop following a load of resources. Students often buy many courses from various websites and learn a single concept from all these courses. As a result, they fail to completely understand one particular concept due to the confusion that arises from all the material they refer to.
- Never think that your doubts are silly. People often refrain from sharing their doubts with others and at the end of the day, they remain clueless about that topic. Over a course of time, all this starts piling up affecting not only future learning but also your morale.
- Avoid procrastination and work hard towards your goal. It is very common to see people self-rejecting themselves and due to this, they lose certain opportunities they could have cracked had they kept their heads up. Think about what skills you will develop throughout the course of this journey to keep yourself motivated. Even if you don’t feel that you are right for a particular internship, apply for it. You have nothing to lose.
- Do not really worry about ratings on various Coding Platforms. Rather focus on your growth. It is normal to get demotivated or disheartened when you are unable to perform well in a contest or cannot solve a problem. It happens. Learn from your mistakes and try not to repeat them again. Your rating will eventually increase if you focus on learning.
- Don’t stick to easy problems. Competitive coding is all about pushing your limits. Practicing alike problems repeatedly will hamper your growth. Start solving problems that really push you.
- Lastly, keep a respectable CGPA. Most companies that come to offer internships and jobs often keep CGPA as their first filtering criteria. All the effort you put in to learn CC will ultimately go to waste if you are not able to qualify for the company.
Ultimately it all boils down to your dedication level. CC is a skill that is not built overnight but developed through continuous and rigorous efforts in the right direction. It might seem impossible at first but with the right amount of effort, you will definitely make it.
You can’t call yourself a competitive coder unless you “compete” in coding contests which are a great way of analyzing your performance and progress. If you are really interested in testing your skills, I encourage you to participate in “MozCode” which is an upcoming coding event being organized by Mozilla Firefox Club VIT. You can get more information regarding the event by following the below link: