DZone
Thanks for visiting DZone today,
Edit Profile
  • Manage Email Subscriptions
  • How to Post to DZone
  • Article Submission Guidelines
Sign Out View Profile
  • Post an Article
  • Manage My Drafts
Over 2 million developers have joined DZone.
Log In / Join
Refcards Trend Reports Events Over 2 million developers have joined DZone. Join Today! Thanks for visiting DZone today,
Edit Profile Manage Email Subscriptions Moderation Admin Console How to Post to DZone Article Submission Guidelines
View Profile
Sign Out
Refcards
Trend Reports
Events
Zones
Culture and Methodologies Agile Career Development Methodologies Team Management
Data Engineering AI/ML Big Data Data Databases IoT
Software Design and Architecture Cloud Architecture Containers Integration Microservices Performance Security
Coding Frameworks Java JavaScript Languages Tools
Testing, Deployment, and Maintenance Deployment DevOps and CI/CD Maintenance Monitoring and Observability Testing, Tools, and Frameworks
Culture and Methodologies
Agile Career Development Methodologies Team Management
Data Engineering
AI/ML Big Data Data Databases IoT
Software Design and Architecture
Cloud Architecture Containers Integration Microservices Performance Security
Coding
Frameworks Java JavaScript Languages Tools
Testing, Deployment, and Maintenance
Deployment DevOps and CI/CD Maintenance Monitoring and Observability Testing, Tools, and Frameworks
  1. DZone
  2. Data Engineering
  3. Databases
  4. The Future: Polyglot Programmers

The Future: Polyglot Programmers

Dave Fecak user avatar by
Dave Fecak
·
Aug. 29, 12 · Interview
Like (0)
Save
Tweet
Share
12.11K Views

Join the DZone community and get the full member experience.

Join For Free

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.

Programmer (hardware) Java (programming language) Polyglot (computing) Software development

Published at DZone with permission of Dave Fecak, DZone MVB. See the original article here.

Opinions expressed by DZone contributors are their own.

Popular on DZone

  • Upgrade Guide To Spring Data Elasticsearch 5.0
  • 5 Factors When Selecting a Database
  • Load Balancing Pattern
  • The Quest for REST

Comments

Partner Resources

X

ABOUT US

  • About DZone
  • Send feedback
  • Careers
  • Sitemap

ADVERTISE

  • Advertise with DZone

CONTRIBUTE ON DZONE

  • Article Submission Guidelines
  • Become a Contributor
  • Visit the Writers' Zone

LEGAL

  • Terms of Service
  • Privacy Policy

CONTACT US

  • 600 Park Offices Drive
  • Suite 300
  • Durham, NC 27709
  • support@dzone.com
  • +1 (919) 678-0300

Let's be friends: