Advice From A JUG Leader – Learn A Different Language

The cry of “Java is Dead” has been heard for many years now, yet Java still continues to be among the most used languages/ecosystems.  I am not here to declare that Java is dead (it isn’t and won’t be anytime soon). My opinion, if you haven’t already heard:

Java developers, it’s time to learn something else

First, a little background as basis for my opinions:
I founded the Philadelphia Area Java Users’ Group in March 2000, and for the past 12 years I have served as ‘JUGmaster’. Professionally, I have been a technology recruiter focused on (you guessed it) helping Philadelphia area software companies to hire Java talent since early 1999. I started a new recruiting firm in January that is not focused on Java, and I’m taking searches for mostly Java, Python, Ruby, Scala, Clojure, and mobile talent. This was a natural progression for me, as a portion of my candidate network had already transitioned to other technologies.

I launched Philly JUG based on a recommendation from a candidate, who learned that the old group was dormant. Philly JUG grew from 30 to over 1300 members and we have been recognized twice by Sun as a Top JUG worldwide. This JUG is non-commercial (no product demos, no sales or recruiting activity directed to the group), entirely sponsor-funded, and I have had great success in attracting top Java minds to present for us.

The early signs

After several years of 100% Java-specific presentations at our meetings, I started to notice that an element of the membership requested topics that were not specifically Java EE or SE. I served as the sole judge of what content was appropriate (with requested input from some members), and I allowed the group to stray a bit from our standard fare. First was Practical JRuby back in ’06, but since that was ‘still Java’ there was no controversy. Groovy and Grails in ’08 wasn’t going to raise any eyebrows either. Then in ’09, we had consecutive non-Java meetings – Scala for Jarheads followed by Clojure and the Robot Apocalypse (exact dates for said apocalypse have been redacted). Obviously there is commonality with the JVM, but it was becoming readily apparent that some members of the group were less interested in simply hearing about JSP, EJB, Java ME or whatever the Java vendor universe might be promoting at the time.

I noticed that the members that sought these other topics and attended these alternative meetings were my unofficial advisory committee over the years – the members I called first to ask opinions about topics. These people were the thought leadership of the group. Many of them were early adopters of Java as well.

It was apparent that many of the better Java engineers I knew were choosing to broaden their horizons with new languages, which prompted me to write “Become a Better Java Programmer – Learn Something Else“. That ’09 article served to demonstrate that by learning another language, you should become a better overall engineer and your Java skills should improve just based on some new approaches. Today I go a step farther in my advice for the Java community, and simply say ‘Learn Something Else‘.

To be clear, the reason I make this suggestion is not because I feel Java as a language is going to die off, or that all companies will stop using Java in the near future. Java will obviously be around for many years to come, and the JVM itself will certainly continue to be a valued resource for developers. The reason I advise you to learn something else is that I strongly believe that the marketability of developers that only code in Java will diminish noticeably in the next few years, and the relevance and adoption of Java in new projects will decline. Known Java experts who are at the top few percent probably won’t see decreased demand, but the vast majority of the Java talent pool undoubtedly will.

The writing on the wall

I think at this point the writing on the wall is getting a bit too obvious to ignore, and you have two forces acting concurrently. First, there is a tangible groundswell of support for other languages. A month doesn’t seem to go by that we don’t hear about a new language being released, or read that a company transitioned from Java to another option. Much of this innovation is by former Java enthusiasts, who are often taking the best elements of Java and adding features that were often desired by the Java community but couldn’t get through the process for inclusion.  Java has been lauded for its stability, and the price Java pays for that stability is slowed innovation.

The second contributing factor is that Java has simply lost much of its luster and magic over the past few years. The Sun acquisition was a major factor, as Oracle is viewed as entirely profit-driven, ‘big corporate’, and less focused on community-building than Sun was with Java. The Java community, in turn, is naturally less interested in helping to improve Java under Oracle.  Giving away code or time to Oracle is like ‘working for the man‘ to the Java community.   Oracle deciding to run JavaOne alongside Oracle OpenWorld may have been an omen. Failures such as JavaFX and the inability to keep up with feature demand have not helped either.

My suggestion to learn something else is also rooted in simple economic principles.  I have seen the demand for engineers with certain skills (Ruby, and dare I say JavaScript are good examples) increasing quickly and dramatically, and the low supply of talent in these markets makes it an opportune time to make a move.  It reminds me of the late 90’s when you could earn six-figures if you could spell J-A-V-A.  Some companies are now even willing to teach good Java pros a new language on the job – what is better than getting paid to learn?  The gap in supply and demand for Java was severe years ago, but it seems the supply has caught up recently.  Java development also seems to be a skill that, in my experience, is shipped offshore a bit more than some other languages.

