Competitive Programming: Why Fun & Not Fun?

Here’s why competitive programming is fun and not fun:

Competitive programming is fun because it can drive your skills, help you meet fellow programmers, give you career opportunities, and come with the thrill of victory and success.

It’s not fun in cases where it can eat up your time, end in disappointing competition results, and impair your general coding skills.

So if you want to learn all about what makes competitive programming both fun and not fun, then this article is for you.

Let’s get right into it!

Competitive Programming: Why Fun and Not Fun? (All the Info)

What Is Competitive Programming?

happy male computer programmer at his workstation.

Are you deeply familiar with competitive programming?

Have you won multiple international competitions and built worldwide fame as a great programmer?

If so, why are you even reading this?

Surely, you know everything there is to know about the good and bad sides of competitive programming.

Or, maybe you’re not super familiar with the genre of competition, and you want to learn a little more before you consider investing a lot of time into it.

In that case, let’s take a minute to talk a little bit about what is involved with competitive programming.

In general, it involves a carefully crafted challenge that allows programmers to directly compete with each other.

More often than not, a competition will pose a problem to the participants, and they are charged with writing a program that will solve the problem.

Competitions are usually timed, so the person who can solve the problem in the least amount of time will win.

There are many variations in competition, but this is the most general explanation, and it sets the stage.

Competitive programming encompasses the world of these various competitions.

Whether or not it is fun depends on how you feel when you participate, so let’s get into some of those feelings.

What Makes Competitive Programming Fun? (4 Reasons)

A happy looking group of computer programmers working together

Now that you know a little more about competitive programming, we have two questions to address.

Why is it fun, and why is it not fun?

That’s best answered in completely different sections, so why don’t we start with the fun stuff?

Below are some of the most compelling reasons that people enjoy competitive programming.

#1 Winning

an excited female programmer celebrating her accomplishment

Winning is fun. It’s ok, to be honest about that.

Winning can be fun when it doesn’t matter—like winning a game of Go Fish against a sibling. It can also be fun when it is a programming competition.

Since competitions come in many shapes and sizes, winning does too, but the simple fact is that you invest time and energy into these competitions, and if you do win one, you’ll probably enjoy it.

That’s how competition works.

So, if and when you win a programming competition, it will probably feel like a lot of fun.

#2 Getting Better at Programming

female programmer working at her desk

As many coaches will probably tell you if you compete in enough different things, it’s not all about winning.

That’s definitely true with competitive programming too.

Originally, the competitions were designed to help people hone specific sets of skills that apply to general programming. And, the competitions are usually pretty good at that.

You might see people talk about how competitive programming isn’t real programming, or how it doesn’t help you work as a professional programmer.

I’ll address a lot of that later.

Before any of that, though, competitions can help you think about certain aspects of algorithms and resource management.

And, the time constraints of many competitions will force you to master specific aspects of programming to a higher degree.

When you see your own progress, it can be a lot of fun.

#3 Making Connections

a group of programmers working in office

A lot of programming competitions are online events, and you might not get a ton of opportunities to meet people, make friends, and do all of that social stuff (although some online socializing does happen and can be fun).

Some competitions are in-person.

If you attend those events, you have a chance to meet a bunch of people who enjoy programming as much as you do.

Whether or not you are competing, and whether or not the people you meet are competing, it’s an environment where you can make connections with people.

You can make friends, which is usually fun.

You can do some professional networking, which can also be fun.

You can make memories in general, and who doesn’t enjoy that?

#4 Major Events

Team of cheerful male and female IT developers

In-person competitions can range in size, but there are some competitions that are tied to major events.

Just to give you an idea, some of the best-known include Google Hash Code, the Facebook Hacker Cup, and countless college-sponsored tournaments.

Many tournaments have online rounds, but the finals are often held in person. These are usually tied to large events.

There are tons of things to see and do at the events, tons of people to meet, lots of networking opportunities, and whole production around the finals of the event.

It can be an enjoyable time if you make the most of it.

When Is Competitive Programming Not Fun? (4 Things)

