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 68 posts at DZone. You can read more from them at their website. View Full User Profile

Advice From A JUG Leader II – Debate Breakdown

08.07.2012
| 2260 views |
  • submit to reddit

It’s been a week since I posted “Advice From A JUG Leader – Learn a Different Language” and it seems to have ruffled at least a few feathers in the Java community.  As the article has been re-posted and bounced around on Twitter, I have had some opportunity to interact with some members of the Java community who have strong feelings about the content.  None have called for my death, and the debate has been almost entirely polite thus far.

I think and sincerely hope that the Java community understands that the impetus for writing this article was an observation that many in the Java community are simply not aware of the trends in the industry, and by the time those trends become standards it is too late.  These are the people that, if the train does come, never heard it approaching.  My purpose is not to predict or encourage the demise of Java, as that should not and will not happen.  The Java community is deeply loyal to Java, perhaps even to a fault, and I hope these articles serve as a wake-up call that the most important loyalty should be to your career as a software professional and to neither an employer or language.

I have noticed from these mini-debates is that defenders of Java, at least in my interactions so far, seem to primarily be highly experienced developers that perhaps have the most invested in Java.  As I mentioned in my original article, I don’t expect known Java experts to feel any changes.  At least a few of the comments seem to come off as rants against youth (“go play your Xbox“?) and start-up culture and not a defense of the language’s health itself.  I haven’t seen the younger generation of Java pros, but I know they are out there.  I don’t seem to see Java enthusiasts attacking faults in the alternative languages or praising Java for a superior feature set.

Some comments seem to admit that Java has some shortcomings just like other languages, but it’s what we have for now.  That is good enough for some people – particularly those that have been in Java for a long time – but not good enough for many developers who want to work with the best available.    The arguments so far have been, in no particular order:

Argument #1 – Don’t Use Alternative Languages Because The Languages are Unproven, and/or Only Start-ups Use Alternative Languages

“And, don’t forget, 70% of startups will fail within the first ten years. So, I’m not inclined to base my decisions on the faulty and unproven ability of start-ups to make sound business decisions for themselves.” – Comment from TSS reader, click for full context

Some of the languages are more proven than others obviously, but we can’t ignore the fairly regular news regarding established firms transitioning to alternative languages and platforms or taking a polyglot approach. I would hardly call companies like Twitter, YouTube, foursquare, LinkedIn and Google immature start-ups at this point.  If you are going to argue that there are plenty of other shops that use Java, we all know that.  The point is some start-ups (those most apt to use these alternative languages) have made bad decisions (as have large firms), but to call the languages themselves ‘unproven’ at this point would not be accurate.  No guilt by association here.

Businesses don’t make decisions, people do.  I don’t think we should fall into the trap of lumping together the decisions made inside of some start-ups as any proof of language relevance at this point.  When a host of start-ups fail due to their language choice alone, that conversation can be had.

If you were around back in the late nineties there were a lot of technology start-ups with funny sounding dot-com names.  Many of these companies were using a three or four year-old programming language called Java.  They could not have predicted that Java would grow to be as popular as it is today.

Note:  Python is older and Ruby is about the same age as Java, Scala has been around for 9 years, Clojure for 5 years.

Argument #2 – If You’re Bored With Java, That Is No Reason To Branch Out

“Becoming “bored or frustrated with Java” is a pretty poor excuse for branching out. As a professional, I’m not paid to feel entertained and broadened in my horizons. I’m paid to get things done as efficiently and as well as I possibly can… Go home and play your Xbox to relieve boredom. Don’t make your employer pay for yet another language learning curve so that you feel less bored and frustrated.” – Comment from TSS reader, click for full context

Simply being bored with Java could be enough for someone to look for other alternatives.  I think the bigger issue is that technologists who pay attention to developments in other languages are envious of the features that other languages provide.  Today, I feel that a smaller percentage of the Java community explore alternative languages based either on less curiosity or less opportunity.  As the Java community at large is exposed to these other languages more and more, I would expect you will see many more defectors.  The early adopters of Java were the most curious C++ or C developers who were looking for something different and stumbled on Java, and the most curious of Java pros stumbled on these other languages over the past few years.

Argument #3 – The Assumption That Most or All Of These Alternative Languages Will Be Dead In 5-10 Years

“If I’m off learning optional languages, I’m falling short of what I get paid to do. What’s more, I may have decided to do some development in one of the latest and greatest languages that, in a few years, will fall by the wayside, and now I’ve left my employer with a bunch of projects that will have to be re-written into a language that is currently active and supported.” – Comment from TSS reader, click for full context

Many of the early adopters of Java, as I mentioned in my article, have already been exploring some of these alternative languages for some time now.  Often they were not initially paid to do so.  Could some of these languages be dead in 5-10 years?  Sure.  Most of the languages I’m thinking of when I talk about alternative languages are already 5 years old, and some much older.  Even the young Ruby/Rails combo has been around for over 5 years.

