Competitive programming - is it really important?
Tags: beginners, codenewbie, computerscience, career
Published: 2020-05-30 17:43:46

Before you jump to conclusion, I was never in favour of Competitive Programming. I used to be mad at companies who used Comptetive Programming as a first round to scrutinize interview candidates.

I've gone to the extent and said out loud many times, "If they want to hire someone for Developing - Mobile Apps, Web Apps, Backend servers, etc. then why ask `inverse a binary tree in O(god_knows_what_time)`." 

I was like where/how/when am I going to apply this in developing stuff that they are hiring for?? 

But, after almost 3 years into Developing Software - I stand corrected.

---
![](https://media.giphy.com/media/cYaBD8kxE4PZudHBRA/giphy.gif)

## It is important!

---

#### Why do companies like Google, Facebook, Amazon include this in their hiring process?
It's very simple, they want to know how do you **THINK!** Given a problem, how do you deduce (or try to come to) a solution. No, you are not going to directly use this solution in the Software - like ever! But what they are looking for is - a skill of problem solving. 

There's a concrete reason why parents buy puzzle games for their children - they want them to develop problem solving skill. 

This competitive round helps companies filter out candidates that lack this skill. I have also noticed a common practice to put this round as the very first one - it must be damn important!
 
Now, almost every company in India looks for this skill - this has become a general process. The first round of an interview is most likely Competitive Programming round. 

---
#### How does it help me - a developer? 

We spend most of our time developing something or the other. Most Softwares that we work on often requires us to write logic of some kind, handle different cases and scenarios, etc. P.S. I'm talking about more than just if-else. 

Being good at problem solving generally helps you construct solutions faster, consider all possible scenarios - giving better coverage and lesser bugs.

**No** - I'm not saying you're a bad developer if you are not doing this. As I said, I too have recently started this. You can still be a great developer by experience, or just naturally - I've seen some myself who are great at what they do and they don't know anything about Competitive Programming!

---
#### But I'm not looking for a change, so why should I learn?

This is definitely a skill addition - at least. Plus, solving puzzles keeps you sharp. It's like a workout for your brain. And what's so special about this workout is that you can do it with what you are already in love with - `coding`.

**Want to pick up a new language?** Try solving coding challenges with that language and see how quickly you pick it up!

In fact, even if you continue with already known language, you'll have a better grip now than before - guaranteed. Personal experience.

You will uncover the potential of some **Data Structures** that you have already worked with - get ready to be surprised.

---

#### Am I too old to start now?

There's one good thing about these coding puzzles, they don't come with a tag `suited for age 6-14` 😝 You can start any time, literally. Besides, one solve puzzles for fun - and you are never late to do 
something fun.

---
#### How and Where do I start?

There are plenty of platforms available that you can get started with. Listing down some for you to start:
1. [GeeksForGeeks](https://practice.geeksforgeeks.org/)
2. [CodeChef](https://www.codechef.com/)
3. [HackerEarth](https://www.hackerearth.com/)
4. [HackerRank](https://www.hackerrank.com/)
5. [LeetCode](https://leetcode.com/) 

Most of these platforms comes with a decent learning material and a solid community to help you out if needed! 
Pick a language you love and get started. It's addictive and you're going to ❤️ it.

---
## This can very well be your fun new hobby in this pandemic - learning is cherry on the top. 🥳

If you have any other questions, please fire it up in the comments section.