Competitive Programming, How to start and Keep going

Competitive Programming, How to start and Keep going

Do you wanna know how i my programming journey started? Let’s find out

Table of Contents

Today we are gonna talk about Competitive Programming, How to start and Keep going ?.

As usual let’s start with the today blog post’s agenda or table of contents.

What is Competitive Programming ?

Competitive programming is a mind sport usually held over the Internet or a local network, involving participants trying to program according to provided specifications. Contestants are referred to as sport programmers. Competitive programming is recognized and supported by several multinational software and Internet companies, which often use it as a form of recruiting.

Actually many programmers at the beginning of their career start with competitive programming, and then they move to the industry. So, it is a good way to start your career as a programmer too. Even the Big Tech Giants like Google, Facebook, Amazon, Microsoft, etc. use competitive programming as a way to recruit new employees. Usually they have a coding round in which they ask you to solve some problems. So, if you are good at competitive programming, you have a good chance to get a job in these companies.

Why Competitive Programming ?

As i tried to explain above, competitive programming is a good way to start your career as a programmer. But there are many other reasons to start competitive programming.

As a programmer you not just coding to make something work, you need to be able to solve a real world problems. You need to write an efficient code. You need to be able to think in a different way.

Competitive programming is a good way to improve your problem solving skills. You will learn how to think in a different way. You don’t want to write a code that works, you want to write a code that works fast. You will learn how to write efficient code.

Now a days even milliseconds matter. If you are working on a project and you need to make it faster, you will need to write efficient code. If you are a developer in your company and you are assigned to a project that will need to calculate Shortest distance of two object from multiples paths, what would you do ? Will you think efficient algorithm to solve this problem like Dijkstra’s algorithm or will you just write a code that works ?

What if the data is millions of ordered data, and you are working on a feature that will find the data by id? will you go through all the data to find the data or will you use a data structure that will help you to find the data in O(log n) time?

If you are still reading i think we are on the same page why we need to start competitive programming.

To summarize why we need to start competitive programming:

- To improve our problem solving skills.
- To learn how to think in a different way.
- (emphasis on this)To join the Big Tech Giants like Google, Facebook, Amazon, Microsoft, etc.
- To learn how to write efficient code.
- To learn how to write a code that works fast.
- (😜) To impress your friends.

How to start Competitive Programming ?

Now we know why we need to start competitive programming, let’s talk about how to start competitive programming.

Before starting competitive programming journey, we need to know programming language first. There are multiple programming languages, but the most popular programming languages are C++, Java, Python, etc. I recommend you to start with C++ or Python. If you are a beginner, i recommend you to start with Python. If you are a little bit familiar with programming, i recommend you to start with C++. Or you can go with Java or any of your favorite programming language choice.

After you choose your programming language, we need to start learning from different source. Personally i would recommend you to start with learning

- Basics programming language of your choice.
- Data Structures
- Algorithms

You can learn these topics from different sources like books, YouTube channels, etc. I will list some of the resources at the end of this blog post.

After learning those thing(it doesn’t mean you must master them) or be comfortable with them, you can start practicing competitive programming. I will list some of the resources at the end of this blog post.

Important Points

  1. You must not compare yourself with others.
  2. You must not expect yourself to be a master in a few month or weeks
  3. You must not give up.

How to keep going ?

You know sometimes doing competitive programming might feel like you are doing nothing except you solve problems and submit them to the contest or the site. Or sometimes it really gets frustrating when you are not able to solve a problem. But you must not give up. You must keep going. You must keep practicing. You must keep learning.

Even if you feel those things, remember these skill you are developing now will be the shield and sword for you in the future. You will be able to solve real world problems. While others are struggling to solve a problem. You will find yourself on the top of your team or your area.

Think big, you might not always develop some kind of CRUD application or some kind of web application. You might develop a system that will help millions of people. You might get involved in a project that will require a true problem solver programmer like you. You might get involved in a project that will require a programmer that can write efficient code. You might get involved in a project that will require a programmer that can write a code that works fast. May be the project is brand new database system, or a very low level system that requires a mind of problem solver programmer like you.

