These days I’ve been thinking about my high school days, when I was studying for the olympiad in informatics. At the end of those days, I had achieved a relative mastery in competitive programming. Yesterday, I accidentally took a look at my Codeforces account and noticed I had solved ~1700 programming problems there, regardless of hundreds of problems I had solved on the other online judges, and hundreds of theory problems from my books.
I’ve never felt some kind of mastery in another field. I’ve felt progress, but it was often disappearing after some time. I’ve felt that I can do something good, say I have a talent for it. But in the end, I never felt any confidence in those matters like what I feel when encountering an algorithm or combinatorics problem.
I think about its possible reasons a lot. A notable point is that I haven’t even put a big effort into anything like I used to put into competitive programming. In those days, my life’s background was the olympiad. At any time, I was thinking about a problem in my mind: While walking from school to home, while walking from home to school, while watching TV, while talking to my friends, while not talking to my friends, while going to bed, while sleeping, while waking up, at any time! But I was never like that in the days after those. WHY?
These are the main reasons I can think of:
- The structure of university courses: In university, each course starts with the semester and ends ~4 months later with the semester. So, by default you’re not going to engage in them for more than a semester. Also, the university courses, especially during a bachelor’s program, are very diverse and are not necessarily related to each other.
- The competition in olympiad: The olympiad’s atmosphere was very competitive. Each day and each night, I was comparing myself with my friends studying the same things and participating in the same contests as me. Luckily, I was better than most of them and it kept driving me toward studying more and more. But in the grown ups world, you can’t easily find some people being exactly in the same path that you are. Thus, in most of the cases there’s no one to compare yourself with.
- Progress monitoring: We used to monitor our status right after each contest. Our Codeforces ranking used to describe our progress very well. Can you imagine how it feels when you start from newbie (the gray area), you struggle to increase your rating but fail in every contest, practice and practice and practice, until one day you’ll finally change your color to green? =) It’s very exciting and can seriously motivate you.
Also, note that some fields aren’t linear! In Codeforces, you see a number, a scalar, as your rating. Most of the times, if someone is master in segment tree problems, he’s probably master in other data structures too. People learn DFS, then BFS, then 0-1 BFS, then Dijkstra, then … The path is almost clear. There are not a lot of different topological sorts for the subjects you have to learn. But other fields are not necessarily like this. Each person might have his own unique path to reach mastery.

- Vague path: As I mentioned, there’s a clear path for the subjects to study in the olympiad. That’s true both for algorithms and combinatorics. Also, the number of subjects is very low and the space of the problems are so small. But is that true for other areas? Not necessarily. There are a loooot of subjects to study, and you don’t know where to begin and where to go next.
- Coaching: Continuing the previous point, there was often a teacher that guided us through the path. He could suggest or teach the next suitable subject. But in other areas, there’s no such person. It’s only you and yourself. Even if you know someone who is a master of that field, he might not agree to coach you. And even if he does, he might not have required coaching skills and might even misguide you. So, you have to put an effort to discover your path in addition to the effort that is required to study the subjects.
- Impatience: This is mostly a personal issue. The title of the post refers to this point too. Since I have grown up with Codeforces, unconciously I expect to see the result of my efforts soon. There used to be at least a contest each month, so I expect to see the results at least in a month. But some things take much longer to lead to a result. I can’t understand this simple fact. So, if the right pattern is something like “just try, not give up and try, don’t wait or look for the results, believe that the results will eventually appear”, my pattern is like “try so hard for a small time, start searching for the results, there’s nothing, try a bit more, oh there’s still nothing, get disappointed, give up”
I think I can find a bunch of other reasons too. But these were the main reasons. My goal from writing this post was to talk about the last point, Patience, or more elaborately: Trusting the process
Almost in everything I have started, I have given up before reaching mastery. I simply can’t trust the process if I can’t see the results of my efforts immediately. If I can’t trust a process, I will start to change the process if not giving up on the goal at all. Thus, I can’t reach the end of the process and will remain a newbie in every single matter.
How can I cure it? I still don’t know. I just knew I have this issue and wanted to elaborate it a little more. Now, I understand it better and can think about its solutions. I’ll inform you if I found any. 🙂
Such a nice writing:)