Did people make the same assumption about Java back in the late nineties?

Argument #4 – Look At The Evidence That These Alternative Languages Are Not Being Adopted/Used/Sought After

Some defenders of Java have been pointing me to various statistics as proof that these alternative languages are not being used, not being sought after by employers, or not being adopted.  I would cede that none of the current crop are even close to Java in terms of popularity today.  I was sent to this link from Networkworld.com that says Java developers are the “most difficult tech pros to land, followed by mobile developers“.  I wonder where the demand for mobile developers was three years ago?  Would mobile development be a valuable skill to learn at this point?

As a recruiter, I’m also having a bit of a harder time finding Java developers now.  One of the main reasons for that is pretty simple – a lot of the people that I know that used to do Java work aren’t interested in doing Java work any more.  Over the years I’ve met a fair amount of experienced Java developers that were dying to get a job doing mobile work, Ruby work, Scala work, etc., but I’m not finding too many Ruby or Scala programmers with five years out of school looking for their first Java job.  Maybe it’s just me, but I don’t see that…ever.

Another link was given to the Tiobe Index, which is pretty widely used to highlight trends of language popularity.  It is based on search engine hits.  All indexes like this have some obvious flaws.  If you read Tiobe’s Definition, the phrase “Java programming is dead” will actually improve Java’s position in the rankings. So absorb these ratings with that in mind.  They measure chatter, which could be positive or negative.

Tiobe Index July 12

Tiobe Programming Community Index for July 2012

Well, the takeaway from this graphic, for me anyway, would be that Java dropped significantly and Objective-C seems to be gaining popularity dramatically.  But this could be some anomaly in a given month.

Tiobe Long Term Trend

Tiobe PCI 10 Year Trend

“Java has slid only recently and barely while the much touted JVM languages aren’t even on the radar” – Comment from Dzone.com reader, click for full context

The green line that is Java seems to be trending downward on a fairly regular basis since ’02.  I’m not sure I’d refer to a 10 year decline as ‘recent’ in the technology industry.  Again, I don’t think the Tiobe index is the ultimate indicator, but I wouldn’t point someone to this statistic to support an argument that Java is healthy.

Objective-C wasn’t listed in 1997, was ranked #46 in 2007, and now stands at #3 on the index.  If you had picked up Objective-C a few years ago, say in ’07 when it was not entirely popular, you would probably be doing well today as the demand for iOS work is quite high and the supply of developers is quite low.  In ’97, Java was #5 – one spot behind VB and two spots behind COBOL.

Conclusion

The arguments against learning a new language or using a new language in production were probably the same back in the late nineties when Java was still new.  People surely came to the defense of C and C++ saying that we didn’t need a new language then.  It’s progress and subsequent resistance to change, and in the technology industry change can sneak up on you pretty quickly if you aren’t paying attention.

I feel that many in the Java community may not be paying close attention. 

If you were a C++ programmer messing around with applets back in ’96, you’ve already been through this transition once.  What I’m hearing now from experienced folks is that these alternative languages are for start-ups, “Trix are for kids!“.  I know quite a few gray haired former Java developers that are getting paid to write code in other languages now, and I think they would tell you that the alternative language market isn’t just for kids.  Were you using Java in a start-up back in the day – were you one of the kids?

My purpose in writing these posts is to make a certain element of the Java community aware of what is out there, and that in my opinion now is an opportune time based on external market forces to explore other languages.  This is not an attack on Java as a language or on the people that choose to write in Java.  I’ve dedicated much of the past 12 years to the Java community and I don’t intend to change that now.  I expect that I will be involved with Java professionals for several years, helping them to find jobs and scheduling great events for my JUG.  I chose to change the focus of my business beyond Java, and my suggestion to Java professionals would be to at least consider and research doing the same.

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.)

Tags:

Comments

Steven Goldsmith replied on Thu, 2012/08/09 - 10:44am

Basically, there's nothing wrong with learning a new language. But, you are trying to make an argument based on charts (some would argue they are worthless because of the method they use) and other non-empirical "evidence" to validate your preconceived view. I've been working with Java since 1995 (programming since 1980) and I can tell you there's never been an abundance of quality developers, period. I literally have to go through five or ten interviews (pre-filtered on the phone) to get one decent developer. This is in the Tampa Bay area, so it's not like it's a small city and we recruit nationally (so your assertion about young programmers not wanting to learn Java is a bogus reason for not finding quality candidates). How many employers grill candidates on OOP principals, patterns, databases, networking, systems, etc.?

