Dave Fecak has served as the President and Founder of the Philadelphia Area Java Users' Group since 2000. He is an active blogger on software engineering career topics at http://jobtipsforgeeks.com, and author of Job Tips For GEEKS: The Job Search ebook (http://jobtipsforgeeksbook.com) Professionally, Dave has been a recruiter and consultant for 15 years helping startup and early growth firms to hire software engineers (primarily focused on Java/JVM, Python, Ruby, functional languages, and mobile). Dave is a DZone MVB and is not an employee of DZone and has posted 74 posts at DZone. You can read more from them at their website. View Full User Profile

The Future: Polyglot Programmers

08.28.2012
| 8456 views |
  • submit to reddit

I wrote an article three years ago, “Become a Better Java Programmer – Learn Something Else“, that was subsequently picked up by JavaWorld and DZone and received moderate positive and a bit of negative feedback.  The negative was primarily aimed at my assessment that “perhaps 80%” of the best local Java talent were familiar with at least one of a set of other languages I listed.  Some readers felt the 80% was pulled from thin air (or pulled perhaps from somewhere else), and I concede the number was simply an estimate.  And of course the “best local Java talent” line was also subjective, but time has shown I am a good judge of that.

The gist of the article was that the best Java pros that I knew at the time were either fortunate, curious or ambitious enough to learn other languages and platforms.  Perhaps they wanted to improve their Java skills, to simply climb a mountain because it was there, to have a Plan B in case Java went downhill (article published June ’09, Oracle/Sun deal announced April ’09),  or maybe they knew something I admittedly didn’t know regarding where things were headed.

When I wrote the article, I was offering career advice targeted to Java developers who wanted to continue to be Java developers – learn another language and you should become more effective using Java.  I don’t think I had any real instincts that things were going to change dramatically over the next several years.  I think the dramatic change is now happening, and it’s time to pay attention if you haven’t been.

The concept of polyglot programmers and polyglot programming isn’t new by any means, and I realize that I’m certainly not the first person or the most qualified person (I may be the tallest) to think or write about the subject.  Neal Ford mentioned it over five years ago in a blog post that was quite prophetic.

Think of it this way:  Years ago if you were living in Germany, chances are you only spoke German.  As travel became easier and business spread to different countries, the world got smaller, and it was advantageous or even necessary to learn new languages because the chances of encountering a non-German speaker were greater.  Now many Europeans speak at least a couple languages fluently out of necessity.  If you are a bartender in Rome, chances are you know how to say ‘beer’ and ‘thank you’ a few ways.  The software development world and the options within it have grown vastly, but the need to be productive or conversant in more than one programming language has not historically been a requirement to get ahead.  I feel that has changed, and will continue to change in the years to come.

Since writing my last newsletter I had a couple interesting and vastly different conversations with two technologists that made quite an impression.  One was with a very experienced (>10 years) Java programmer who admittedly had no real programming experience beyond the more common Java tools and API’s (some MVC, JSP) and invested little time trying to keep up with industry trends.  She had many years with the same company and saw very little change in the tech environment.  The second conversation was with a grad student finalizing a Master’s in Comp Sci who had academic, internship, and professional experience (< 2 years) with Python, Java, C++, and Ruby.  He was involved in various tech communities and technology was a hobby in addition to being a chosen profession.

Right now, both of these candidates are quite employable, and as you would expect the experienced Java programmer will earn more at present.  If I had to buy stock based on future earnings and career advancement  in these two candidates today, I’d put all my money and mortgage my house on the grad student.  This Java pro is, at this point, not even aware that the world has passed her by.

Historically, most software shops were hung up with hiring requirements that listed minimum amounts of acceptable experience with a technology.  I can recall having to explain to a client a few years ago that the only person that might have had the amount of Spring experience they were seeking was Rod Johnson (true story).  When I speak to my clients now, it is clear that most are more interested in aptitude over experience with specific languages or tools, as well as an understanding of certain core engineering concepts and principles  (perhaps multi-threading or functional programming) in addition to a set of character traits that tend to result in productive engineers.

