Hi. I’m Darshil, and this is my first installment in a new blog series. In fact, this is my first blog, ever. It’s Thanksgiving (in Canada) and I finally have the time and motivation to start blogging since I told myself I will back in March of this year.
I wanted to try blogging for a couple reasons. The first is self-reflection; by blogging my accomplishments, I force myself to face mistakes and frustrations that I would otherwise cast aside. The second is that a lot of people that I look up to (generally students and recent alumni that I found online who have found success in their respective disciplines) publish their thoughts online. I think that if these people are dedicating a significant amount of their valuable time to blogging, it must be a very rewarding hobby, and I would like to find out for myself. Lastly, I think that future-me will appreciate the time and effort I put into this simply because of nostalgia. Hitting 20 years old last year (about to be 21), I have been thinking a lot about great memories I had and how times are changing faster than I expected. I wish I had taken more pictures and recorded more goofy videos, but that time has passed. This blog (however long it goes) will be another medium that I can look back on to see how I got to where I will be.
This blog series will be called “Road to Red”. The focus of it will be to track my progress as I get better (hopefully) in competitive programming. For anyone that’s new to the “sport”, there are a variety of online platforms where coding competitions are held regularly. To track how well or poorly users are performing on these contests, an ELO-like system is used to give competitors a numerical rating. Rating ranges are generally defined by a specific colour, and on almost all the major sites, red is used for the highest rating range. It is a colour of distinction as it is generally only awarded to the top 0.6% of active users on a website. That is a rough figure I came up with based on the active users on CodeForces; however, the main point to take away is that it is quite a difficult task to get that good at programming.
The goal I’ve set for myself is to hit red on CodeForces. I chose CodeForces because it is the most popular of all the online platforms that I know of. Additionally, it has many regulations in place to penalize cheating and plagiarism. Throughout the series, however, I intend to write about my successes and failures among other platforms as well, such as CodeChef. As I am also a student and currently looking for internships 👀, I will be conducting coding interview practice on LeetCode as well. So, if I make significant strides there, I’ll mention it too.
Currently, as of writing this blog, I have a rating of 1267 on CodeForces. I fall under the second lowest rating range and have a colour of green. My rating is no longer provisional; I have written a couple of Division 3 and Division 2 contests, and I have hovered around this range. As sad as it is, I firmly believe I belong here due to my poor performance. The people who have achieved red status have generally dedicated thousands of hours to mastering the craft, and I can see why calling it “Road to Red” may even seem a little offensive. I understand the mountain of difficulty I’m planning to climb, and I know there’s a very real possibility that I may never reach red as well. However, I intend on trying my best with the time that I have and improve at something I very much enjoy at the moment. If I don’t make it to red, at least you’ll know what not to do 😉. Kidding! I’m sure this series will contain some valuable information that may help the next coder reach their respective goals. With a lot of things in life, I find it quite difficult to get started just because of the uncertainties that lie along the path. I myself have already made explicit the doubts that I have going into this. However, with this blog, I am documenting it from essentially the very beginning to serve as an example to others who may hold this doubt within themselves as well. If I can do it, so can you! And if I can’t, you might be able to. Give a try, I don’t know…
Just before finishing up, I’ll briefly go over the coding experience I had before getting into competitive programming. In high school, I learned introductory programming practices and basic data structures and algorithms (DSAs), and participated in the Canadian Computing Competition hosted by the University of Waterloo in grades 11 and 12. My performance was decent, but I didn’t get too interested in computer science. It felt quite odd to me, and I was still more interested in the traditional sciences. However, during university, I got a couple of software development internships. These internships changed the way I looked at programming as I began to enjoy it a lot more. However, up until February of 2020, all I had was the knowledge from high school and the experience I carried from each internship to the next. In the month of February, with an attempt to get better at coding interviews, I started doing LeetCode problems. This was my gateway into online judges. I started to enjoy learning about new and creative ways to solve the same problem, and I was getting better at it too. I started with Easy problems, where the emphasis would be on simple and one-dimensional DSAs such as sets, dictionaries (yes, I code in python 😁), strings, arrays, etc. Then, I began to solve problems that involved combining strategies from multiple Easy problems and loved seeing myself get better. Not even 1 month after that, the Youtube algorithm blew up William Lin’s Google Kickstart Round A win, and I was introduced to competitive programming. Before that, I had never heard of CodeForces, CodeChef and the like; I knew that they had existed somewhere on the internet but never thought that it was for me. In May, after doing quite a bit of LeetCode, I wrote my first contests on these new platforms. I did okay on CodeChef, but scored quite low on CodeForces. 5 months later, and here we are.
While reading the last paragraph, it may seem rushed and hard to read, and it is because I want to get this blog up and posted by the end of the day. However, the main point is not to give a complete recap of everything I learned. I just want to emphasize that I’m still new to this. The experience that I have developed up to now can be obtained with some time management and dedication. However, now we’re getting to the interesting part. Future posts will go a bit more in-depth about my performance on specific contests and what I did to get there. This will range from high-level changes in my routine and lifestyle all the way down to more advanced DSAs that apply to niche problems. I can’t think of anything else to write about so I’ll just stop here.
And as always, thanks for reading!
Comments