I've seen a lot of new competitive programmers frequently asking about how to practice, how to improve, etc. There are a ton of resources on this, but there are some things I would like to personally mention that may be helpful (at least it was for me). This blog really only applies to those <= cyan but feel free to read it otherwise and call me out if I say something stupid (I am a human after all). Also, if you're experienced with Codeforces groups, please let me know about my idea I listed at the bottom because I am not entirely sure how it works.
Firstly, don't wrap yourself up in rating
As much as this has been said, rating is just a number. We do cp to learn how to think outside the box and apply theoretical computer science to well-defined problems, not to raise a number.
Problem Solving, Problem Solving, Problem Solving
I cannot describe how many times I have seen people grind out multiple cses problems that I still don't have yet they cannot consistently solve Div2A. The reality is most algorithms such as Dijkstra or structures such as segment trees aren't needed to reach blue. I am not saying that learning algorithms is not important. Ultimately, learning is healthy, and you should never restrict yourself. Despite this, most div2 A-C (and sometimes D) don't test knowledge of algorithms but rather problem solving. This means that learning how to implement certain advanced data structures and algorithms will only help you on problems that are way above what you're able to solve. I recommend doing a lot of logic puzzles and math (along with practicing cp). These will train your brain to think in many different scopes. Trust me, it will help a lot! Once you get to blue, that's when I would hop on the cses grind.
Don't worry about other people
Everyone learns at different paces. It is a waste of time to think "I wonder how many problems this person does" or "I wonder how long they practice a day". In reality, nobody cares. If you aren't improving as much as someone else, it's NOT because you're stupid. Don't forget that. Just like any other subject, learn at a pace that is good for you.
Turn your loses into wins
It's easy to waste a ton of time on a problem, never solve it, and think "oh I'm so bad why couldn't I do this". Instead, think of it as a win. You just found a problem you can learn from. Read the editorial, then try it out. What techniques did this problem have? Now you can try other problems that use this technique. Conceptually, if you ignore every problem you can't do, you will stagnate harder than Europe in the 1200s.
Sometimes I see beginners get so frustrated. If that's the case, take a break and do something you find enjoyable. This isn't military training; practice when you want to and you'll get better much quicker. A happy brain is more powerful than an angry one.
Resources I am working on
Firstly, many people have been requesting things such as a more frequent div 4 or even a div 5. I disagree with these things, however, I do have the ability (granted by a gm) to make groups. Ok, I'm not entirely sure how they work, but what I may do is pull quality problems from the <= 1600 pool and build very basic contests (with specific themes such as using a set or binary search) for people to compete in/upsolve.
Along with this, I started a discord server which is treated essentially as a regular cp server however I am specifically removing the concept of giving people roles based on their ratings (I want it to be as beginner friendly as possible). If I end up executing this group idea, I will announce things here. I also have Twice channels because Twice raises your IQ.
There's barely anyone here because I just started it, so I'll see how it pans out (especially if the group beginner contests are something I decide to do).