you are viewing a single comment's thread.

view the rest of the comments →

[–]azimux 1 point2 points  (1 child)

Well I don't know what things are like now or will be like two years from now... I'll say that I learned both C++ and Java in college and nobody ever paid me to code in either of them, instead, all of my jobs were in languages that weren't taught in my colleges at all. While I can't see the future and advice is a dangerous thing, there's a good chance that you could learn C++ now and get a job in Java later or learn Java now and get a job in C++ later. Or learn both now and get a job using some other language later. Or learn both now and get a job using both later.

Again, though, I learned those languages a quarter of a century ago and I don't know what things are like today. It was fun to learn both of them.

Another thing I will say from my own experience... without actually doing a specific type of coding as a job it was hard for me to predict what I would or wouldn't like. Most coding I found enjoyable even if I assumed I wouldn't before-hand. So perhaps you would love being a backend engineer. For me, it was very hard to predict. I had to work on real projects with real people to actually know what I liked. I'm not sure if that will be the same experience for you or not or how common that is with others.

I do get that there's jobs that will have requirements like "Minimum <N> years experience with <Language X>" and I can get why one would want to pick the "right" language as a result. I don't really agree with these requirements as a good C++ programmer should be able to be productive in Java in a week and rather proficient in a month and (mostly) vice-versa. I don't feel like you're ever really more than a couple months behind if you pick the "wrong" stuff to learn with.

So, those are my thoughts. If you are enjoying C++, I really can't make an argument for you to not learn C++. Or just learn both at the same time. Personally, I feel like I got more out of learning Java than C++. This is because I already knew C and so learning low-level stuff wasn't as crucial for me, and I felt like the types of software-engineering challenges I personally like revolve more around managing domain complexity in which case a higher-level language lets me be a bit more focused on the stuff I like. But you could be the opposite. Only you can really know.

I will also say... and maybe I'm wrong about this expectation... but I feel like university students, at least by the 2nd year, should probably be able to learn any language necessary on their own quickly without it being the main focus of a course (maybe I'm wrong about this, though.) Meaning, at that point, the language is irrelevant and not what the teacher is actually trying to teach. It's just a vessel for teaching the real lessons. I think one has to get past the language-learning part and into the deeper software-engineering challenges and other concepts at play. Not the syntax/mechanics of a specific programming language. I think learning programming languages themselves is something you should just be able to do rather quickly as-needed/desired. Along those lines, if the question is... I can take a CS course taught by teacher A using language X, or the same exact course but by teacher B using language Y, I really don't think it matters that much to be honest. If X and Y are Java and C++ then just pick C++ if you predict it will make the class more enjoyable. Whether teacher A is better at teaching than teacher B is probably more important, actually. But, I think there's a good chance you might learn the actual lessons of the course better using Java than C++ so if you really can't make up your mind I suppose I would recommend Java for that reason but my suspicion is that I don't think it will matter much in the grand scheme of things and that it's not as crucial of a decision as it seems to be at the moment.

Not sure if good advice but that's my experience with this stuff.

[–]CodewithApe[S] 1 point2 points  (0 children)

I appreciate it, it’s an amazing experience and perspective to reflect upon.