As an individual, and from my pratical experiences in self-studying IT, i would say that:
- In the context of learning/researching purpose, knowing the basic is MUST. You're not allowed to be lazy and should not focus on many crappy things likes "Let's learn Kotlin/Go/..., cuz they're the future" or " Take this one, because it would helps you get a good job and a fine salary" and many more. They're nonsense in the 'learning' context. I saw many boys who just graduated and called themselves as "developer/engineer". Once I talked to one guy, asked "could you write one small Program in Java for me? Just a helloworld". He said "Okay" then I opened up a 'nano' instance (linux text editor) "Please, write here" and he asked "Don't you have Netbeans or Eclipse?" "No, just this and JDK". Then he putted in 'System.out.println("Hello World");', just only one line. Again I asked him to compile his recently written code, he said "how can I compile with this one?" "I installed jdk, just call out the compiler and compile" "I don't know how to call it directly" - he said.
So the point that IDEs help him everything, he don't even need to remember the basic structure of a program, and don't need to know what IDE does after pressing F5/F6. Just write and click, and let the machine do the rest without knowing what actually happened, then they stated they're 'developer'. How easily that it could be.
But in context of working/production, we're allowed to be lazy, just complete your tasks. You can do whatever you want, copying code, reuse library, do a lazy search-and-replace, because nobody care. It's good for your job, but in some case, it becomes painful when you're not over controlled everything you use, until it gets a bug.
I've worked as Security Engineer in a big company, and I know how important it is to take control of all the module that would be placed into the system. For e.g, for building a large scaled payment system that could serve for million users, so then every line of code, every libs that dev team use MUST CAREFULLY REVIEWED, once it proves that it has no security problem, it would be approved by team leader, and other members could start using that lib/code. There are so many times our team need to build our own libs, simply the existing public solution is not so secure as we expected, so it can't be used. The dev team need to work very hard. Only when the case like that happen, people then realized the important or knowing the basic.
And a minor plus, within my context, I'm currently a Security Engineer, but my starting point is a Banking Financial student. I started to self-studying and learned the very basic of Assembly and the concept of Operating System/computer architecture when people with same age still thinking about which language/technology/framework to learn, the only highest language that i'm fluent is C. And I'm still working fine, because when I face up with a new problem, I dive in, and I see that it's built up from many small basic pieces, and I already know what the basic is.