A male software developer stressed out

There’s a lot of fun to be had with competitive programming.

Yet, there are billions of people in the world who never partake in the action. Why is that?

Well, competitive programming isn’t all fun and games.

If you’re really trying to win, there’s a lot of hard work involved.

Even if you enjoy the practice and hard work, the time and energy you put into competitive programming can come at a cost.

After all, that’s time and energy that you aren’t putting into other things.

With that in mind, I’ve listed a few specific cases that might make competitive programming seem a lot less fun.

#1 Losing

young computer programmer alone in his office looking sad

When you invest a lot of time and energy into preparing for a competition, only to lose, then that moment isn’t always the most fun.

Naturally, this will depend a lot on you.

Some people lose gracefully and have plenty of fun with the process even when they don’t win.

Other people can take losing pretty hard.

If you’re in the latter group, then you might not look fondly at a competition right after losing.

Ultimately, this doesn’t mean that competing is miserable across the board.

Instead, there’s a moment of unhappiness that might come when you don’t win, and you have to see how that balances across the other moments tied to competition.

#2 Long Hours

hands of a man working overtime on the computer

When you take competitions seriously and try to win very competitive events, you have to try really hard.

Many of the best competitions are international, with thousands of professional programmers entering them.

You’re not going to win these things on a whim.

That means you have to put in long, grueling hours to master the skills and fully prepare for each competition.

If you’ve ever seen a sports movie where the main character (or characters) pushed themselves to the limit and endured all kinds of physical pain, programming competition preparation isn’t entirely different.

It might not come with lots of sweating, but there are very long hours smashing your brain against challenging ideas.

It’s not an easy journey, and if you don’t enjoy the process, then these long hours will feel miserable.

#3 When Competitive Programming Doesn’t Help Your Resume

HR personnel holding the resume of an applicant

If you’re getting into competitive programming so that it will help you get a job, you might be in for a disappointment.

There are occasions when saying that you won a major competition looks good on a resume, but in a general sense, competitive programming doesn’t translate into a programming day job.

In reality, the way you spend your time preparing for a competition is very different from the way you will spend the majority of your time at a regular programming job, and because of that, the competitive experience often won’t help you get hired.

Now, the networking that can happen at competitions—where you meet other programmers—actually can help you get a job, but that’s another story.

If you put a ton of time into competitions and still can’t get a job, it’s easy to feel resentment.

The time spent on the competition might not feel as fun in hindsight.

This doesn’t mean you shouldn’t do competitions if you enjoy them. It simply means that you can’t count on competition alone to advance your career.

#4 When Competitive Programming Hurts Your General Programming Skills

rear of a a frustrated male programmer sitting in front of his computer in a dark office.

This is debatable, and to be perfectly honest, I have never joined a programming competition.

I’ve observed them, but I haven’t participated.

So, I won’t say that competing definitely hurts your programming skills.

Instead, I’ll say that there are definitely people who believe this is true.

With that in mind, let’s explore how competitions could harm your general programming skills.

In order to prepare for a competition, you have to anticipate what questions will be asked and how you can solve the problem of the competition.

There’s a ton of variety, but competitions are usually timed, and even for the ones that last multiple weeks, the scope of the challenge is going to be much smaller than what you would normally do at a programming day job.

Competition is over in a set amount of time.

Building programs for a professional firm can take years.

They’re on different scales.

So, when you hone your competitive skills, you’re specifically zeroing in on ideas and solutions that are simplified and faster than the normal work for an everyday programmer.

That limited focus can pull you away from lines of thought and skills that everyday programmers would need on a regular basis.

As a specific example, competitions usually don’t require extensive program documentation.

Meanwhile, if you’re working on a section of code that fits into software with millions of lines of code in total, it’s extremely important to document things thoroughly and efficiently.

After all, other programmers will work with your code in many different ways, and your documentation is how you prevent them from getting lost.

All of this is to say that if your competitive programming development hinders skills that you need for your day job, then that isn’t the best outcome, and it might sour your competitive experience.