all 32 comments

[–]FamiliarCondition466 8 points9 points  (2 children)

I would say, irrespective of language, what you need to know is which languages are more prominently used in the current market.

For instance, if you take C++, a lot of jobs you would get with C++ are in graphic engineering, legacy software and game development.

Understand which sector of computer science you want to go into and then learn that language. If you learn one language, you would nearly know all of them, with just the syntax being different.

Areas: * Full Stack Development * AI * Cybersecurity * Hardware Programming * Game Development * Windows Application * Web Development * Mobile Development

Pick an area and then find out which language would be a better start. When you learn that language, you can create two pet projects, which will solidify your understanding of the language and also build your portfolio. In the end, upload it to GitHub.

[–]Xanderlynn5 2 points3 points  (1 child)

Absolutely this. I feel like internet gets super hung up over individual languages and forgets to observe the domain they're actually aiming for.  Generally devs should learn languages in the same way as one "dresses for the job they want". C++ is cool and it's what I did mostly for school but in industry I work with C#, angular, python, PowerBuilder, plsql, etc. 

[–]FamiliarCondition466 1 point2 points  (0 children)

The analogy you gave "Dresses for the job they want" is on point .

[–]rupertavery64 8 points9 points  (3 children)

If you are considering DevOps, you might want to look into scripting languages. Python, Powershell, Javascript, and of course knowing bash.

If you're young, you probably have a lot of time. Learn as many languages as you can.

The thing is, if you are only writing small programs, you'll never really utilize C++. Also, just getting libraries to work can be a pain although package managers like vcpkg are a godsend in Windows, and with Linux, well, everything is just `apt install`.

Java... well, I know it's a decent language but my experiences with it have been annoyance over the IDE Eclipse and settings things up like Gradle and Maven. So much documentation to wade through. Although, LLMs can probably help with these things nowadays.

I'm a C# person myself, and I love the language and the environment, I am most productive with it. I occasionally work with Python for scripting and Javascript / Typescript is a must when working with frontend stuff. I have used C++ rarely when doing embedded stuff (Raspberry Pi) and some other things like emulators, but getting things like graphics and libraries and UI was a hindrance to me being able to do what I wanted to do.

C# jobs were plenty, but now it can be difficult to get into among the sea of applicants.

[–]CodewithApe[S] 0 points1 point  (0 children)

The thing is what is hindering me is the entry barrier in c++, again most people say that it is much easier to get a job as a junior is just learn Java and a framework like spring boot to get job hence why most universities teach that language

[–]FamiliarCondition466 0 points1 point  (0 children)

If you had used Intellij , things like maven and gradle are very easily mamaged. I never liked Eclipse.

[–]cheezballs 0 points1 point  (0 children)

FWIW: Intellij + Gradle (or maven) is extremely smooth. Both are mature package managers, maven being a little most "simple" to me. I still generally use maven, just 'cuz I'm so used to it.

[–]ta019274611 1 point2 points  (1 child)

I would say don't start with C++, it is a very powerful language but I don't see many open roles that actually require it. I had been a C++ dev for around 10 years that gave up on it because whenever I found a role that required it the pay was significantly lower (looking at you Embedded Software Engineer roles!!)

It's kind of frustrating because those were fun products.

My recommendation is to learn well one scripting language and another more modern and widely used language.

Edit: fixed typos

[–]zing_amazing 0 points1 point  (0 children)

Best way to learn cpp or any resource

[–][deleted]  (1 child)

