Skip to main content

Why Learn New Languages N Years into Your Career?

Posted by editor on September 16, 2009 at 8:54 PM PDT

On the Artima Developer site, Andy Dent recently posted today's lead Java Today item, Why Learn New Languages? Being Outlived by C++. Andy is 46 years old, considers himself to have about 20-25 years of full-time work remaining in his career, plans to remain in software engineering, and says "I'm seriously contemplating giving up learning new languages."

Would this be a good plan in the case of C++? In the case of Java?

I'm a bit older than Andy, and though right now I'm doing more work in the journalistic realm than in direct software engineering, I do still keep my hand in software engineering on a part-time basis. And as recently as six months ago, my work was almost entirely software engineering.

At Andy's age, I was working close to full-time on Java development. I had learned Java in the preceding several years, applying it whenever I had the freedom to do so in my daily work. I certainly wasn't anything near being a Java guru, but I was able to get a lot done at the team/project lead level. In my part time, I was editing Java books (which were big sellers at the time). Obviously, today I think it was a very good decision for me to devote lots of time at that point to bring Java into the list of languages for which I could claim a fairly high level of proficiency.

Andy's conclusion implies that his mind is made up (he probably won't focus on learning new languages in the future):

I guess the only threat to this retirement plan as a legacy C++ guru is the hordes of bright young games programmers. But seriously, if you're looking to maintain some really old code in 2020, won't you want to hire a consultant with an authentically grey beard?

Well, 2020 is only 11 years from now, not 20-25 years (Andy's estimated full-time work term). That's a long time, in my opinion, to rely on something that was at its peak importance (perhaps) in the 1990s. I mean, in my opinion, the creation of Java was in part a response to some of the problems and deficiencies inherent in C++.

So, let's ask this question: what languages were at their peak 30-35 years ago, in the mid/late 1970s? Is there any work in those languages today? What would those languages be? COBOL? FORTRAN? BASIC? Would you want to be at the end of a long software engineering career today, trying to pay off remaining debt and bolster your retirement savings, as a COBOL, FORTRAN, or BASIC guru? I wouldn't!

Now, it so happens that I do a fair amount of work involving Fortran. But, I don't do much work on the Fortran itself. I'm working with legacy mathematical modeling and simulation libraries, and bringing those libraries into modern applications that interact with an Oracle database and load the results into web pages. If I didn't know Perl and something about HTML, CSS, and web services, along with multithreaded development (so I can make the old Fortran code utilize modern multi-processor / multi-core systems), even "guru" status with respect to Fortran wouldn't make me sufficiently valuable to work on that project (IMO).

I guess my conclusion is that even "gurus" need to keep up with the times. A real lot is happening in the Java world, today. As I write this, the JVM Language Summit is under way at Sun's Santa Clara, California campus. The agenda includes everything from the JDK7 to Scala to JRuby to Invokedynamic to Ioke to Clojure to Groovy to Jython to Hotswap... I think you get the idea.

I don't think the threat to a successful career in trying to be a "guru" in a given language for the last decades of a software engineering career comes from much younger developers. Rather, I'd say the real threat would be competing gurus in your language who have also taken the time to stay up to date at a fairly advanced level of proficiency with some of the critical new languages that complement the legacy language.

So -- is there any point in a software engineering career when it makes sense professionally to stop learning new languages -- aside from like months or a few years before you retire? I don't think so. What do you think?

In Java Today, Andy Dent asks Why Learn New Languages? Being Outlived by C++. The question seems relevant for Java developers as well, and there have been lots of interesting comments posted in response to Andy's question. Here's Andy's introduction:

Can a focus on C++ get me through the next twenty-odd years? Is it time to stop chasing bright, shiny new languages and consolidate as a guru? A few thoughts on "legacy languages" and the later stages of a coding career...

The JVM Language Summit is under way in , and will continue through Friday:

The 2009 JVM Language Summit is an open technical collaboration among language designers, compiler writers, tool builders, runtime engineers, and VM architects.

We are sharing our experiences as creators of programming languages for the JVM, and of the JVM itself. We also welcome non-JVM developers on similar technologies to attend or speak on their runtime, VM, or language of choice.

See the JVM Language Summit Agenda for details on the presentations.

Kirill Grouchnikov announced the Release candidate for Substance 5.3:

I am extremely pleased today to announce the availability of release candidate for version 5.3 of Substance look-and-feel (code-named Reykjavik). The release notes for version 5.3 contain the detailed information on the contents of this release which include the following:

In today's Weblogs, in my feeds I found Java Champion Jim Weaver's interesting post Adding feeds to SpeedReaderFX that don't *quite* comply with the RSS/Atom formats:

When adding more feeds to the SpeedReaderFX application's Criteria dialog, I found that some of them don't *quite* comply with RSS/Atom formats. For example, I thought it'd be cool to have RSS feeds from Engadget and Gizmodo (what self-respecting geek wouldn't want those feeds?) I also wanted to have a daily dose of Dilbert delivered, but in these three cases the JavaFX RSS API reported that the dates for the feed items were just prior to the OS epoch.

