I’m in the course of pursuing a change in my career towards software engineering/architecture. So far I’ve been brought mostly to C#/.NET and Java, though Java attracts me more, even considering that it might be a “dying” language. Still, Scala and Clojure are there, so I thought that they might give a pump at least to JVMs. In your opinion, should I invest in pursuing certifications/jobs in this field, or sticking to C#/.NET is a better path?
I’ve found good work with both. Java has been “dying” for decades according to people who have an irrational dislike for the language. I’m yet to see any evidence for it. The ecosystem of libraries there is huge and well maintained.
Frankly I’d learn both as well as Python and maybe rust and go. Once you become proficient in any language it’s easier to learn others. So start with Java if that calls to you but branch out as well.
Java is dying in the same way that Linux is winning the desktop war, it’s always going to happen “next year” but never “this year”. I spent a lot of years as a sysadmin and while I would have been quite happy to piss on the grave of Java, we always seemed to be installing some version of the JRE (though, usually not the latest version) on systems. There is just a lot of software which is built with it. This was especially true when dealing with US FedGov systems. Developers for the USG loved Java and we had both the JRE and JDK (because why not require the Development Kit for a user install?) sprinkled about our environment like pigeon droppings.
That said, don’t get too caught up focusing on one language. A lot of the underlying data structures and theory will transfer between languages. What you are learning now may not be what you end up working with in the future. Try to understand the logic, systems and why you are doing what you are doing, rather than getting too caught up on the specific implementation.
Thanks. For the record, the Brazilian government, where I work also loved Java.
There’s not exactly a path per se as you should be able to pick up whichever is used at your job.
I’ve gone from LabVIEW into C# desktop applications into Android Java into Typescript web front ends all with some other languages and platforms sprinkled throughout.
The most important thing is being ready to learn and pick the right tool for the job.
Whichever one you pick, you’ll be learning plenty of lessons that apply in both places. Java and C# have incredibly similar design philosophy, terminology, etc. Both have plenty of jobs available. I’d worry slightly less about choosing based on min-maxing employment opportunities and more toward what feels better and inspires you more.