Again, I think your focus is very narrow since a language constitutes 5% of the equation. To be well rounded you should be an expert in concepts, principals, languages, frameworks, OSs, virtualization, systems, networking, governance, etc. The iOS argument is kind of bogus as well since a lot of mobile developers use cross platform tools in a meta language that's not Objective C. It's really more important to understand the concepts of meta programming and code generation. I believe seeing things through recruiter colored glasses has clouded your judgement.

 http://jamiei.com/blog/2009/07/the-delphi-community-from-the-outside

Dave Fecak replied on Fri, 2012/08/10 - 8:30am in response to: Steven Goldsmith

Steven - Thanks again for the comments. Let's start here:

"...you are trying to make an argument based on charts (some would argue they are worthless because of the method they use) and other non-empirical "evidence" to validate your preconceived view."

You are correct in that there are exactly two charts in this article, though one could see it's pretty much the same info presented in two different formats for different time periods. 

You are also correct that I do use some anecdotal evidence to support my view.  I think you have some anecdotal evidence in your response too, no?  ("I literally have to go through five or ten interviews (pre-filtered on the phone) to get one decent developer.)  I guess we're both guilty of that.

The bigger problem lies here.  The charts provided in my article were not used to bolster my argument (spoiler alert: these charts were not even things I found).  These were charts used as evidence by people disagreeing with me.  So no, I'm not trying to make an argument based on charts.  I included the charts because they were used by some folks who felt they supported their argument, and I included them here because I felt the charts were misinterpreted.

 Perhaps that wasn't clear from the article - where I said that the 'link was given to the Tiobe index', I didn't mention that that particular link was provided by a naysayer.  

Did you actually read the article or did you just see the pictures and start writing a response? 

"I can tell you there's never been an abundance of quality developers, period. I literally have to go through five or ten interviews (pre-filtered on the phone) to get one decent developer."

+1  Not sure that I said there was ever an abundance of quality developers.  I am having a harder time lately finding Java talent as I mentioned in the article, and a lot of the higher-end (more advanced) Java talent that I worked with over the years have moved on from Java.  This is simply a fact in my network, again, based on my experience.  

"This is in the Tampa Bay area, so it's not like it's a small city and we recruit nationally (so your assertion about young programmers not wanting to learn Java is a bogus reason for not finding quality candidates)."

I can't comment on the Tampa area as I've never heard anyone mention the software market in Tampa.  As was mentioned, the majority of my work is done in the greater Philadelphia area, which most consider a pretty active software scene and specifically has had a healthy Java presence.  We are lucky to have several good schools locally as a potential feeding ground for the software scene (Penn is just one of many schools with excellent comp sci programs). 

My assertion about young programmers not wanting to learn Java is a bogus reason for not finding quality candidates?  I'd certainly be interested in hearing an explanation of that, as I don't follow your point.  My point was (and still is) that I am finding it more challenging to find young developers that are looking to do Java work.  If you are finding young developers that are interested in Java work, that's great.  The young developers that I have been working with are typically more interested in other languages.

"Again, I think your focus is very narrow since a language constitutes 5% of the equation. To be well rounded you should be an expert in concepts, principals, languages, frameworks, OSs, virtualization, systems, networking, governance, etc. The iOS argument is kind of bogus as well since a lot of mobile developers use cross platform tools in a meta language that's not Objective C. It's really more important to understand the concepts of meta programming and code generation. I believe seeing things through recruiter colored glasses has clouded your judgement."

This is not the first time you've mentioned that my job as a recruiter has something to do with my assessments of the market.  I assure you that it does.  Unlike, say, a software engineer who typically works for a company and sees things from the inside of their firm, I get to work with lots of companies and see what is happening through various firms.  As, say, a software engineer, you probably are familiar with the engineers you work with (to some degree), perhaps some others in the region that you see at meetups or former co-workers, perhaps some purely online relationships. 

As a recruiter, I'm sure I know much less about software engineering than you but I'd be willing to bet I know a lot more about software engineers than most in the business.  I talk to them about their motivations, goals, ambitions, likes/dislikes about different tools and technologies, and a host of other technical and non-technical topics.  I also have run one of the largest Java Users Groups in the world for over 12 years, so I've talked to a few in the Java community in my day. 

I'm a recruiter, this is true, and I'll probably never know as much about software engineering as you.  That's probably why you don't see any code samples in my articles. I hope your feelings about my profession don't cloud your reading of my material. 

 

James Ong replied on Mon, 2012/08/27 - 12:49pm

Do you have any idea whether Java programmers are still strongly demand in Asian and South-East Asia? There are plenty of Java programmers from India been working in all over the world, I'm curious if you have any conversation with them?

Dave Fecak replied on Mon, 2012/08/27 - 1:05pm in response to: James Ong

James - I don't work in those markets.  I work with Java candidates from many cultures here in the US, but I do not do any work with companies in Asia.

Comment viewing options

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