John Ferguson Smart announces EasyB/JDave talk available as a podcast:

Last week I had the pleasure of being invited to talk at the Canberra Java Users Group about BDD using Easyb and JDave, using the talk that Lasse Koskela and I gave at Agile2009...

Santiago Pericas-Geertsen describes Android Support in Mobility Platform:

As Ryan described in his recent blog, we now have support for Java SE clients in the Mobility Platform. Mahesh Sharma, a student and Sun ambassador in India, has been working on a port of this library to the Android platform. As part of his work, Mahesh also re-wrote the UI of our MusicDb demo and proved that Android is a great plaform to run SGMP applications...

In the Forums, thamoskuk9 posted Re: Mobicents Diameter v1.0.1.GA Released!: "When you download the Mobicents JAIN SLEE Server binary distribution, you can also choose to verify the integrity of the zip file you download, which is both preferred and safer. If you are setting up Mobicents in a production environment (as opposed to,..."

david_hall responds Re: JXTable Sort ,how to exclude the null value in the cell????: "Looks like the best choice is to provide a ModelWrapper that ensures that the values compared are never null. Maybe a wrapper that associates a default value with each column for sorting purposes. This looks like the last place you can intercept the..."

And ghady_rayess contributed to a conversation Re: I dont know, Should I continue on series40 with LWUIT?: "Hello Ashish, Try to subgroup related forms (i.e. diff menus) into different classes so that their memory allocation is released when browsing into different menus... This is my approach. I have a LWUIT app which works fine on Nokia..."

Our current Spotlight is Media Streams Player Release 1.0.0: The Media Streams Player Project has announced the release of Version 1.0.0: "Aalhamdulillah! Most probably this is going to be the very first release of a complete cross-platform media player which is written in the Java Programming Language. Media Streams Player is entirely written in the Java Programming Language using the Java Media Framework (JMF) API. This cross-platform media player can play Video & Audio files of most of the popular media file formats on different popular Hardware & OS platforms. This application is currently under development. But this demo version which is ready to be released is a stable version of the application. End users of the application can use the Windows version of the media player just downloading & installing the Windows executable of Media Streams Player. They can find it at the Home Page of the project located at the given URL."

The current Poll asks "In which region does Java enjoy the greatest market share among competing technologies?" This Thursday will be the last full day of voting.

Our Feature Articles include Jeff Lowery's new article A Finite State Machine Supporting Concurrent States, which demonstrates how Java enums and EnumSets can be used as a basis to define and validate application states and state transitions. We're also featuring Jeff Friesen's article Introducing Custom Paints to JavaFX, which shows how you can leverage undocumented JavaFX capabilities to support custom paints in JavaFX Version 1.2.

The latest Java Mobility Podcast is Java Mobility Podcast 86: Mobile Service Architecture 2: Introducing New Features in Mobile Devices: "Kay Glahn from Vodafone Group R&D and Erkki Rysa from Nokia share the new features in MSA2 in this abbreviated feature from JavaOne."

Current and upcoming Java Events:

Registered users can submit event listings for the Events Page using our events submission form. All submissions go through an editorial review before being posted to the site.

Archives and Subscriptions: This blog is delivered weekdays as the Java Today RSS feed. Also, once this page is no longer featured as the front page of it will be archived along with other past issues in the Archive.


Could not figure out the editor's name ...

Hi, With apologies, I am curious to know the identity (name, profile) of the editor. Can you please post ?. On a different note, my $0.02 ... The evolution of "programming languages" has been by and large positive. One is able to tackle a broader and deeper realm of challenges. On the other hand if one were to learn "yet another way" of meeting identical challenges, then the learning becomes a huge "chore". Amongst the "mainstream" languages "Java" has proven to be quite versatile in many, many domains and I guess it's popularity stems from that. "Human" languages have also evolved. I suspect there might have been studies comparing the evolution of the two. (human-language vs computer-language). If someone can point to something good in that realm, it would be great. /rk

Editor's name; language evolution

Hi rk: the editor is Kevin Farnham, i.e., me. I'll begin signing my blog entries with that link starting with my next post. Thanks for bringing that up.

It's an interesting question you bring up: the evolution of computer languages versus human languages. The evolution of human languages is something I've spent some time studying. One major difference between the two is that human languages are never invented from scratch. They tend to evolve and become unique due to groups of people being isolated from one another at some point during history. Computer languages, meanwhile, can be created from scratch. Though, as you imply, most new languages are invented in response to existing languages, as a way to solve new problems more efficiently, or eliminate tedious problems that exist in the older languages.