Best free online resources to learn competitive programming
Practice Algorithmic Thinking

If there's one thing I believe programmers need to master, it's the process of dissecting a problem statement and planning their approach.

By this, I mean having the ability to approach an unseen challenge and think about what is being asked. 

If I were you, I'd look at challenges posted around this website, ranging from trivial to difficult, and take the time to plan how you would solve the problem. That way, you'll be able to have a hands on experience with problem solving. 

Once you do this enough, start placing time restrictions on your thinking time. Because I know from personal experience that competitive programming is most often timed. Once you have got that nailed, you should be ready for competitions. 

In summary: practice. Y'all need to walk before y'all can run. I hope to see you as an active contributor around here!