Learning the language of computers can be both interesting and daunting. You may be either starting your career or are a seasoned developer, the chances are too likely that you are having trouble hitting the right balance between language and logical skills. In this article, I will try to find out what is the right balance to keep levelling up our programming skills.
In the current education system, most of the times, we tend to focus too much on the logical aspect of the programming. Understanding logic and different algorithms are albeit the most important part of programming. I believe that when you know why you are learning and what all can be done with your tools then you do it better and faster. Take an example of a man learning to be a carpenter. He is taught how to use the saw, hammer, nails, but he does not yet know how the hammer, nails and saw are related. The example may be poor but I hope you get the point. There is another extreme which mostly happen to the people from the non-computer background. They know how to code Java, Python and Ruby, but what they do not know is what are the tools that we have and how to use them efficiently. They do not understand things like time and space complexity or maybe they do, but after a long time. You can also find yourself in this situation if you are in the industry for a long while, where most of the work is easy. You get to learn new ways of doing things, new syntax and new technology, but you are not flexing your logical muscles much.
Here is a quick suggestion on what I feel is the right approach to the right balance. When you have plenty of time and you are in a learning phase, focus on building logic. You can build logical abilities by solving different algorithmic problems on different coding platforms. You should also try out classical problems like trees, sorting techniques, pattern printing and recursion. Now when you are comfortable with one language and know the logic, it is time to dive deep into learning language intricacies. Try getting your hands on some framework and build something real. The most obvious way would be to go with web development or mobile development. You should also build some projects and start learning the language part(framework) when you are nearing to apply for a job. You need some solid projects to back you up in the interview. This is going to give you the matter to talk on and your logical skills are going to get you through the tricky programming questions most interviewers ask.
In the end, I would just say that build your logical skills first and keep an eye on what are you going to do with these skills. As you get into the career you will not have much time to work on the logical part but you should keep taking some occasional coding challenges to keep yourself revitalized. Thanks for reading, looking forward to a difference in opinion!