Competitive Programming
If you are looking for job in Google,Amazon or facebook as programmer or developer/designer, definitely you will be familiar with the word "Competitive programming ".
I thought of sharing some of my thoughts on "competitive programming ".
As per wikipedia - Competitive programming is a mind sport usually held over the Internet or a local network. https://en.wikipedia.org/wiki/Competitive_programming
As per definition it’s a “sports”
I heard about hackerrank 3 or 4 years back. I got surprised seeing the success of hackerrank. Definitely its very useful website those who are trying to understand different algorithms/concepts/problems in computer science. After that there was a rain of similar websites … Codechef, CodeByte etc …etc … I don’t know which one of these came first.
But I would suggest nothing harm in login those websites and try to solve some of the problems . Don’t get disappointed /discouraged if you are not able to solve the questions. you don’t need to be a competitive programmer to be a programmer.
I am not huge fan of competitive programming. But it improves your programming skill in multiple perspective and definitely you might need to have this skill for getting into Product based Software companies like Google, Amazon and facebook etc . When I started trying to solve some of the problems in code force , I thought I would require PHD in mathematics to understand the problems . Most of them will be really tough mathematical problems. But if you start from easy , medium and then to difficult once, I hope you won’t need to run away from it :-)
Let me start with advantages of Competitive programming
-
You are going to get good understanding on the Algorithms and data structures .
-
You will get to know different areas in computer science - number theory,set theory,graph theory,string analysis etc. If you ask me , Are these mathematics subjects? I would need to say “YES”. But the fact is you need to have good understanding on these areas in order to develop something unique. ( This is debatable subject) , you can develop innovative or useful applications without much deep understanding on these areas.
-
definitely it’s a plus point for you to get into Software companies.
-
This gives you the ability to approach problems in different ways and helps to get the optimized one.
-
Definitely you will come to time complexity O(n) and space complexity in computer programming :-)
-
Some of the competitive programming sites gives you only limited time to solve the problem. When you start solving the problems in time bound question ,this helps a lot in interviews. You will be able to face the software companies interviews more efficiently.
I think I wrote some advantages , so let me mention some of the websites you can try this .
- Codechef
- Codecup
- Codeforces
- CodeGround
- CodeJam
- DoSelect for developers
- GeeksForGeeks
- GeekyPrep.com
- Hackerearth
- Hackerrank
- InterviewBit
- Kattis
- LeetCode
- Programming Hub
- Spoj
- TechGig
- Techie Delight
- Topcoder
- UVa Online
- FreeCodecamp
In my opinion you don’t need to be competitive programmer to become a programmer/developer.
Competitive programming Drawbacks:
-
First of all , its not a technology or programming style or skill that every programmer is needed. Everybody know we need good algorithms to perform the program well. Reading,writing,debugging programs will makes you skillful programmer. Sometimes competitiveness makes to take decision immediately or jump into conclusion quickly.
-
For getting into competitive programming there are some prerequisites - good mathematical knowledge, Computer languages that the websites are using, good knowledge in computer science concepts.
-
If you are trying to learn a programming language from basics (eg: C programming ), I don’t think those sites are the starting point. Those who are good in C, C++,python etc languages , these websites will be a good place to play around.
-
Competitive programming will not take you to most of the computer applications areas .
eg: Those who are interested in embedded systems , will not get any knowledge on peripheral or architecture of the micro controller/processor from this. or those who are all interested website designing and development not going to get much from competitive programming apart from understanding on the algorithms or logical thinking. -
Nowadays Application building is like “building blocks” game. More you know about libraries and modules on the area, you will be succeeded in building some good applications.
-
Software life cycle is totally different - As you know it start with requirement gathering,designing,coding,unit testing, functional testing and User acceptance testing and deployment etc. I don’t see competitive programming give much importance to designing and collaboration and testing.
-
If you look at object oriented programming or functional programming , they are a programming style that every programmer should be aware of .
-
You can build innovative applications without competitive programming skills.
Conclusion
Please don’t consider Competitive programming as waste of time. It will definitely improve knowledge on algorithms and computer theories. Keep improving your programming skill on competitive perspective as well. Also be ware of that there are lot of other areas in programming where we can focus on application building or we can playground. As I said earlier You don’t need to be competitive programmer to be developer/programmer.
Please share your thoughts and comments. Thanks!
1 comment:
Competitive programming is a great way to get your algorithm skills up to par for interviews. There are other ways of course for improving those skills too. I loved these practice problems https://www.byte-by-byte.com/50-questions/, Interview Cake, and Cracking the Coding Interview, to name a few.
Post a Comment