Still don’t see it?  Remember those early Java adopters, the thought leaders I mentioned?  Many of them are still around Java, but they aren’t writing Java code anymore.  They have come to appreciate the features of some of these other offerings, and are either bored or frustrated with Java.  As this set of converts continue to use and evangelize alternative languages in production, they will influence more junior developers who I expect will follow their lead.  The flow of Java developers to other languages will continue to grow, and there is still time to take advantage of the supply shortage in alternative language markets.

Java will never die.  However, the relevance and influence of Java tomorrow is certainly questionable, the marketability of ‘pure’ Java developers will decline, and the market for talent in alternative languages is too strong for proactive career-minded talent to ignore.

If you found this post useful, you may find my ebook Job Tips For GEEKS: The Job Search even more helpful.  You can follow Job Tips For Geeks on FacebookTwitter, or Google+.

15 comments

    • fecak

      That’s a good question, and I guess it depends on what you specifically mean by ‘C++-ish future’. There are still plenty of folks being paid to do C++ work, just like there will always be folks doing Java work. There may not be a relevant C++ culture or movement today as there was in years past, and I could certainly see that happening with Java. I also see how Java may get into a situation where the language stagnates much more than it has even over the past few years, where updates and additions become less frequent. Time will tell I guess. Thanks for reading.

    • fecak

      If I were a Java developer today, I would probably look at a few paths. One of the most obvious would be mobile development, and Android would seem like a fairly obvious choice for a Java pro. At this point it seems companies may expect mobile developers to know both Android AND iOS development, which probably isn’t an entirely realistic expectation today.

      I’d also certainly take a look at Ruby and Python, as well as functional programming languages as well. It is a matter of what ‘feels’ right it seems. The developers I know that are the happiest seem to have found the language that best suits the way they think, their style, their logic. Find that and you’ll be successful.

  1. Pingback: Advice From A JUG Leader II – Debate Breakdown | job tips for geeks
  2. David Hope

    JavaScript is certainly going to be the future. But how many Java developers seriously haven’t found themselves having to learn JavaScript and possibly JQuery anyway? It’s clear this is happening when you can see the Eclipse project and what it has been doing with Orion. I am not convinced by the other JVM based languages. The only thing that matters these days is JavaScript and HTML5, even Microsoft is pushing it. This what happened with the original Java, buy in from all the major vendors including Microsoft.

    • fecak

      JavaScript has certainly come a long way in the ‘respected’ category over the past several years, and there are certainly some Java devs that are competent with JavaScript. I’m still thinking that the other JVM languages are going to make an impact on Java. We’ll see, thanks for reading.

      • David Hope

        Thanks for the Reply! The only reason I am not sure about the other JVM languages is mainly because I have not heard a peep about them for a good few months now. Previous to this my Twitter stream was Scala this Clojure that. Its strange but since Microsoft practically killed every other language off with Windows 8 and tools like PhoneGap have come out allowing you to write cross platform using JavaScript it seems unstoppable.

    • fecak

      I hear quite a bit of talk about Scala, a bit less about Clojure but still some, a good amount of Ruby and Python as well. Obviously HTML5 gets lots of noise lately as well.

      • David Hope

        I did begin learning Scala, I brought the Scala book, it just feels to me like a bad decision. Java is dying I kind of feel like the whole industry in general is swinging in a different direction which is unifying platforms. The push is all coming from the browser not the JVM – Tablets, PC’s, Phones we are moving closer and closer to a browser based / browser driven only world. Only time will tell I suppose.

      • fecak

        I wouldn’t say Java is dying necessarily, but these other options are becoming more realistic. Industrial strength stuff has started to move away from Java to some of these other options. As you said, we’ll see.

    • nofearinc

      The majority of Java developers avoid any kind of other language interactions so far. Think about frameworks like GWT – it compiles to HTML and JS just because of the fact that Java devs avoid JavaScript scripting. How about JSF and it’s *Faces? Several huge companies developing components for JSF that do simple 5-liners of jQuery related code.

      I’m also very curious of the new Windows 8 approach with the development of HTML5 and JS applications for the core of the OS similarly to their WPF experience. I quit Java few years back and I can’t believe that MS stole Java and named it C# and now they have tons of progress only for a couple years.

  3. dovakin

    I’ve been writing code in both java and javascript for many years, and also some Objective-C/C++, and Java is still my preferred language (latest versions of Obj-C with Blocks and ARC are also cool). But I must admit that I would like to be able to use Java 1.8 closures now!

    Of course, JS/HTML5 is the only true remaining cross-platform client-side *runtime*, so you can hardly avoid it, but seriously, without static typing (and a few other things) JS is not a robust *language* for large projects. (That’s why I understand GWT goal.)

    I think C# and Scala are today the only serious alternatives to Java for “general purpose developement” (NB: I don’t know Closure well).
    But as far as I know, there is no fully supported crossplatform VM for C# (while the JVM is available and fully supported on Linux,Win,MacOS, and you can run many languages on it),
    and I’m afraid that Scala may become the “new C++” from a complexity point of view.

Leave a comment