Before we get started let's clear one thing that if you are a beginner who don't know how to get started or an expert who has command on programming languages , there is only one way through which you can improve your skills in competitive programming and that is practice practice and practice . This is the only way to be the best in the field of competitive coding. More you spend time on problems more ideas come to solve the problems.

So let’s get into more details:

So now all points that I am going to mention below will have one thing in common- “Whenever you start learning something new, practise/implement it simultaneously . Otherwise, you are definitely going to forget it in future”.So please just do both the things simultaneously. So now I am not going to mention this point in any of the points. Just assume this as an important point .

**1. Pick a programming language** -

If you are going to start your competitive programming first of all you need a programming language to code your thoughts . I am not going to tell you which language you should choose but I would mention a couple of programming language which can be best in competitive programming.

I) C++

II) Java

III) Python

IV) C#

V) JavaScript

Choose any of the above languages ( If you don't know any programming language) .

Find some good book/website to learn it’s basics. Once you know the basics, you are ready to go further ahead.

There are multiple websites which provides free / paid content to learn programing.

**2. Start practising on programming websites. **

Pick any website of your choice I am going to mention below

I) Hackkerrank : If you are the beginner then it is one of the best site that I am going to recommend you .

II) Hacker earth : Just like codechef it also contains many practice problems and programming contests from different companies and from itself .It has a “code-arena” to try for a small 1v1 coding race.

III) Leetcode : It has a categorized list of easy to hard problems & you have to use your nerve to solve them. It also provides platform for competitive programming. It also provides interview questions for practice.

Note : Best for interview practice.

IV) Codeforces : This site is also one of the best site to solve the coding problems .

V) CodeChef : This site is full of practice problems and they organize many contests for competitive programming. You can choose as many as you want.

After choosing the platform solve the questions in order of decreasing number of submissions. This will get you started and you’ll have an idea of what kind of questions you can get.

**3. Start practising maths problems**.

Solve maths problems from Project Euler. It’s a great website with sufficient number of problems to hone your mathematical skills. It is self-explanatory why maths (especially discrete maths) is important for competitive programming.

**4. Learn new algorithms and data structure. **

Always try to learn the new algorithms because problems with higher difficulty cannot be solved by just simply translating the problem statement into code. In that case we need some more understanding of the data structures and algorithms. Such problems require knowledge of some new algorithm(s) that you don’t know. So learn them and solve questions related to them.

**5. ****Participate in contests regularly**

So this is the most important thing that you should do. Participating in coding contests helps you find out where you currently stand among your peers apart from improving your speed and accuracy.

That's the whole idea of competitive programming though.Then Up solve the questions. Up-solving is an important part of learning and developing your skills. Up-solving generally means that you try to solve a question that is just out of your comfort zone, i.e., you try to solve a question that you could not solve previously. Look at the editorial for that question and then try to solve it again. Also, look at other’s code. Eventually, this widens your comfort zone.

**Some points that are overlooked :**

1. Do not get frustrated when you couldn’t perform well in some contest.

2. Prepare a pseudo-code in rough before coding the actual solution.

3. Learn to develop the “Never give up” strategy and always think next time you’ll perform better.

4. Participate more in short contests rather than long ones. Long contests help in learning new algorithms & data structures.

5. While solving a problem during a contest be careful of certain aspects- the problem statement, time limit, number of submissions for that problem, accuracy etc. All these factors help you decide which problems you must solve first.

6. Do not stick to a problem for more than an hour when you are practising. And do not give more than 30 mins during a contest.