

Ask HN: Is Java a wise career investment? - vtanase

Hello,<p>I have been working for close to 2 1/2 years as a Java developer, and seeing all the job postings on HN as of late, I have been wondering if it is wise to keep learning and investing in Java or if I should consider broadening my horizons by learning other programming languages(I have dabbled a bit in Python and Ruby so far).<p>Since this question is quite dependent on geographic &#38; economic context, I will provide some more detail. I am living in Romania, and have no plans of relocating. Currently the local job market has a lot of Java openings since enterprise clients from Western Europe are sending their projects to us to reduce development costs. How long this trend will last is quite uncertain, and this makes me wonder if Java is a worthwhile investment.<p>I have been considering starting to freelance but Java doesn't really seem to be the language in demand. The same goes for doing remote work for companies from outside my country.<p>I will also mention that I have a CS degree, so I know the universal theory behind programming like OOP, design patterns, algorithms etc.<p>So, in conclusion what would the kind people here at HN recommend? Sticking with Java, or switching to some more in demand language?
======
RyanZAG
HN is mainly startups who need to develop code quickly and be as 'in fashion'
as possible. Java is more focused on long term, reliable code. For a general
idea of the 'real' popularity of a language outside of the silicon valley
startup scene, something like this is a better indicator:

[http://www.google.co.za/trends/explore#q=java%20developer%2C...](http://www.google.co.za/trends/explore#q=java%20developer%2C%20ruby%20developer%2C%20python%20developer%2C%20c%23%20developer&cmpt=q)

So it really depends on what you want to do - if you want to work in a large
multinational or contact out to larger companies, then Java is a far better
choice than Ruby or Python as the job demand is much higher.

If you want to jet out to silicon valley and shack it up with some guys who
probably can't afford breakfast the next morning, then Ruby and Python are THE
thing to go for! Not that you won't find enterprises using these languages,
they're just much further apart and the demand level for these jobs is usually
through the roof.

 _Flamebait_ It's still true though.

~~~
caw
As an enterprise sysadmin, I concur that Java is focused for long term code
maintenance. Reliability of the JVM is for another discussion :)

We do have Rails and other "fun" language applications, but there are few
people who know how to write or debug them. Mostly it'd be the small internal
teams that use it. Larger teams would still be using Java. Phone application
development is a similarly rare skill, hence the outsourcing.

Besides Java, we use copious amounts of .NET. That could be another area you
want to focus on in addition to Java if you want to stay in the enterprise
space.

------
CommitPush
Try to learn Android and you raise your market value multifold. I would
however though learn a scripting language to have a complementary skill-set
and put a framework on top of that. I'd recommend Ruby --> Ruby on Rails.

~~~
vtanase
Excuse my ignorance, but why would learning Android increase market value by
more than say something like Ruby?

~~~
6thSigma
Android is built on Java so learning Android programming is as simple as
learning the ins and outs of an Android program rather than a whole new
language.

Android won't necessarily increase your market value more than Ruby but it
will be a much easier thing to learn considering you already know Java.

------
kybernetikos
Java is a good thing to know, but I suspect that Java-the-language may not
have a massive future. It's pretty telling that some of the major java IDE
developers are also pushing their own JVM languages (eclipse: Xtend,
jetbrains: Kotlin).

There's some interesting stuff going on in other JVM languages, I'm
particularly interested in Scala and Clojure.

I think you've provided yourself with an excellent starting point having
learnt java, but it would be a bad idea to stop there.

~~~
vtanase
I have no intention of stopping. I guess my curiosity was more along the lines
of whether it is worth it to dig deeper and learn more Java, or if it would be
better to go for some other languages.

I'm also pondering about switching jobs for this, since the best way to learn
in my opinion is to force yourself into real projects with new technologies
and not just hack on some small projects for a couple of hours each week.

------
jerven
Well what do you want to do? What kind of problems do you like to solve? Then
look around and see what languages are commonly used and why they are used to
solve that category of problems. Then try those languages, and form your own
opinion.

I personally think languages are easy to learn enough to get stuff done. API's
and libraries with their uses, corner cases is much more work. i.e. the java
language specification is just one little book. But once you add all the
common API's and libraries and how to interact with most common systems. i.e.
DBMS and networks you have a small library.

In the end you are paid for solutions to problems, so learning to understand
and solve problems is the most important.

------
jsmartonly
It depends what you want.

A) If you want to make more money or look for career change, then you have to
listen to market and learn whatever it needs or pays well.

B) If your goal is to do long term career investment, then keep learning Java
and make yourself an expert of it. To become "expert", you inevitably will
have to learn a lot things that are beyond Java language and platform. Later
on, these knowledge can be easily reused in other languages.

A) is short term, B) is long term. How about allocate 50% of your learning to
each of them, then adjust allocation when you feel you need to?

------
TheSmoke
i don't think java as a language is a better investment than others however
java as an ecosystem is.

jvm is expanding, concurrency and scalability is more important than ever and
jvm can provide you these tools. you can learn about jvm optimization,
languages like groovy and scala, web frameworks like grails and play.

and of course a little bit of python and ruby won't hurt. :)

------
wanabeunknown
learn couple of languages not only java but remember java is weapon of choice
in enterprise businesses

~~~
exelib
very big +1! But not only languages, techniques like TDD, BDD and so on,
concepts like prototyping and frameworks.

------
nXqd
Actually, I don't find any difficult when I change from one language to
another. It's not much different, if you are looking for getting a hot job in
the market, just playing with ruby, javascript [ coffee .. ] and soon you will
get into it pretty quickly.

------
dotborg
I see no reason, why as an experienced Java developer you couldn't become
javascript/ruby/python/scala/whatever expert. There is not that much to learn
in Java.

------
eranation
Hard to tell the future, but I'm betting on Scala. Relevant for enterprise,
gaining momentum for startups, and I think has the best of both worlds.

------
ndeverge
Java is a too verbose language, and it will eventually be replaced by
something else. But the JVM will stay for long (it is the actual runtime
standard for the enterprise). So now, you'll have to bet on the next JVM
language: \- Groovy ? \- Kotlin ? \- Ceylon ? \- Scala ? \- Other ?

I actually take a bet on Scala and its functional approach.

------
dnu
As a first step, you could expand to other JVM languages (like Clojure, Scala,
Kotlin, ...)

