Besides basic code logic (loops, conditionals, etc...) I'd say every junior developer should learn at the very least:
Oh, and also: learn to RTFM 😉
I am not sure about the "without IDE". How would that help you? The hard part is to learn how to reason, and think like a programmer. Not getting help finding errors in your syntax, or suggestions on functions and features just makes you struggle :)
An IDE indeed helps you a lot and reduces the struggle... and that's exactly why you should try to be able to code without it. Especially since you can't always have/choose an IDE.
Using an IDE as help is great, depending on it to produce acceptable code is not.
I've seen too many junior devs being completely lost when their favorite IDE was taken away.
That just sounds like gatekeeping elitism to me.
How so? I'm just saying being able to produce quality code without your favorite IDE is a good skill to have.
The problem is that no junior will ever write quality code, and neither should you expect them to. The most important thing for a junior is for them to easily get up to speed, and realize that "Wow! I can actually do something with this". Trying to focus on quality early, and you'll just struggle and lose motivation. How do a junior even know what quality means?
The will to write quality code grows from professional pride, and that comes later when you understand what you're doing and can make good decisions from experience. That is my view of it all.
Well then "quality" might not have been the right word. I mean code that works. IDEs will do a lot for you, including fixing your mistakes, which often means you won't learn from them.
I do agree with what you say about motivation though and I feel like I should clarify my thought: I'm not saying juniors should not use IDEs, I'm saying they should avoid using only that and sometimes go back to the basics so they can fix some mistakes by themselves and learn whats happening in the background (building process is also something IDEs hide a lot).
I just feel like learning to code only using IDEs is like learning to drive on an automatic transmission... but then again, it's the norm in some countries, so let's agree to disagree if you think that's ok 😁
It isn't about the syntax at all, it's quite often about the build process and other things that IDEs like to hide away from you, making the whole dev cycle a lot smoother.
But this will come back to bite you in the backside when it suddenly doesn't work as you expected it to, and you've got no idea what is supposed to happen under the hood.
Does acquiring the knowledge to solve these situations worth the extra hassle? I think it definitely does, all IDEs are fallible.
Do I think we should shove it down junior devs' throats then?
No, not at all. Particularly in the very early days, the enjoyment of creating something, anything, is a lot more important for me. But you do need to come back to it and learn the underlying mechanics with time, certainly by the time you become a senior dev, I'd expect you to know how to build something with just the basic tools.
Most people's natural curiosity will take them there anyway.
We're a place where coders share, stay up-to-date and grow their careers.
We strive for transparency and don't collect excess data.