Competitive Programming vs Application Development

Samveg Thaker
DSC NIT Raipur
Published in
4 min readFeb 14, 2020

What is what?

Let’s discuss what is competitive programming and development first. Competitive Programming is a fun and professional sport of coding and solving problems that involve knowledge of Data Structures and Algorithms. On the other hand, development involves making a website application, android and iOS application that we daily use.

What to start first?

There is actually no specific answer, but I guess this is the most asked question on LinkedIn by a 1st or a 2nd-year college student and also as to how to start? There is no definite approach to this. It may differ on who is doing and what is the long-term goal. I will break it into a few categories, and respectively how to approach this problem:

  • You want to start a STARTUP,
  • You are gonna go for PLACEMENTS,
  • You want to be a professional competitive programmer or
  • You are not sure about anything(Its perfectly normal not to be sure).

Let's start for those who are looking for Placements

Competitive Programming is a must for those who are looking for placements. Development is something that needs not be taken seriously but its always good to have some projects in your portfolio. Data Structures and Algorithm is a compulsory topic for all the interviews you are gonna face in a Tech Company. If you are willing to join startups through online portals like Internshala or Angel.co, then development is expected from you(even a few live projects) and not competitive-programming.

So let’s start as to how to master competitive programming for placements. If you are starting to learn to program you can go through HackerRank and HackerEarth practice session(Whichever UI looks appealing to you :P).
On the HackerEarth practice section, you can go through “Basic Programming”, “Data Structures” and “Algorithm” as shown below.

credits: https://www.hackerearth.com/practice/

If you prefer Hackerrank, you can log in and practice “C++”, “Algorithms” and “Data Structures”.

credits: https://www.hackerrank.com/dashboard

Once you are done with this, let's learn how to crack an interview and online tests. You can log in to Codeforces and go to the PROBLEM SET section. Once you are there, you can see the “Filter Problem” on the right side of the screen.

credits: https://codeforces.com/problemset

Start with 1000–1000 and you will get a few problems. Pick any 5 problems randomly and start solving them(daily). You can sort the problems by most solved and you might be able to pick some good questions. If you are able to solve the problems easily in one go then increase the difficulty by 100(Now 1100–1100) and continue this until it becomes difficult. When it becomes difficult, solve 10 problems(You can solve more. Aim is to increase your skill level and make you comfortable at this difficulty level) at this difficulty level (Technique credits: Shubham Gupta).

Parallelly sitting in a short contest would improve your performance in technical interviews tremendously. There are monthly short contests on CodeChef called LUNCHTIME and COOK-OFF. Codeforces organize short contests more often and you can practice more. The best way to improve yourself is to solve one more question after the contest. For eg. out of 5, you solved 2 questions fully and 1 partially, then solve the 3rd and the 4th right after the contest. If you are unable to do so, you could ask the help of a friend, if you don’t get that, you can look for other people's solutions and then solve it(code it) on your own once.

Once you are confident in this, and placements are approaching you can practice on websites like InterviewBit, LeetCode, and GeeksForGeeks (sort problems based on your company coming to campus).

Want to be Gennady Korotkevich?

If you are thinking of becoming a professional competitive programmer, you need to have a lot of patience and dedication(Well, you need this in every field). You can learn C/C++ and Data Structure and Algorithm as described in the previous section, but the course for competitions is way too vast. The best way is to practice as many questions as possible. SPOJ is one of the best platforms to solve harder level questions. You can practice important topics from here :

https://discuss.codechef.com/t/programming-contest-detailed-syllabus-along-with-example-problems/17791

This is aimed at the biggest competition for competitive programming on a global level. You can definetly approach other big programmers for a few tips. Spoj is just one of the websites, other websites like TopCoder and Codeforces might be really helpful as well.

Are you a Start-Up Guy?

If you think you are inclined towards running a startup, you don’t pretty much need competitive programming skills. You can straight away start with development(If you want to know how to start Android Development, you can check out my previous blog here) and get into internships in startups(and not MNC’s).

Not figured out yet?

Most of us lie here. Let me be very honest with you, you need to balance both development and competitive if you are not sure. You might not go on perfecting each algorithm but you need good competitive programming(in case you change your mind later). Development is gonna help you in both the stream.

Conclusion

I hope I was able to clarify some of you as to how and why to choose what. But it all depends on you and your perspective. All the best to everyone and you can reach out to me anytime at samveg@zenithec.com or at LinkedIn.

--

--

Samveg Thaker
DSC NIT Raipur

Entrepreneur | SE at Microsoft | Ex-DSC Lead | Winner of SIH2019 | Android Developer