The metaphor I often use is to liken engineers to athletes.  A great athlete can throw a football or a baseball skillfully and is able to use both a hockey stick and golf club to make solid contact with a puck or ball, once the athlete makes some simple adjustments to the chosen object.  Likewise, a truly great engineer should be able to succeed using any of several languages, once they understand the syntax and basics.

With the wide variety of robust languages and platforms currently available and ready for prime time, it is hard to imagine that any one or two will become as dominant a force as Java and .Net have been over the past 10+ years.  I believe the days of hearing ‘We are a Java shop’ or ‘We are a Python shop’ are behind us.  The most innovative shops are mixing technologies based on using the language/platform that is the best fit for the task while also factoring in the experience level of the team members.  To remain valuable and relevant, it is becoming necessary to write software in more than one language.  Having the ability to produce in more than one language may be a luxury today, but it is becoming very clear that this will be a necessary skill for tomorrow’s engineer.

Published at DZone with permission of Dave Fecak, author and DZone MVB. (source)

(Note: Opinions expressed in this article and its replies are the opinions of their respective authors and not those of DZone, Inc.)

Comments

Liam Knox replied on Wed, 2012/08/29 - 8:21am

How many Cobol guys have learnt a new language?

Dave Fecak replied on Wed, 2012/08/29 - 10:56am in response to: Liam Knox

Sounds like the start to what could be a joke.  I'll play along.  I don't know.  How many?  :)

If that was a serious question, there are certainly some Cobol developers that are no longer developing in Cobol and have moved on to something else.  I couldn't tell you how many or what percentage.

Dean Schulze replied on Wed, 2012/08/29 - 11:01am

I recently chose the (Google) Go language for my needs for a good, cross-platform scripting language.  While golang is a compiled language that produces binary executables its toolset and fast compilation allow it to be used like a scripting language.

Python is an excellent scripting language, but it is fragmented.  Any platform may have 2.7 or 3.x installed and 3.x is not backwards compatible with 2.7.  Sigh...

I've made golang my language to go (no pun intended) along with Java (and Python, and C, and C++).

 

Mark Unknown replied on Wed, 2012/08/29 - 11:13am in response to: Liam Knox

What's Cobol?  Oh... COBOL ;)

Well I can attest to at least more than one. And does Micro Focus COBOL count? Then many more than one.

 

Thomas Eichberger replied on Wed, 2012/08/29 - 1:43pm

I was teaching Java to a lot of COBOL developers, so, yes, there are COBOL developers who learn other languages:-)

 

Stephane Vaucher replied on Wed, 2012/08/29 - 10:31pm in response to: Liam Knox

Many, chances are they might know DDS, SQL, CL on iSeries. On mainframe, they would likely know JCL, CICS and SQL. Already, that's much better than the average Java programmer who would not even look at SQL (focusing on Hibernate/EJBs to avoid understanding a data tier). If they are part of any modernization initiative, they would obviously look at new technologies or do some integration (C/Java). The main issue is with the OO paradigm shift, which can be less than obvious.

Lund Wolfe replied on Sun, 2012/09/02 - 1:52am

You are probably right about betting on the developer who knows more languages.  They will likely move higher up the hierarchy and make more money and be eligible for many more jobs and be comfortable in many more jobs.  However, if I had to use software written by either one, I'd take the one written by the better developer, regardless of language.

There is more to software development than the base language.  You can learn the Java syntax in two days.  If you're bored and the only thing you can think of is learning a new language, you may be simple minded.  I'm also reminded of the expression, "jack of all trades, master of none".  I wear many hats but I'm not actually good at anything.  Specialization can be a good thing.

That said, many jobs require someone who knows a bit of everything.  Front end web or device development may require many languages or it may just require a new Java framework.

I'm a java java java snob because I like Java.  The most important thing is that you like the language and tools that you use day in and day out.  If you find something that works better for you, then power to you.  I know I learned a lot of languages beginning with BASIC and assembly to many others before I discovered Java, at which time I said I'll take any job where I can do Java.

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.