Programming 101 : Competitive Programming
Competitive Programming is a competition to with the aim to solve problem as quickly as possible. It is one of the way to learn how to program effectively and efficiently. It gives you a a good sensation after solving each problem. However is it worth it to learn this way? Well let's find out.
The Good Side Of Competitive Programming
Competitive Programming encourages you to learn as many algorithm as possible. It may comes in handy if you really know it and not just memorize it. For example, you can find a way to get the shortest route from position A to position B, of course you can just Brute Force it to get what you want but if you know an algorithm like Dijkstra's shortest path algorithm you may speed up the time required to compute the answer by some degrees.
It improves your problem solving skill. Competitive programming is all about solving problem. Given a Problem A and its description you need to implement an algorithm such that it only took X second and Y memory to find the answer. This will greatly improve your problem solving skill as you solve more problem. It may also teach you a new algorithm just by reading its documentary.
It makes you care about runtime performance. I have seen A LOT of programmers who doesn't care at all about their programs performance. All they care is if the programs is running without bugs then it already great. However this kind of mindset is very harmful as not every people (especially user) has high performance computer. This lead to crappy software being released and wasted processing power. So next time you blame an app for being unresponsive when other of your app is responsive then it might be the programmer's fault.
The Bad Side of Competitive Programming
It encourages bad coding habit. Since competitive programming is usually about coding in specific time constraint people usually make a code that is hard to read which lead to no maintainability at all. Making a descriptive name for each variable will take some time (especially long ones lead to more typo) which can be used to write more variable. This is of course lead to poor teamwork especially when one of the team member doesn't get used to very short variable name.
It makes you a bad software architect. In competitive programming, one problem usually differ with the other so using the same code might be harder. And again because of the time constraint you may not be able to produce a reusable code that you or other people can use in the future. And you also may not have the time to make highly concurrent and scalable software which what we need in today's life.
Well i think that's all for today's post, if you have opinion about it, let me know in the comment below.