← Back to Articles

Stop calling them “programming” competitions

Featured Image

Have you noticed that all programming competitions are actually all about solving difficult math and algorithm problems and not about real-world programming? It’s called “competitive programming” and for someone who does professional software development, it seems very disconnected from real-world programming. In fact, most of these problems could be solved with a pen and paper, so what’s going on? Why are these competitions called “programming” competitions when they don’t seem to have anything to do with programming?

What is programming?

In order to understand the issue, we need to first define what programming is. Programming is the act of writing code that tells a computer what to do. This code can be written in a variety of programming languages, such as Python, Java, or C++, and it can be used to create all sorts of software, from web applications to video games to operating systems.

But programming goes much further than simply writing code. It also involves understanding how computers work, how to design software systems, how to work with databases, how to debug and test code, and how to collaborate with other developers. You need to understand software design patterns, system architecture, clean code principles and user interface design. You need to know how to work with APIs, how to deploy code to production, and how to scale your applications to handle millions of users etc. You need to understand hardware, networking, security, and so much more. Oh yes, and you occasionally need to know some math and algorithms too.

What is competitive programming?

Competitive programming, on the other hand, is a mind sport. It’s all about solving algorithmic and mathematical problems under time constraints. The problems are usually quite challenging and require a deep understanding of algorithms and data structures to solve. You need to be able to think quickly and creatively to come up with efficient solutions to these problems. It’s not about developing real-world software – it’s about solving puzzles. You don’t need to know almost anything about how a computer works or how to design software systems. In most cases, you don’t even need a computer to solve these problems – a pen and paper will do just fine.

The problem with calling them “programming” competitions

When most people hear the word “programming” – they usually think of someone who writes code on a computer, someone who deeply understands how a computer works. That is not the case with competitive programming. In competitive programming you don’t need to understand computers or even be interested in software at all.

That can be very misleading. If a software company is looking to hire a programmer, they might think that someone who has won a programming competition is the best programmer in the world. But that’s not necessarily true. The person may not even be interested in computers at all or have any desire to work as a software developer. It's like mastering chess and then being hired as a general in the army. Just because you are good at chess and chess requires strategic thinking, doesn’t mean you are good at leading an army into an actual battle on the battlefield.

This leaves many people scratching their heads wondering why they even call these competitions “programming” competitions when it has nothing to do with real-world programming. In fact, these “programming” competitions focus on the one skill that is not required in 99% of programming jobs – algorithms and math. And they lack 99% of the skills that are actually required in 99% of programming jobs. Most software companies really don’t care how clever you are or how well you can solve algorithmic problems. Those things are solved by libraries and frameworks. So calling these competitions “programming” competitions is just absurd.

Solution #1: Call Them What They Are – Algorithm and Math Competitions

The first solution to this problem is simple – just stop calling them “programming” competitions. Call them what they are – algorithm and math competitions. This would make it clear to everyone what these competitions are actually testing and would prevent companies from mistakenly thinking that the winners are the best programmers in the world. It would also give proper recognition to the actual skills being tested – algorithms and math – without misleading people into thinking they represent the whole field of programming.

Solution #2: Make Them Real Programming Competitions

The second solution is to actually make these competitions test the full range of programming skills. If they want to keep the current format of focusing on algorithms and math, they should just rename them to “Algorithm and Math Competitions”. But if they want to call them “programming” competitions, they should actually test the whole range of programming skills, which includes computers and hardware and APIs and libraries and maintainable code and software system design and software principles and everything that is included in real-world programming.

Listen to Deep Dive

Download