So keep going, keep practicing, keep learning. You will be able to do it.

Where to Practice ?

Currentley there are many sites that you can practice competitive programming. I will list some of them below. All of them has a lot of problems and contests

  1. Codeforces

This one might be the most popular site to practice competitive programming. Honestly speaking it is also the most challenging site to practice competitive programming.

  1. Hackerrank

Hackerrank might be my recommendation for you if you are a beginner. It also has a lot of tutorials and articles that you can read to learn more about competitive programming. It also has some kind of job board where you can apply for jobs.

  1. Leetcode

Leetcode is the most popular site for recruiters to recruit new employees. If you know someone who is preparing for interviews in big tech companies, they will probably use Leetcode to practice. It is beginner friendly too, at the same time they have a lot of hard problems too.

  1. Kattis

Personal favorite of mine. It is beginner friendly too. It is a very simple UI. It has also ranking based on User, Country and University. It is also beginner friendly.

  1. HackerEarth

HackerEarth is known for their amazing tutorials per on algorithms and data structures like Hackerank . Check out their Algorithms and Data Structures section.

  1. Topcoder

Topcoder might be a little bit different from other sites and unfriendly for beginners. But it is a good site to practice competitive programming. They have really good hard problems and the solution is also available. You can learn a lot from their problems.

Am just gonna mention the rest of the site i know. You can check them out too.

  1. Codechef
  2. AtCoder
  3. SPOJ
  4. CodeSignal
  5. CodinGame (My personal favorite)
  6. Project Euler
  7. CodeWars

Books to Learn Competitive Programming

There is a lot of books that you can learn competitive programming.

First let’s look at the books that you can learn programming language.

  1. Head First Python
  2. Head First Java
  3. Head First C++
  4. Jav how to program

After you learn the programming language, you can learn data structures and algorithms from these books.

  1. Introduction to Algorithms
  2. Data Structures and Algorithms Made Easy
  3. Cracking the Coding Interview
  4. Elements of Programming Interviews
  5. Algorithms

Then moving to competitive programming, you can learn competitive programming from these books.

  1. Competitive Programming, by Steven and Felix Halim
  2. Competitive Programmer’s Handbook Free to download
  3. The Hitchhiker’s Guide to the Programming Contests Free to download

YouTube Channels to Learn Competitive Programming

So before i mentioned the good youtube channel here. There might be other youtube channels that you can learn competitive programming that i don’t know. So if you know any other youtube channel that you can learn competitive programming, please let me know in the comment section.

Secondly, you gotta see winner of big competition like Google Code Jam, Facebook Hacker Cup, ICPCT, etc. They usually have youtube channel where they share their experience and tips to solve problems. You can learn a lot from them. For example Legendary programmers like Tourist, Errichto, Petr, Mostafa Saad, William lin, SecondThread, etc. They have youtube channel where they share their experience and tips to solve problems. You can learn a lot from them.

  1. Errichto
  2. William Lin
  3. SecondThread
  4. Petr Mitrichev
  5. Mostafa Saad
  6. ecnerwala

and many more. You can check them out in the comment section. Also if you got one let me know in the comment too.

Conclusion

So today i hope you can take away something from this post. I hope you can learn competitive programming and become a better programmer. Being a programmer is not just about writing code. It is also about problem solving. So keep practicing, keep learning, keep improving. You will be able to do it.

I know you can dot it. So see you crashing the interview. Good luck and have fun.

As always, if you have any question, feel free to ask me in the comment section. I will try to answer it as soon as possible. Also if you have any suggestion, feel free to let me know in the comment section. I will try to improve this post as soon as possible.

Thank you for reading this post. I hope you have a great day. See you in the next post. Bye.

Chapi Menge

comments powered by Disqus

Related Posts

Free Cloud Servers, Databases, and Front-end Hosting for Your Next Project

Free Cloud Servers, Databases, and Front-end Hosting for Your Next Project

Are you looking for hosting for your next project? Here are some free options.

Read More
What is Serverless Architectures?

What is Serverless Architectures?

You must been hearing about serverless architectures. But what is it?

Read More