As a computer science student, programming skills are a fundamental necessity. To sharpen these skills, one needs to practice various languages, frameworks, and new technologies. Personally, I began with the introduction of “Hello World,” and as of now, I have learned to create several simple information systems and explored Progressive Web Apps. These experiences have honed my programming abilities.

During my early university days, a senior, Taufan Silitonga , introduced me to Competitive Programming (CP). I was encouraged to participate in various competitions, both on and off-campus, and join a programming team. In the team, we learned to divide tasks and topics to stay focused while not neglecting other areas of learning.

Engaging in numerous competitions allowed me to expand my network with students from other campuses. From them, I often received information about competitions, internship programs, and even what they were currently learning. One of my proudest achievements was becoming a finalist in the ACM ICPC Asia Jakarta 2016 competition.

Here are some benefits I experienced after participating in Competitive Programming:

1. Coding regularly enhances understanding during lectures

Solving Competitive Programming (CP) problems daily made me accustomed to handling code. Dealing with things like nested if statements and loops became second nature. When a professor said, “later create this method with this return type, and these parameters,” I found it easier to understand how to implement it. Compared to friends who didn’t participate in CP, those of us who did found it much easier to grasp such concepts.

2. Knowing what needs to be done

CP taught me how to think about solving a problem, step by step from A to B to C. If the first solution doesn’t work, I learned to change the scenario and use a different solution. In essence, it made me think more and become accustomed to problem-solving. This mindset further encouraged me to explore new things. First, learn technology A, then B, and eventually combine them with C. Many of my friends struggled with tasks because they didn’t understand the flow of the program. So, they often got stuck on the same issue.

3. Becoming friends with error messages

When starting to learn programming, encountering errors becomes commonplace. Initially, I disliked errors and even reading error messages. If there was an error, I would immediately review the code without trying to understand the meaning of the error or how to resolve it. Eventually, the result would be another error. From this, I learned to cultivate the habit of reading error messages. So, when I read an error message, I try to understand it, and then I know what needs to be done.

4. Internship opportunities

When I was a sophomore, I tried participating in an internship during the holidays. Initially, I was hesitant to join the program, but I thought there was no harm in trying even if I failed. I applied to a prestigious company on campus, sending a fairly comprehensive resume for a second-year student—listing my experiences as a participant or finalist in various competitions. When the company provided a test for the internship, it turned out to be CP problems. Although I could only solve 2 out of 3 given problems, and that was because they were similar to ones I had worked on before, I was thankfully accepted for the internship program.

5. Understanding algorithms and data structures

CP is closely related to algorithms and data structures. I had to learn many algorithms and data structures to develop my CP skills. I frequently asked my professors and seniors about how a particular algorithm works, when to use Vector or Array, the difference between globally and locally declared variables, and even the limitations of an array with a specific data type. When I took the Algorithms and Data Structures course, I found it a bit easier because I was already accustomed to these concepts. I also became adept at studying the complexity of an algorithm, typically learned through Big O Notation.

One of my friends once asked, “Why do many companies use CP for internship exams? It’s not guaranteed that someone skilled in CP can develop an app.” Other friends had both positive and negative opinions on this. However, it depends on the individual. Besides, many companies don’t use CP for internship or full-time exams. So, in my opinion, it’s not something to be overly concerned about.


These are some of the things I gained and experienced by frequently participating in Competitive Programming competitions. If you have other reasons that drive you to enhance your programming skills, feel free to share your thoughts in the comments. Everyone has their own learning methods. I’m not claiming to be an expert in CP; after all, I only made it to the finals, haha! 😅

Oh yes, this is also my first article, so if there are still many mistakes here and there, hopefully, they can be corrected in the future.

Happy Coding! 🖖🏾