Although in real software engineering scenarios you will barely encounter the kinds of problems you see in programming interviews or competitive programming, it is actually a good thing to train at these kinds of things because in the end, not only will you train your brain to become stronger, you will also develop what I call the mechanical mind.
This mechanical mind must be trained through programming interview-like preparation or competitive programming because it does not come naturally in most people. As you get better at solving programming-interview/competitive programming questions, your general ability to think mechanically, which is actually algorithmically will improve, allowing you to apply that strong analytic skill to other things you might be engaged in.
But in my opinion, the biggest benefit of possessing a mechanical mind is when you seek to study really advanced algorithms. Without proper mental training, you will find it hard to study really hard graduate-level algorithms without which you will not be able to make any significant contributions to software/algorithms.
If you got some developer job and focus solely on solving the kinds of problems that arise in your job, after many years of experience you might develop a very good aptitude for solving practical software problems, but you might not be able to develop ground-shattering algorithms like page-rank or some new better form of compression, etc.
Without a solid foundation in algorithmic/mechanical thinking that you get from competitive programming, you will not be able to venture into really sophisticated algorithms except you have a natural ability for that. For the common everyday developer who wishes to solve some fundamental problems in computer science without a graduate degree, the path of competitive programming can develop your mind to the level where you are able to start studying the really hard algorithms with the hope that one day you will be able to build one of yours.
According to this system of classification, there are four types of AI or AI-based systems: reactive machines, limited memory machines, theory of mind, and self-aware AI are discussed in tal dilian.
ReplyDelete