Hello there ,
I have sometime to learn the basics of Python language and i liked it it is very similar to JavaScript I know that JavaScript can run out of the browser with Node.js and I know that it is growing among developers to use it but i saw some opinions from tech guys I can’t describe it perfectly but they meant that node is not the big thing when it comes to backend they laughed at node users in a funny way , the problem is that node is a pure language it depends on C++ you can as I read before add some C++ plugins to your node app, the question here if I learnt a new language is this good or bad please consider that I want the most effective way to be a good fullstack developer I know that learning a new thing is always useful but i don’t prefer a technology of another one so I want your personal experience here with this issues …
thanks.
I’ve always preferred to learn things on an as-needed basis. If I didn’t plan on writing a C++ plugin, I wouldn’t learn C++. I think, in general, the time you would spend learning a new language just for the sake of it would be better spent learning one language in greater depth.
What you learn is influenced by what other people are using. If all programming jobs were in Python, I would probably be learning Python.
Each language has it’s own features and is used more in specific industries.
I follow Stefan Mischook on YouTube. He discusses what languages/tech to learn quite often.
It sorta depends on your career goals. If you’re looking for a job in the relatively near future, it’s probably a better idea to focus more of your time solely on JavaScript since there’s a whole full stack for it (React, Angular, or Vue on the front-end coupled with Node.js on the back-end) and there are plenty of jobs out there looking for either front-end or back-end (or full-stack) developers.
However, if you want to broaden your knowledge and become a better programmer, it’s always a good idea to learn another language. If you learn only JavaScript, for example, you’ll never pick up “traditional” object-oriented programming which is used in other languages such as Python, Java, and C# (there are other languages that use OOP as well but most of them aren’t as prevalent as those 3).
In another aspect, while JavaScript does follow some functional programming principles, it’s not as functional as stricter functional languages like Haskell and Clojure.
Or, if you want to extend your skillset with one of the most recent programming languages, you could get into something like Golang or Elixir.
Suffice it to say that learning another programming language will be very beneficial. I don’t personally see much of a purpose to learn both Python and JavaScript, as they’re syntactically and conceptually similar in some ways (they share some common constructs, both of them have weak & dynamic typing, and both have a functional aspect). While Python does have other popular applications like AI/ML and data science, those are completely different fields from Web development. Of course you can still use Python for Web development if you want to (with Django or Flask), but what would be the point in doing that when JS is far more prevalent for that application, and Python’s strength is in other areas?
I’d be more inclined to recommend C++ since it follows OOP methodologies and is a compiled language (not interpreted like many of the others), and will help you learn how the CPU and memory work behind the scenes, which will aid you in writing more performant code.
Or, depending on which side you’re on when it comes to Android vs iOS, you could learn either Kotlin (Android) or Swift (iOS). Or if you want to take advantage of .NET Core, that’d be a good reason to learn C#.
Also keep in mind that it’s always good to learn a language or technology that’s going to stick around for a long time. And by that I mean something database-oriented. SQL isn’t going anywhere for a long time for relational databases, and if you don’t already know it, it’s something every developer should know whether they’re front-end or back-end—whether in the form of MySQL, T-SQL, or PostgreSQL (all three are collectively very popular in industry). And you should definitely learn a NoSQL database as well, whether it’s MongoDB, Cassandra, or Redis. Node.js interfaces extremely well with MongoDB of course, but there are SQL drivers that help it interface with popular relational databases like SQLite and PostgreSQL, so if your goal is to become full-stack, you might want to consider learning PostgreSQL in particular (which is a safe choice as it’s very popular).
@astv99 That should keep him busy
I’ve always followed my own rule of “I learn it as it pertains to my goals (professional or personal)”. I’m interested in front-end only (for now) so I’m learning languages and frameworks that pertain to FE. If/when I become interested in back-end I’ll start learning one of those languages.
If you are seeking employment with a company that works predominantly in Node then you’d want to learn Node. But if you are seeking to be a front-end freelance developer then there’s nothing wrong with knowing JS and the billion frameworks/libraries associated with it.
This is, of course, only my opinion and it could differ from yours or others
thank you for the detailed reply I appreciate that
Vertical depth with probably more important than horizontal breadth. If you like JavaScript, then focus on a MERN or MEAN stack. Focus on the technologies that support that. FCC basically does a MERN stack. Learning other backend languages would be getting into other stacks. I think learning one stack really well will be better than kinda sorta learning three.
@jacobbogers As far as Atwood’s Law, the “cool” languages come and go. And there are always fanatical followers that think it is the ultimate language. I remember similar things being said about C, C++, and Java. Don’t get me wrong - JS has some strengths. But don’t get sucked into the hype. It’s a good language and is my focus too. But there are other great languages out there with other strengths. And who know what will happen in the next years.
Take any developer’s advice with a pinch of salt, especially when they make insulting statements about a language or framework. Many experienced Java / C# devs seem to have a low opinion of Javascript, but their opinions could be biased / out-of-date / based on little experience. It’s quite common I think (and I’ve done it myself) to try out a technology for a few days, get confused by all the unfamiliar stuff, then make up your mind that it’s a pile of junk.
The easiest way to evaluate tech without learning it is just to look at what is actually used in the industry. If it is heavily used, then it’s a viable technology.
@kevinSmith, of course, nobody can predict the future, and even languages evolve heavily over time to meet the challenges of the current day.
“Atwood’s law” is a principle, not perse about JavaScript, although JS is as of this writing the best candidate
Maybe in the future, it will be replaced by something much better suited to fulfill “Atwoods’ law”
Who is to say…
I’ve always heard Atwood’s Law stated as “Any application that can be written in JavaScript, will eventually be written in JavaScript.”
I went to a meet up tonight that discussed this exactly. The presenter said, there will be developers who mock learning whatever language they personally think is useless… and to ignore people like that. Learn with a purpose, like to reach your goals, whether a personal project or cause it’s required professionally, but make sure you do what interests you, regardless of if it interests someone else.
He also pointed out that learning another language can actually help you with your primary language. I just completed bootcamp where we learned Ruby and Rails… had no interest in them before, but where I hated JavaScript and felt it so impossible, it crazily enough felt so familiar and like home and came way easier to me when we got to it in class.
Something else, learning your first language is hard, and your second is hard, but then you get used to picking up on the differences and your next language doesn’t feel so hard… a good skill to have when you land a job and they require you to learn their stack, which happens.
Dude do NOT listen to that guy.
C++ is great. Yeah yeah yeah it is blazing fast and whatever…
Learn C++. It will be very nice for companies to see that you know it. And it can be very valuable.
But learn Node.js / Javascript as well. Node.js API apps are HUGE.
I’ve seen developers laugh at C++ programmers because they say something like “I can write that in Assembly!”
Whatever. Who cares. And that’s the point. You know who cares about what programming languages you know? The companies you are applying too. And what do most of those companies care about right now? Node.js. It’s huge.
@kevinSmith,
Yes, he said that, but his principle is about “weakest possible language”, in 2018 this is JS, tomorrow it can be something else, the principle will hold true regardless
IC, then you mean The Principle of Least Power. Atwood’s law is the application of The Principle of Least Power specifically to JavaScript.
I totally agree with this!
In my opinion, if you want to become a very skilled full-stack developer, you may focus in JavaScript since there is a lot of things running based in JS.
But I also think that every developer must be a good programmer and master OOP, algorithms and data structures.
So, I recomend you to learn C++ since it’s 100% OOP language. With C++ you gonna understand better how things work at low level, eg memory management and processes’ scheduling. Once you master how to use pointers, you can do almost anything in Unix based operating systems.
C++ opens up a range of new possibilities like Linux and Electronics programming (Arduino and Raspberry Pi). You can have a new hobby developing some electronics crafts or so.
Should a jazz musician only play jazz? I don’t think so, and neither do I think a JavaScript programmer should only use JS. In a guest lecture at the University of Nottingham, Brian Kernighan mentioned a story where a student told him about a geology friend that had to make an assignment based off of seismic activity data and had hand copied over the data for their project. Professor Kernighan decided to make a program to do this for fun and started doing it in pure C, found it a nightmare because C isn’t built for string parsing, and changed to AWK. Using AWK, what was a nightmare in C turned out to be a one-liner in AWK (https://www.youtube.com/watch?v=Sg4U4r_AgJU).
I think there is also something to be said about throwing practicality out the window and just having fun learning a language. I took a course last semester where we just learned 3 languages shallowly; Scheme/LISP, Haskell, and Prolog. I will NEVER have any practical use out of Scheme, but I cannot convey how much fun it was using that language.
There are jobs out there just for a JavaScript (vanilla) developers without using jquery or any other libraries. I would still learn others because it increases your skillset. I have been reading that there are going to be job positions for just HTML and CSS developers because they are getting more complicated and heavy duty.