Oh well….We all have those moments where we first stumble upon the world of programming and software engineering. As you learn your first programming language, you figure out that there are so many things you can do with programming! From Machine Learning to VR and AR, programming is literally everywhere now. Even the big institutions now use algorithmic trading to buy and sell certain stocks! With a plethora of fields to explore in CS, which field should you pick?
First of all: Why should you pick a field in CS?
There’s a common belief among many programmers that you should be a generalist when it comes to programming. While I don’t disagree, I really believe in specializing for the the long-run since it’s better to master one craft/field than to be a “jack of all trades.” If you master one CS field, chances are that you’re going to have a better career than someone who’s a generalist. HOWEVER, this does not mean you should not be generalist. In the beginning, you should be a generalist. What I mean by generalist is to learn bits of every field in CS, for example, web development, database etc. Being a generalist really helps you understand how each CS field works and would help you chose which field to specialize in. Therefore, first GENERALIZE then SPECIALIZE!
After I completed my first course in Python called “Automate the Boring Stuff” and learned some basic CS concepts, I discovered that there are literally so many things you can do with a programming language. From ML, Biotech, Web development to algorithmic trading! CS had a lot to offer. Even though it was exciting at first, it was really hard to discover which field to explore initially. In order to get my feet wet in the world of programming, I wanted to pick something that was cool. Turned out that Machine Learning was my first choice. The reason I chose ML was because I used to see these programmers on YouTube making cool bots that could detect certain face features or even objects! The feeling of creating a bot that could detect certain objects made me really excited. However, as I began to study ML, it turned out to be more math than programming itself. If you’re a beginner ML student, then you have to really make sure that you’re really strong in Calculus and Statistics because without these subjects, you can never build a model that could recognize certain patterns. On top of that, you have to consider the “training time” and “accuracy” of the model. I just didn’t like all of this math and decided to never look at Machine Learning again.
The second field I explored was Blockchain technology. The only downside to learning this was that I had to stop coding in Python since Python wasn’t used that much in this field. However, what was used was web3.js, solidity, and node.js. I still remember solidity being the hardest part of all! Solidity, if you don’t know, is a combination of C, Java, and Python. Now, it’s not a good idea to jump into a language like that when you’re just getting your feet wet, however, that doesn’t mean I gave up. I still tried completing my first Blockchain Developer course, and as I went through the course, I realized that Blockchain was just boring. You had to a lot of these “geth ” tests and had to learn Java from scratch. So, I thought this was bit of a complex field to explore. Yes, I have to learn Java at some point, but I really love Python! I did learn a lot of solidity, and it was really cool how Gavin Wood came up with the idea of combining the three most popular languages into one.
Well, fast forward to today, I am learning more about cybersecurity. The only mistake I made when exploring these fields was that I thought of just picking one CS field and sticking to it for my whole life. But, I didn’t realize that I don’t really have to just stick to one CS field. I can explore as many fields I want and stick to one when I see that I am really committed and passionate to specialize in that field.
Conclusion: What can you learn from my story
From my experience, I think newbie programmers should just start exploring. This would be their “generalist” stage where they learn bits of every CS field. You can start by web development, ML, Blockchain, BioTech, and/or cybersecurity. Just pick one field and get started. As you go through each field, see what you’re the most passionate about. You don’t have to necessarily specialize in a certain field. Just explore and when you stumble upon something that you want to keep on doing and are passionate about, then really think and analyze if you truly want to make this your career.
Someone might say that wouldn’t exploring all these fields be a waste of time? Well, yes but I would leave you with this quote by Derek Sivers in the book “Tools of the Titans”: “Treat life as a series of experiments.”
The time you really spend exploring isn’t time wasted since this is an “experiment” of what CS field really passionate you. Also, it’s better to learn about each CS field now than to regret later when you have completed a CS degree from college.
Therefore, I really recommend exploring the plethora of fields CS has to offer as early as possible even if you think you started programming way too late. I wish someone gave me this advice when I was 14 :)
If you want more content like this, please so leave a clap ;) Also, don’t forget to comment on what you think about this topic.