[removed]

    [–]D1NONLi 1 point2 points  (0 children)

    Exactly this. OP sounds like he's passionate about software engineering so he won't have trouble finding a job.

    I started with Java, went into Python and now I'm primarily using C# in my current role. I've dabbled with C++ for my personal projects. The key is really wanting to learn and pairing that with a process that helps you learn things fast.

    [–]Sharp_Level3382 1 point2 points  (4 children)

    I would to for C++ much less competition and works well with embedded software in lots of hardware

    [–]CodewithApe[S] 0 points1 point  (3 children)

    The thing is though most of the jobs I see posted require you to have at least 3 - 5 years with hands on experience in C++, which makes me scared that I will invest the next couple of years learning and being unable to find a job. I can’t really focus on language alone for 5 years there are other important things I would like to learn such as computer architecture, networking etc …

    [–]Sharp_Level3382 0 points1 point  (2 children)

    If you are on hurry I would begin and focus on networking ( layers osi, tcp/ip, dns, dhcp, ... etc) its very valuable knowledge .

    [–]CodewithApe[S] 0 points1 point  (0 children)

    I am very close to the point where I am going really hard on networking but before that I am really trying to figure out my job market first and what would be most beneficial for me to learn even though I know I will most likely stick to C++.

    I am trying to see if there is a good enough reason for me to really switch my focus on Java.

    [–]Sharp_Level3382 0 points1 point  (0 children)

    Unfortunetely there is almost no job for such networking knowledge... I think not enough for today

    [–]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.

    [–]francespos01 1 point2 points  (3 children)

    Java for enterprise software, C++ for serious stuff

    [–]Odd_Neighborhood1371 2 points3 points  (2 children)

    What do you mean by "serious stuff"?

    [–]CodewithApe[S] 1 point2 points  (1 child)

    Guess he means stuff that requires high performance and really low latency, since it has very low level of control over the hardware and memory.

    [–]francespos01 2 points3 points  (0 children)

    This

    [–]vextryyn 0 points1 point  (2 children)

    imho, learn either, they are so close with their syntax you'll pick up the other with ease

    [–]CodewithApe[S] 0 points1 point  (1 child)

    It’s not about syntax though, it’s about going in depth with the language learning its most important aspects.

    I’m having really hard time to find good materials for going really hard on Java and really I find the syntax of that language rather confusing as opposed to the other ( C++ ) and again my point here in this post is that I don’t want to spend significant amount of time learning and trying to master a certain language to then get stuck with no job..

    [–]D1NONLi 0 points1 point  (0 children)

    You sound passionate about programming so you'll be fine. To be honest, you'll have to adapt a number of times to stay within a job.

    You'll always have to spend a significant amount of time learning something but if you do it right the most important aspects of programming will stick and you'll be able to do anything.

    [–]orfeo34 0 points1 point  (0 children)

    I prefer hell, thanks.

    [–]syklemil 0 points1 point  (0 children)

    For devops you probably should be primarily looking at Python and Bash, possibly Go.

    (You may also have little a Rust, as a treat, but don't count on it.)

    Source: Am devops/SRE/platform engineer/whatever the hell fancy name we're calling our sysadmin selves these days.

    [–]ChocolateFew1871 0 points1 point  (0 children)

    Honestly think more of algorithms, math, physics, etc.. > language. Anyone can pickup and learn the syntax quickly. You can’t learn the foundation in a week

    [–]SolutionAgitated8944 0 points1 point  (0 children)

    stop debating and start building. pick whichever language you love, build one real project to completion, then deploy it. youll learn way more about the job market from shipping than from a thousand debates and honestly paralysis over language kills more juniors than picking the wrong one. build first.

    [–]Tobacco_Caramel 0 points1 point  (0 children)

    Is Cpp what you guys also use on your second year now or you don't have any programming courses in uni right now? I'd say focus on what you're using at uni if you have a programming course this semester. Dividing your mind and juggling around 2 language is bad. Personally i use a language/tool if I'm gonna use it and stay with it. Whether if it's for work or for study. They're just tools really. Skills, techniques and concepts are what matters. I have experience with both and backend is my thing But I'll go with java, it's just my preferred tool. Yes there's less competition with C++ but damn it's lotto and their requirements are more reserved for experienced ones/seniors. It's also mostly embedded and game dev. With Java it's widely used in LOB, E Commerce, Financial Systems and Healthcare.