Blog articles and discussions about software, languages, software development and software engineering.
Last update: 4th August 2024
Why I ask myself this question?
I have been, like probably many of you, learning the basics of many languages. This has led me to not knowing any of them in depth, while having learnt enough to know where I want to focus now. I started with python because it was easy to learn. I don't mean the language, I mean that usually a beginner will have no problem to install and write their first "Hello Worlds!". In other languages, I had to fight a bit more with the toolchain itself.
As I still studying a degree in computing, I have been forced to use both Python and Java in my modules. I have learnt a great deal about object oriented programming (OOP) and I did like Java very much. However, when I had to study the basics of web development I realised that I do not like that area at all.
Then is C and C++ (I believe that the term C/C++ is misleading). I love dealing with low level stuff when it comes to embedded. Unfortunately, it is difficult to set up, share, and sometimes, there are too many things that gets in the way of learning the language itself.
Then, if I have tried so many languages! I can create beginner to intermediate level code with them: Why I still struggling to stick to one language only? The reason is simple. I do not know what I like to do with them. Programming languages are tools. A means to an end. Hence, if you don't know what you want to build, you don't know what tool to bring with you. Trust me, I am an engineer, and choose the wrong tool for the job can make things hard.
I enjoy the simplicity of python to get things done. I very much love how easy is to create software in Java that can run anywhere. There is some relaxing experience of being a C# (.NET) developer if you mostly focus on Windows. I would love to use those languages! but there is one caveat. I don't like to create the products they are best suited for.
So, maybe I have to go through the pain of no strings, pointers, compilers and all the other things that make C so powerful, yet slow and difficult to use. Just because it is [one of] the best tool for the job. There is a reason for that, don't fight it.
Do I have to resign myself to only code in C?
If you are reading this, I hope you already know the answer. No! First of all, learning a language like C (or C++) will teach you concepts that will help you when learning higher level languages. If you or me change our interest in a few months or years time -maybe because of job market pressures- you won't start from zero. Your background knowledge will make it way easier to learn a new stack.
I started my career as a marine engineer. However, I have worked in Oil&Gas, heavy machinery, power generation, chemical industry and renewable energy. Once you are an experienced engineer, the principles are the same. Learning a new area is not starting from the scratch, and employers know that. You still have to put some effort to learn new procedures, terminology and principles, but your background will let you do that on your own while working. I have never worked in software, but from what I have research from people in the industry. It is not much different from what I have experienced in my life as an engineer.
Understood, but what language should I learn?
If you like embedded systems, learn C. That's it. If once you are experienced with C you want to learn OOP, then learn other language. Guess what: Any! if you interest change, I still recommend you to wait until you have learnt your first language to an intermediate level. Then, learn another one.
As I have told you. At university I had to learn and use Python and Java at the same time. It can get confusing at times, but entirely possible. Actually, I still need to use Python and Java for my next modules. However, I have now decided to get better at C, get more practical experience and start testing the water of Rust. C will remain my top priority and I plan to base my dissertation on it. However, nothing stops me from being curious about Rust.
To conclude.
Whatever language you learn, don't give up. If you can afford the time, start with another one at the same time. However, remember that programming concepts are more important than a specific syntax.
Do you agree with my comments? Do you think otherwise? Let me know, it could help someone else to choose their path.
©Copyright. All rights reserved.
We need your consent to load the translations
We use a third-party service to translate the website content that may collect data about your activity. Please review the details in the privacy policy and accept the service to view the translations.