Hello. I'm Akshat.
I haven't done much Competitive Programming. But, I've been surrounded by many 5 star on Codechef, Specialist and Expert on Codeforces Programmers.
So, I'll summarize there Steps and Mistakes to guide you through.
So, you might think the first step is learn how to program but that's not exactly the case. If you're going to learn anything online, firstly you'll need to understand the English. The second thing is Maths, yes you do need maths to do CP which might make some of you a bit uncomfortable; but dont worry most of it can be learned along the way. You need a math level equivalent to that of a typical student from grade 8 to 10 and mostly Algebra and Permutations & Combinations, means you can forget about Geometry, Calculus and Trigonometry. You also need to know very basic modular Arithmetic and Number-Theory. If you want to practice then go to Hackerrank and under Math section do some questions to get the idea. You don't need to finish all the problems, just make sure you learned the basics. Another thing is typing speed. This is very underrated and most of us don't think about it (mine is 40wpm). Getting to 50 to 60 words per minute would be nice.
Now, we're at Second Step, which is learning the programming language. You might have heard that most of the Competitive Programmers use C++ and that's true. This is because C++ is necessary for some of the harder problems as it is the one of the fastest languages. However, If you already know a programming language other than C++, then don't bother to learn C++. I know people who got red on CodeForces using java only. If you don't have any programming experience, there are several options for you. Most of people choose C++ and to start with C++ there is 4 hour tutorial video on YouTube by FreeCodeCamp watch it completely. After you finish that, you can continue by practicing the the C++ skill on Hackerrank, where there is bunch of useful problems and you don't need to finish all of them just make sure you know the basics.
So, you have now learned to program and you want to start CP in particular. You'll need to start learning basic Problem-Solving, Algorithm and Data-Structures. There are several resources you can use to learn these. There are many free resources to learn these first one is Algorithm page on GeeksforGeeks it contains an exhaustive list of articles of most common algorithms that you'll encounter in CP. If you found little hard to understand any topic, you can always use google to find useful articles on anything that you want to learn. To practice, one good resources I've mentioned several times is Hackerrank. Try to achieve atleast 5 star on Problem-Solving(Basic) there. Most people asked for a particular roadmap, even I was. But, beleive me there is no any. People just do whatever practice they can find. However, If you still want an ordered list of problems to practice then tere is a famous one called a2oj ladders. This list contains problems for people of all levels from beginners to more experiences Competitive Programmers. In addition, contests are fun and participating in contests is also a form of practice. You can start with Atcoder beginner contest and the first few problems of CodeChef division three rounds are ones.
Last step is doing the problems in contests.
Another step is...
Wait what's this step?
Flex your skills by creating a website or YouTube Channel😉
Ignore this step it's just stupid, who would ever do this?
Now, talking about Mistakes.
The first common mistake is relying on college courses. Although, college courses contain quality understanding but think once, you can do the same in less time through YouTube and other resources. Problems discussed in classroom will not be same as problems you find in Competitive Programming contests.
The second common mistake is reading too much. Although, the pre-requisites are discussed above.
Last common mistakes is comparing yourself with others. Sometimes, it may happen your friend will do the things in less time or he'll come up with good solution. You'll feel like, "Am I too dumb for this?" well the answer is he may practice more than you do and if you came up with an argument "No, he doesn't", then maybe he is anti-social and don't talk much in class. "Oops, I think that's me".
Conclusion is everyone will improve just at diffrent rates. Comparing your progress and how much you practice with others is counter-productive.
I'll add here more CP articles. Also,
I will share my journey once I get at the certain level. Till then Stay Tuned.