You’ve probably heard of C programming or you’re wondering whether or not to spend the time learning the language. C programming is defined as one of the most powerful “modern” programming language, in that it allows direct access to memory and many low-level computer operations.
It is important to note that today, most people who “learn to code” focus only on learning higher level languages and never understand what’s going on at a fundamental level: how a computer treats data structures and types, how it assigns and manages memory, or how it stores data. If all you want to do is build a website, put a few boxes or forms here and there, then you probably don’t need to understand the fundamentals of computer programming or software engineering.
To become a real software engineer, it is important to understand that, in many ways, the core of engineering is to put 0 and 1 in the best possible place with respect to the computer’s memory: it’s about performance and optimization. To do that well, you need a good understanding of how the computer puts the 0 and 1 in memory as well as how it executes instructions on the processor. Programming in C forces you to learn memory allocation, data structures and types, how a computer treats and stores different kinds of data, and finally how to manage memory. These are things that you won’t get to if you learn only a high-level language.
Being able to understand and use C programming gives you an advantage over most other software engineers. It puts you in a group of more advanced and more knowledgable people in the industry.
Kwame notes, “Top-level, respected software engineers usually have at least 2 languages they know like the back of their hand: one higher level language and one lower level language, C or C++ (if not both). Look at 50 job descriptions for a software engineer in the US and you’ll notice the trend for experience in C/C++ very quickly.”
Programming languages generally have a life expectancy of 5-7 years, with some exceptions for low-level languages. If you know C, you are able to understand and pick up new languages much faster than those who do not understand C.
Secondly, when you go for interviews, the fact that you know C, for example, gives you a significant advantage. Having a foundational and fundamental understanding of what a computer is doing and how it works enables you to explain they ‘why’ behind what you’re doing as you solve the technical interview question. This kind of comprehension plus the fact that you explain your thinking process and technical understanding in the interview shows that you are not only a capable engineer, but also someone who thinks and needs to understand the ‘why.’ This need to understand the why behind a problem or solution means that you are likely a good problem solver, and that is what engineering teams are looking for.
written by Aayush