Cut to 90s. It was the time when IT revolution started sweeping India. Learning anything related to computer was seen as a hot skill. It was measured by number of programming languages an individual knows. It was perceived that bigger the laundry list you have, the better job prospects are. However technology has changed a lot in the last two decades.Specialization has taken center stage.Becoming a specialist than a generalist (jack-of-all-trades) is very important to have a successful career.
Specialist v/s Generalist
Let us explain this with an example. No matter how many programming languages has emerged, C language continue to dominate the embedded systems programming. Similarly other popular languages like C++ (application) and Java (Web/mobile computing) has become popular in different domains by leveraging its strengths. For a fresher (who is looking out for a job), it might sound cool to learn many languages to give a ‘kick’ to their resumes. In our opinion it is better to take a specalization path rather than knowing something of everything.
Rather than learning many programming languages, it is better to learn one or maximum to in depth. Going back again to Embedded systems learning C in detail becomes very important because of the following reasons:
- C language is a middle level language which offers both high level (easy to learn) and low level (bit-wise operators) construct that helps to deal with registers, peripherals and various hardware interfaces
- C offers best possible machine code by occupying very less memory footprint. Given that embedded systems are resource constrained systems, it makes sense to use C that is easier on the hardware
- Inspite of being a middle level language C offers certain unique functionalities (ex: Volatile variables, function pointers) that makes it to work very closely with operating system and system software
- Since C enjoys being a middle level language, it can be easily ported across various hardware / processor architecture (x86, PPC, ARM etc..)
Programing languages – A problem solving tool
Similarly other languages like C++ (Class/Object) and Java (Scalability) offers certain unique advantages that makes it usable for a specific reason. So when it comes to learning programming languages it is not only about learning the syntax usage and IDE environment usage, but to understand the deeper aspect of the purpose of the language the is been applied for. This takes the thought process significantly away from seeing programming language as a tool to solve the problem in the best possible and optimized manner.
The better an individual knows one language very well to its deepest extent possible, it becomes easier to replicate across various other programming languages.
So it is important to learn one programming language very well and apply it to its best of its abilities rather than creating a huge list. May be along with that learning one additional language (ex: Phython scripting) can be considered, just to have a variety. In Emertxe we are very clear and particicular about teaching programming langauges to our students. Since our larger focus lies on embedded (C programming) and web (Java) we ensure the subject is covered deep enough to ensure our student become job ready. Based on our experience with multiple corporate organizations and interview panels, this is getting re-iterated multiple times. Its very important to understand programming language from problem solving perspective.