Every programmer faces the dilemma about which programming language they should learn in order to be effective and successful in their job. There are so many languages to choose from. This is really overwhelming. A lot of new programmers, as well as experienced programmers, have asked me this question over and over. In this article, I will explain why you don’t need to bother too much about the language, to begin with. I will also help you identify the features you should look for while picking up a language.
1. Programming Is a Concept
I always suggest that new programmers focus more on how to write good algorithms or pseudocode. Whenever you have a problem that can be solved through logical decision making based on data and calculations, you should think how you can do that task if you had to do that manually with a pen and paper. Then you should jot down the steps in a notebook and brainstorm how the steps can be arranged so that you can optimize the output.
Computer programs only help us execute the instructions repetitively and very fast. But it is up to the programmers how they write the instructions which, again, depends on how good they are in writing algorithms. If you can logically decompose a problem in self-contained, small unique steps, then the chances are very high that you will be a good programmer. You should also focus on data structures and should have a good understanding on which algorithms work well on which data structures.
Another key concept you should focus on is the design patterns. Design patterns capture how programming tasks with similar types of challenges can be solved by following a pattern that has proven to be successful and repeatable in the past and in different kind of projects. ‘Head First Design Pattern’ and ‘Design Patterns: Elements of Reusable Object-Oriented Software’ are my favourite books that explains the design patterns in a easily understandable manner.
Armed with the above concepts, you can conquer any programming language in a very short time. What you need to really learn for any specific language is key words, syntax, APIs, and some specific concepts. Those aspects can be mastered by starting a simple mini project straight away. For the first few days, you will have to look at a book or online documentation for the syntax and APIs. However, the more you write code, the less you will need to refer to the documentation.
2. Programming Is About Communication
As per my experience, a person with good communication skills is likely to be a good programmer. Let me explain why I think so. Programming is a way of communicating to a machine how to execute certain steps so that the software can achieve some defined business goal. A programmer talks to a machine in a language that the compiler understands, which again converts the instructions into a language the microprocessor understands.
If we go back 20 years, programmers used assembly languages to code microprocessors. It was a very low-level language which demanded an understanding of the underlying hardware architecture to program the machine. As we have advanced, we have created programming languages which are closer to natural language. The goal is always to allow us to instruct the machines in a language we feel comfortable with. A Python programmer can write a 10-line piece of code to solve the same problem that would take more than 100 lines of code for a C or COBOL programmer. However, a C programmer can easily learn Java by mastering object-oriented programming concepts. Similarly, a Java programmer can easily switch to Python with less than one month’s effort.
The point I am trying to make is if you can instruct a machine in Java, you will definitely be able to give the same instructions in Python. So, your focus should on learning any popular, general purpose, preferably object-oriented, programming language. If you do that, switching to any other language is not as difficult as you might think.
3. No Programming Language Is Fit for All Purposes
There is no one size fits all programming language which solves every problem effectively. Your choice of language could change based on the type of problem you are trying to solve. For a robust server side enterprise software, you will probably choose Java, for data science related projects you should choose Python or R, for mobile development you could choose Swift.
So, my advice would be to master the basic programming concepts described in step 1 in whatever language your current project uses. If you do that properly, it will be easy for you to move to any other programming language as you change projects, switch companies, or want to pursue some personal side projects. Before you embark on any new project, you have to research on the best fit for the project. You should not simply go and use a language because you already know it and are comfortable with it. That can lead to a disaster. If you are just planning to enter the programming world, then my advice would be to pick a language which is easy to learn like Python, which is highly readable.
4. The programming Landscape Is Evolving Fast
The final point I want to convey in this post is that technology is evolving very fast. Popular programming languages are becoming obsolete in less than 5 years. As we are trying to uncover new ways in which programming can be used for improving our lives, we are constantly creating new programming languages, frameworks, and tools to make software better and faster. So, if you want to future proof your career in this era, you have to evolve very fast so that you can keep pace with this rapid change and be relevant going forward. Always try to put more focus on basic programming principles, which are timeless.
Hope you have enjoyed the post. Please feel free to add comments if have any other valuable insight for the programmers.