It’s not a black and white issue. “Jack of all trades, master of none” vs “expert of one”. Both have their place and I think it’s better to have a mix than just one or the other.
I’ve seen python newcomers writing code as if they were writing in another language. They don’t know about dataclasses, operator overrides, __init__
vs __new__
, metaclasses, __init__.py
vs __main__.py
, @property
, match
, the walrus operator, or
assignments, or the common pitfalls of python like mutable defaults, type hints, and a bunch of other things.
Knowing a language in-depth helps write DRY code, avoiding common pitfalls, handling things better like debugging, profiling, and other tooling, and avoiding pitfalls of the language, which newcomers have to first learn, regardless of how their experience with other languages.
A lot of stuff is transferable, for sure, but every language uses different idioms, covers different paradigms, and so on. It’s good to have at least one expert on the term to teach others, and to have people flexible enough to switch of willing to learn. Having only experts can mean a static team unwilling to experiment or use better programming languages or technologies. Having only beginners or mediors of a language can produce functional, but sub-optimal code. YMMV
AnyOldName3@lemmy.world 9 months ago
I’d say this is pretty dependent on the language. For example, with C++, you need to micromanage (or at least benefit from micromanaging) a lot of things that you can get away without knowing about at all with other languages. That stuff takes time to pick up if you’re self-teaching as you can write stuff that looks like it works without knowing its half as fast as it could be because you aren’t making use of move semantics, and if a colleague is teaching you, then that’s time they’re not spending directly doing their own work. On the other hand, someone with Typescript experience could write pretty decent Javascript from the get-go.
CodeMonkey@programming.dev 8 months ago
C++ is unique in that it is wildly dominant in its niche. I am sure that any developer who has worked with another object oriented, manually memory managed, systems programming language (are there any other popular ones out there?) should have no trouble picking up C++.
AnyOldName3@lemmy.world 8 months ago
There are other rarely-used C+±like languages that fit your criteria, and they basically all aim to eliminate the kind of thing I was talking about. If someone was used to one of those and tried picking up C++ for the first time, they’d probably end up with working, but unnecessarily slow C++, having assumed the compiler would do a bunch of things for them that it actually wouldn’t.
The popular low-level systems programming languages that aren’t C++ are C and Rust. Neither is object-oriented. C programmers forced to use C++ tend to basically write C with a smattering of features that make it not compile with a C compiler, and produce a horror show that brings out the worst of both languages and looks nothing like C++ a C++ programmer would write, then write a blog post about how terrible C++ is because when they tried using it like C, it wasn’t as good at being C as C was. Rust programmers generally have past experience with C++, so tend to know how to use it properly, even if they hate the experience.