What Is Needed For Competitive Programming?
Just a knack for programming. Really, all you need is a computer, an internet connection and a knack for programming that’s enough to get you started.
Now, most of the current contests for beginners on various programming sites require some basic knowledge of a programming language to start with.
Even there are contests for beginners which involve pretty much simple ad-hoc problems which are best for enhancing your confidence.
Roadmap To Start Competitive Programming
Interested enough to move forward with how to start? Let’s put forward few points step by step –
-
Learn a language and go to the depth, understanding the bits & bytes of that language. (p.s. also don’t go for a PhD in that language either). You can start with any language Java, Python, C++ anything that suits you but also looks for the code lengths and memory usages of each before moving forward with a particular language as it hugely affects your performance time in contests.
- Start getting comfortable with a coding site with a good interface like Hackerrank and solve quite a few numbers of problems from them. Why choose Hackerrank? Its recommendation system takes you slowly and gradually with increasing difficulty and building up your confidence.
-
Learn data structures and libraries of that language. For example, for Cpp – arrays, strings, LinkedList, stack, queue, recursion etc. and STL (Standard Template Library), these will help you immensely in writing shorter better understandable codes and also improve your performance.
- Solve at least 40-50 questions from Hackerrank and make yourself comfortable with the IDE.
- By now you should have gained much confidence and we are ready for moving into contests in sites such as Codechef, Codeforces etc. Start with long challenges in Codechef, where you will get 10 days’ time to solve 8-10 number of questions, particularly this is best suited for beginners as it gives ample time to research about a problem and come up with a solution.
- Maintain Consistency, be patient and try to push yourself out of your comfort zone by revisiting the questions which you were not able to solve after every contest. Do them urself again. Watch editorials, other’s solutions after the contests if you are not able to understand it. Although as a beginner do not engage more than 30 mins for a question if you are not able to find an answer.
- If possible, find someone with the same aim of competitive programming for pair programming. This helps to learn by other’s mistakes and also improve one’s ability to think out of the box.
- Start learning Algorithms along with the contests, algorithms can help you clear your confusions, there are few algorithms which are difficult to visualize when starting as beginners. Algorithms will help you to optimize your program and is one of the most vital factors in ranking in contests as it hugely affects your execution time.
- By now you will be familiar and confident with most of the contests, now its time to move up to higher levels. Start by participating in international competitions like Google CodeJam, TopCoder contests, ACM ICPC etc. If the right amount of hard work and patience is given you can definitely find yourself among the top participants in these contests.
- Very importantly do not lose confidence if your ratings drop, do not give up. Initially, it will be challenging to maintain the consistency but it’s very fine and quite everyone goes through this phase.
Already a Developer and Want To Start Competitive Programming?
Well generally, being a developer, you will require more problem-solving skills rather than participating in contests. But its never a bad idea to improve your skills for such.
Competitive programming will never disappoint you. You will always find something to learn every time. The best thing that you will get from this is various kinds of optimising algorithms which you can use to scale and optimise real-world projects.
Lets also list all the sites and IDE where you can practice:
- https://www.codingninjas.com/studio
- https://www.hackerrank.com/
- https://www.codechef.com/
- https://codeforces.com/
- https://www.topcoder.com/community/competitive-programming/ (Only after you are comfortable with advanced problems)
-
https://atcoder.jp/
Also attaching well known worldwide competitions:
Get detailed information about FAANG companies here.
Frequently Asked Questions
How do I start competitive programming?
This entire article has been dedicated to the steps and methodologies one needs to follow, to begin with, competitive programming. Summarising, learn a programming language, understand all the programming concepts, practice on competitive programming platforms and be consistent with your practice and competing in contests.
Which competitive programming sites are good for beginners?
A few websites which are good to practice competitive programming include hackerrank, codechef and once you are comfortable with reading and understanding competitive programming problems, move on to codeforces.
Is it necessary to do competitive programming?
Necessary is relative. If you want to have fun solving puzzles with the help of math and coding, competitive programming is the best.
Can competitive programming get you a job?
Competitive programming helps you prove your mettle as a coder and displays your ability to work under pressure and against time therefore sometimes companies do contact the top performers and at times hiring contests also occur on competitive programming platforms.
How can I get a job at Google?
For getting a job at product-based companies such as Google, the first and foremost requirement is to have strong programming concepts which include data structures and algorithms but are not limited to it. In addition to this, you need to have a drive for technology and the heart to become a true ‘engineer’.
Is competitive programming secret to a job at Google?
Absolutely not. You might begin competitive programming with the mindset that you will get a job at a company but that won’t make you love the intricacies of competitive programming. It is an art, not a subject and it is imperative you do it because you like doing it and not because your senior introduced it to you as a ‘secret to a 6 figure job’.
Stay tuned for all the resources that you might require for smooth sailing into this journey of competitive programming. Hope this article helps aspiring programmers and developers.
You can also consider our competitive programming course to give your career an edge over others!