CodinGame Grandmaster
Hey people,
The last time, I was writing about what it takes to get better at programming. And during the Fall Challenge 2020, I expected that I could fail miserably and not even reach the Gold league.
Although, I hoped I could make enough points to get Grandmaster right after the contest, it was not enough. Finishing only top 15%, I still climbed a lot but not enough for the title. The most surprising thing is that with only one contest, I made it to the 10% of all contests participants worldwide.
Well, it turns out, I was correct. Even though, most of my ranks on the CodinGame multiplayer ladder fit in the Gold league, it's still not trivial to get there. During the last challenge, I couldn't make use of my strength, since the game required to be good at Monte Carlo Tree Search.
MCTS is not an algorithm I mastered yet. I am good at games with moving units where you can use a lot of linear algebras and heuristics. But a completely abstract problem requiring mathematical understanding and optimization, is not my cup of tea.
Programming is Math
And that's the other thing too, I wanted to talk about the top ranks of competitive programming, and not only on codingame.com but also leetcode.com, codechef.com, codeforces.com, etc.
The best competitive programmers seem to have a mind able to look at a situation and understand the essence of the problem from a mathematician point of view. Because of that, they see the truth of the problem and can code accordingly.
They also possess a large library of algorithms and previously solved problems. Like a chess player, if you never met a position before, you have to think a lot about it. If you never solved a programming task before, you will have to think a lot too. That's where practice becomes invaluable, for interviews and competitions.
And obviously, you have the world class, naturally gifted people who make it seem effortless and easy. But..
Programming is not Math
And this is what I dislike the most about programming. Some people go too far into making it seem like programming is only about mathematics (codechef.com). Programming is not really mathematics, it is a branch of applied mathematics. Nobody liked mathematics at school because, there were no tangible way to use what we learned, except to get good grades.
But as a professional today, in a world where we rely on computers for everything, you notice that what we use computers mostly for, is to compute stuff with mathematical functions. Finance, weather forcasting, game theory, simulations, encryption/decryption, etc. Every subject seem to possess a core mathetical fundation that explains its behavior and that we can use to make predictions.
Conclusion
In order to continue my competitive programming journey, I will need to get much better at mathematics than I thought I would ever need. When you really think about it, it's obvious. Turing, Djikstra and other fathers of computer science were all mathematicians. I just didn't notice how much it mattered until now.
Great to hear Victor! Congratulations 👏
Great job !!!