3 ms·
I never got the "Should I learn X" posts. The answer is yes to all the "Should I learn X" questions so it's very hard to have a discussion. Learning another la
by inglor 8y ago
I never got the "Should I learn X" posts. The answer is yes to all the "Should I learn X" questions so it's very hard to have a discussion.
Learning another language is _significantly_ easier than learning the first one or two - not to the point of being a master but to the point of being competent.
Should I learn OCaml? Yes, you learn from knowing a functional language and Scala (combines functional and OOP well) and Clojure (a lisp) and C++ (resource management is important) and most of these languages.
Should you learn Node.js? Also yes - it is popular, most of the FE tools are written with it - it's fun to use (subjectively) and it's popular and reasonably fast.
Also Go, Rust, Swift and a bunch of other languages - languages are like philosophies and knowing them helps you understand what you're actually doing better often.
I never understood developers that only know 1-2 languages since it severely limits how you _look_ at problems.
- ctvo 8y agoYou're taking the question very literally. Implicit in it is should I learn Java over X given I'm constrained by time and opportunity cost. Yes, we'd love to learn all the things given infinite resources.
- inglor 8y agoIt's implicit - but my criticism here is mostly that once you know one development stack learning others is significantly easier. Learning Java is something that a backend developer can likely do in a week - and so is learning Node.js after knowing Java.
- ctvo 8y agoKnowledge of a language is a scale and not a binary yes / no question. Being passingly familiar with a language is a week exercise, putting it on your resume / CV and saying you're ready to write production quality code is different. For Java specifically: - How does the JVM memory model and other internals work? - How comfortable am I with the standard library? - What are the idioms and design patterns used by professionals in Java? - Performance pitfalls that are tribal knowledge with concurrency / threading, etc? If the scale of language knowledge is 0-10, getting to 3, where you're familiar with the syntax, common language features and a few APIs is a week's exercise after you've used a few languages (in the same family -- I'm not going to be passingly familiar with Haskell in a week).
- Ygg2 8y agoWell, yes and no. Sure, it would be best if you learn all of them, but that's just impossible and not terribly useful. What "Should I learn X" is implicitly "Given limited lifespan, will learning X, pay off for me". Both in the literal sense like a well payed job and in the sense of making you a better programmer, which kinda depends on your previous experiences (e.g. learning Lisp dialect is kinda worthless, if you already know another Lisp dialect, learning C# pays less if you already know Java and F#).
- mxschumacher 8y agoPeople who ask this question are implicitly asking: "Given the difficulty/time requirements of learning something and the salary/technology trends of our industry, does it make sense to invest in the mastery of abstraction X?" The time I have outside of my sprint is really limited, so getting expert guidance on whether knowing Rust will benefit me more than knowing Java is in fact extremely valuable to me.
- inglor 8y agoThat's a good point - it is highly dependent on what languages you already know from beforehand. If you know JavaScript already then it makes sense to learn a language that is not garbage collected, has no mutations or is not managed. I would pick up Rust or Clojure before Java in this regard for example - though learning new languages gets way easier the more you learn.
- gaius 8y agoLearning another language is _significantly_ easier than learning the first one or two Learning the syntax, sure. But to be productive at a commercial level in any language these days is about knowing your way around the ecosystem, libraries, tooling etc, and that takes a significant investment of time, and the knowledge is highly perishable. 3-4 languages is probably the most it’s reasonable to maintain and to claim as an actual skill.
- acdha 8y ago> the knowledge is highly perishable. This is a very important point: many consultants get exposure to something like that 3-4 language list but most of that knowledge often stale or biased by past projects. This frequently ends up being actively harmful if they’re recommending something which they think they understand but the weightings are no longer correct. I’ve seen that the most in web projects (“you realize we no longer care about IE8, much less 6?”) but it’s pervasive because the cost of learning any two things well enough to do a deep comparison is higher than most places are willing to pay.
- jghn 8y agoThis is so overblown. We bring in folks regularly with no experience in our language much less the ecosystem and invariably they’re totally productive in a month or so
- gaius 8y agoSure, if you work at it full time you could be up to speed in a month, say 200 hours of work. That’s more than a casual investment of time if it’s on top of a full time job as well. And if you go away from it and come back in 6 months or a year you’ll have to do it over again, some stuff you’ll forget if you don’t use and some stuff will have moved on.
- pjmlp 8y agoMe neither, I have always beem against the 'X Developer' mantra of siloing oneself into a language corner.