If you'd run a simple Google Search for 'How many Programming Languages Are There?'. The search results might shock you. According to WikiPedia, there are more than 700 programming languages that are currently listed, see for yourself.
I'll just quickly introduce myself. I'm Ishan, a self taught programmer and I've quite expertise in working with MERN Stack, Flutter, .NET, Python and a little bit of C++.
I've programming/solving real-world problems from the last 7 years. I started it when I was in 7th Grade in my school. I also made an app named 'Hotspoter' [A windows desktop app in C# based on .NET], in 9th Grade. Right now, it has crossed over 5 Million Downloads.
I get asked these questions/queries a lot,
and lots more..
DISCLAIMER : I’ll try to answer these in the best way i can, from what I’ve learnt through my experiences. But mind you, The thoughts that I’ll be sharing here are totally my personal opinions on the subjects. Each person is different and you might have some other opinion, and that’s totally okay. You should always go for what works out best for you.
As I've mentioned in one of my previous post, the best way to learn any new technology, programming language, is by building something in that language and putting our knowledge to some practical use.
I'll tell you my personal recipe, I never start learning any framework/language, just because it is trending, or it has made to StackOverflow's top 10 list. No.
What I do is, I just think for an idea for a project, sometimes it might take days, weeks to come up with a unique idea that has some real-world application, then afterwards, I break that big project, into much smaller problems. Like database connectivity in a large scale app etc.
Then, I go on for creating solutions for those smaller problems in my head and go searching on the internet for which frameworks/tech stack would be more suitable for solving those problems, and during this research, I also take into consideration, it's popularity, community support, number of issues, stability, patch releases etc.
The major benefits of this approach are :
- It'd help you to add some projects to your portfolio.
- You'll get to know how to make use of that framework/language in actual production environment.
- Curiosity is the best teacher, right? Working on a real project will always keep you curious about what more features you can add, etc.
- While working on a real project, you will obviously face a lot of issues, it's inevitable! Debugging these issues on your own, is one of the most important skills, that every programmmer should have.
The hard fact about working with computers & programming is, that "one can never learn everything about a language", and this is what should motivate you to keep learning more and more every day.
You can study C++, .NET or any other language/framework for over 20 years, and still discover new things in them, every day. You can be a pro at something, become a quite renowned personality in the same, but there'll always be more to be learnt.
Just because, you might've completed a course on the subject or have a know-how of the syntaxes, does not mean that you've completed/conquered that subject.
There is so much more to a language, than just defining variables, loops, classes or structures etc. So, the fact that you or anyone (including the topmost programmer out there) have completed a language, doesn't make any sense.
There are so many frameworks out there that make our life much easier, and tend to lure us to start learning them right way. Don't get me wrong, it is always good to learn & use new frameworks & tech stacks. But before mastering any framework, you should have a keen knowledge about the language it is based upon.
Mastering the frameworks, without having a strong grasp on the language itself, is just an illusion.
Now, This is a debatable question, there are threads full of discussions on this subject on reddit or other community platforms.
Honestly, It all comes down to your use-case scenario,
- If your top priority is performance, go for C/C++.
- If you want to play memory-safe, go for Java.
If you want incredible 3rd-party support, go for Python by all means.
While python is a way easier language to learn and adapt to for beginners, most of the large tech companies actually prefer people having experience with C++/Java as python is not mainly used in production because of it's low performance issues.
One of the major reasons why I recommend learning JS is because of the sheer amount of areas it covers, you want to do Machine Learning? You've got Tensorflow, want to make Mobile Apps? You've got React-Native!
See, what I truly believe is that
Programming isn't just about writing loops, or finding the maximum element in an array, But it is about solving actual real-world problems through code!Infact, it is one of the most artistic/creative jobs out there in the world. The more imaginative you are, the more better of a programmer you'll be.
In mathematical words,
There's a basically indigestible amount of material available on the Internet. Infact,
"You can learn more from the internet in six months, than what your college might teach you in a span of 4 years."
Most of the times, the best way to learn any new programming language/framework is through it's official documentation. This is the place from where, every course creator, book author themselves learn and write their tutorials.
As a developer, for at least once in your lifetime, you'll face a problem and the best solution would be to actually read the documentation. And in an industry, where everything is so frequently updated and rapdily improving, being able to read documentations the smart way, is an important skillset!
Still, sometimes the official documentation for a particular language might be bit more centric towards technical aspects and a bit hard to understand for beginners, For example, the C++ Documentation.
In those cases, you can always look for free ebooks on the subject, FreeCodeCamp is also one of the places where you can find great quality content for absolutely no costs. Moreover, you can always find tons of resources on the internet, just a simple Google Search will help you.
Every language has it's own unique abilities. If you have already learnt some other language, then you'll mostly tend to inherit those approaches in your next language and this happens a lot. I learned this the hard way.
That's why it is important to learn, what is the approach that a language is taking to solve a problem, more commonly known as language paradigm. Go to GitHub and read the code of the pros in that language, how are they approaching any problem.
For an example :
ls = list() for element in range(10): if not(element % 2): ls.append(element) ls = list(filter(lambda element: not(element % 2), range(10)))
ls = [element for element in range(10) if not(element % 2)]
Even though, both of the above approaches, accomplish the same task, but the latter approach more closely follow the language paradigm of python. This is called idiomatic programming approach, you can read more on that here.
That's why reading code of other professionals and understanding their approach, can prove much beneficial to you.
Most of the times in your programming journey, you’ll be introduced to a new topic that makes utterly no sense to you.
No matter, how hard you try to avoid this, It'll happen, what matters in such a state of affairs is how you react to the scenarios. If a topic doesn't make sense to you, then stop right there instead of jumping to next topic. Re-watch those video lectures, read those notes/books over and over again, till it starts making sense to you.
If it still doesn't, you can always search for a particular topic on YouTube, Stack-Overflow or reach out to a fellow programmer, the programming community is one of the most helpful communities in the world.
If you do implement all the above mentioned steps in your workflow, then you'll automatically get to know about what should be the next steps. Becoming a pro, in any programming language might take a lot of time, effort and determination.
Never be afraid of doing the same, always keep learning!
That's all for now, see you later 🤙. Keep coding 👨💻
If you have any suggestions, feel free to share in the comments!
Originally published on my personal blog.