It's been a while since I started my journey into competitive programming and in this year and (almost) a half I would say that I learned a bit not only about problem solving but also about myself, so I wanted to share my reflections on some mental aspects of practicing competitive programming hoping they can help someone else.
Please note that these reflections are merely personal and mostly stem from personal experience, if you disagree with something I would like to know your point of view!
I would also like to thank Intellegent, turska and Friedrich for proofreading.

Some background
I used to do math olympiads for 8 years before starting university, in hindsight I did not really like it that much since I never practiced on my own and would've rather played League of Legends / Minecraft / VALORANT or whatever game I was obsessed at the time. In the end I managed to get some okay results, a bronze and a silver medal at the national olympiad but I never made it to any camp for any international competition.
How I got into competitive programming
The first time I heard about Codeforces was in my first year of university, although I only actually registered and started solving problems the following summer. The initial motivation I had was that I wanted to get good at coding so I could get a job, basically grinding Leetcode, but Leetcode kinda felt like a dead end so Codeforces being more competitive in a sense made it more interesting to me. I am sure that a lot of people have a similar reason to do contests or just grind problems but for me this quickly became secondary: I think the main thing that differentiates programming problems to math problems is that an online judge can immediately tell me if my solution is correct or not, this way solving problems feels like a game or solving a puzzle, and I do not have to guess if I fake-solved a problem or not (some might say skill issue, and that's fair).
While I usually don't play ranked gamemodes in videogames, I found myself participating in almost every contest I could on Codeforces, the prospect of gaining rating or either way learning something new was a good enough incentive for me, maybe it can be a good enough incentive for you as well!
How I practice and the importance of liking what you are doing
I really don't want to make this another blog on how someone should practice (the answer has been the same since forever) but I believe that liking what you are doing is strictly tied to being able to practice effectively.
The main thing people point out when they ask me for advice in PM is my activity graph, and subsequently they ask me how I practice or how they should practice. The truth is that I have no practice schedule at all and I just get a problem to solve whenever I feel like it, I really think that the best way to practice a mind sport like competitive programming, which is naturally very different compared to a traditional sport, is just to be very interested and involved in what you are doing, if I would rather do something else I don't think it would be possible for me to put effort into trying a problem therefore turning it into a waste of time. This blog by Radewoosh explains this concept and I think it's completely correct, I say this because I found myself unable to do this during my math olympiad years: every week or so a student from my high school would organize some olympiad training and I would always participate, but I was completely unable to think about math problems on my own because it felt boring. On the other hand another schoolmate of mine started doing math olympiads 3 years after me, but managed to make it to IMO after 2 years getting gold, and 2 more years later getting another gold while scoring 41/42 points. I also made it to the first national camp of the school year during my last year of high school, but I truly felt like a complete stranger there.
This is the reason why I personally feel a bit awkward when someone asks me to make some training regime for them to follow or they ask for a list of topics to learn, most of the time it feels like that the person asking is looking for some kind of external help because they think they can't get good on their own, or maybe they're simply not willing to practice or look for the vastly available resources (Googling is still a very valuable skill in 2025). I will be honest here, if you find yourself in this situation consider how much you care about your goals and how much you actually enjoy doing some activity, maybe it can be a good idea to try something new. I say this because in hindsight I don't think I enjoyed doing math olympiads that much and one of my regrets from those years is not doing any kind of informatics olympiad.
Be ambitious, don't fool yourself
I made the final for my national math olympiad 4 times out 5 years of high school, which for most is a pretty good result, although I managed to get a medal only in the last two attempts. I thought that a gold medal was a realistic goal, every year I just thought to myself: "oh next year I will finally start practicing", but you already know how that went. The reason I wanted a gold medal is (probably) that I thought that the result of the competition was going to define the person I was, while ignoring the underlying issue, my disinterest towards maths. I think other students may find themselves in this situation, my advice is to think deeply about your motives and also to try new things while you still have the chance. I want to specify that I did not hate my years of high school, I am very grateful for the experiences I made and the people I met in those 8 years, they really are some of the most incredible people I met, but I just wish I had realized sooner that math was not my main interest and not something that I wanted to study.
Now if you are serious about getting good you should not be scared of challenging yourself, be ambitious! but obviously be reasonable enough, no one reaches LGM in a month. I remember setting the goal of reaching Master when I first reached expert, and I was pretty surprised when I reached the goal this January, if you challenge yourself you might end up being surprised with what you can accomplish. I also remember the first time I solved a 2300 rated problem, it really was not as hard as I thought. After that I set the goal of reaching Grandmaster in one calendar year, but it didn't go as planned, and that's fine, I believe that the important thing about becoming good at something is not becoming good itself, but it's more about the journey and the kind of person you become, some might say this is a cliché, but when I look back I am more happy to see how far I've gotten rather than where I've gotten.
I also recently failed to qualify for EUC2025, which is a bit (very) sad since I didn't meet my expectations, but I had a great time with my teammates (and I hope they did as well), the only thing that can be done is getting back up and trying again.
How to not get bored
I think never getting bored of something is impossible, it's true that I solved at least one problems a day for 500 days, it's NOT true that I practiced for 500 days in a row.
As I mentioned earlier I think practicing is a waste of time if I'm not in the proper mental state for it, so what I personally do when I don't feel like solving is looking for something interesting to watch/read: when I just started out I remember watching Errichto's guide on how to become red or galen_colin's roadmap. Some months ago I used to read blogs from the catalog section of Codeforces (incredible resource by the way), or about data-structures I ended up being interested in. In a way this just helps keeping a part of your mind dedicated to competitive programming, while being something that is relatively low effort.
I think getting into competitive programming communities is also a nice way to interact with other people and a way to stay engaged! I personally mostly hang around Discord communities.
Some of my favourite resources
I'd like to end the blog with a list of interesting resources that I used to check out when I did not feel like solving problems and that might be very useful to someone starting out:
The Codeforces catalog (please read it, it's very good)
Google searching for Codeforces blogs on various topics/ideas







