BT

How To Survive in a Turbulent Job Market

by Ian Roughley on Feb 25, 2008 |

Steven Haines usually spends his time writing about new Java technologies that can help developers in their jobs, however, this week he has turned his attention to those technologies that can help you find that next job.

While the United States may not technically be in a recession, it is in at least a strong correction. The stock market is down, and has been since the beginning of 2008, and corporate acquisitions are on the rise. Already this year Oracle has acquired BEA, Sun has acquired MySQL, and as of this writing, Microsoft is attempting to acquire Yahoo. While many people will survive these acquisitions, some certainly will not. Regardless of the industry that you're in and regardless of how secure your job is, it is in your best interest to be aware of the technologies that companies are looking for in the eventuality that you need to find a new job.

It also needs to be pointed out that the information presented is not complete.  In Steven's own words:

Before I begin, here is my disclaimer: my research was not scientific, I did not survey all available jobs, and I did not contact any recruiters to find out what technologies are most in demand. Instead I reviewed Dice and Monster for keywords and recorded the number of hits that I found. Most of my results came from Dice because I did not find the search interface at Monster as revealing as Dice (Dice was nice enough to include a "skill" parameter that helped categorize the results.) But with the 8000+ Java jobs that I found on Dice, I would argue that my results are representative of the current Java market. And, depending on where you live, your results may vary.

Additionally, the article doesn't report any trends, but rather a snapshot of the current job technologies. 

The results we'll review are from: core technologies, application servers, web frameworks, and persistence technologies.  There are several other categories listed in the original article, which are more specialized in nature. 

Table 1. Core Technologies

Keyword/Skill

Hits

J2EE

7520

Java

6389

JSP

2228

Java/J2EE

1733

EJB

1271

JDBC

1079

JMS

926

Servlet

409

J2ME

146

The first category, core technologies, provides only an overview of the current landscape.  It's very likely that many of the keywords/skills (especially Java/J2EE) would be listed in most positions.  The author confirms this, and points out the the following:

If you're looking at broad categories of Java programming, enterprise Java and Web technologies hold the most jobs. JMS was a listed in 10-15% of the job descriptions and J2ME only accounted for about 2% of the jobs.

Table 2. Application Servers

Keyword/Skill

Hits

WebSphere

2155

WebLogic

1561 + 624 (BEA)

Tomcat

1587

JBoss

882

Jetty

22

Glassfish

17

The application server job market is not very surprising considering that the market share breaks down similarly. WebSphere is in the lead with over 25%, followed closely by WebLogic with a little less than 25% (accounting for duplicate jobs between the search terms "WebLogic" and "BEA"), and then Tomcat with 20%, and JBoss with 11%.

With the increased popularity of Spring over the last few years, this result was a little surprising to me.  To get a better insight to the tends, I headed over to http://www.indeed.com and graphed the top four application servers.  This leads me to the conclusion that, even though WebSphere and WebLogic are in the lead now their popularity is decreasing.  At the same time, the popularity of Tomcat and JBoss is increasing, and learning these application servers may result in more opportunities in the future.

The author also noted an increase in Tomcat:

Probably the most interesting thing to me is that almost 20% of the Java jobs on Dice included Tomcat in their descriptions. This may reveal that many companies are bypassing the Java EE stack in favor of either a standard web technology (Servlets/JSP/JSF) or an alternate framework like Spring

To confirm his observation and the trends in EJB capable application servers vs. servlet containers, I next graphed the trends for EJB vs. Spring.  As most developers would have expected, Spring use is still increasing.

Table 3. Web Frameworks

Keyword/Skill

Hits

Struts

1745

Spring MVC

290

Velocity (and Java)

133

Tapestry

85

WebWork

31

Grails (Groovy)

18

Wicket

14

Stripes (+ J2EE)

8

Cocoon

3

Turbine (and Java)

0

RIFE

0

The topic of the best Web frameworks is probably the most heavily debated topic in the Java community: it is like talking about politics or religion. But the numbers do not lie: as much as you read that Struts is dead, it is not. Almost 22% of all Java jobs on Dice list Struts in their descriptions, which is six times its closest competitor. If you are a Java web developer and you want the highest degree of marketability, you’d better know Struts, even if there are other technologies that are superior or have a more elegant solution to your problem.

The argument the author makes is valid, however, with the release of Struts2 there is the question of whether companies will decide to migrate to version 2 of Struts, or whether they will decide that the time has come to move to a different Java Web framework or another web framework entirely.  Either way, the need for Struts developers will not decrease quickly, due to the number of applications already written using the framework.

Reviewing the trends from Indeed (Struts was not included), presents a slightly different view from the authors table.  There is growth in the usage of all the frameworks, with Spring MVC showing the most improvement over time.

Table 4. Persistence Technologies

Keyword/Skill

Hits

Hibernate

1750

iBatis

99

Toplink

80

EJB3

37

It's no surprise here that Hibernate has a strong lead for persistence technologies.  Graphing the trends (all except Hibernate, and using JPA instead of EJB3) did lead to some surprising results.  Not only is JPA starting to complete against Hibernate (although Hibernate does implement the JPA specification, so this could be overlap), but there is a steady increase in iBatis use. 

Conclusion

In conclusion, the author makes some very good points:

When you develop your enterprise applications, you should become familiar with how to deploy and manage them in WebSphere, WebLogic, JBoss, and Tomcat. You can download all of these application servers at no cost (the commercial products have development licenses so that you can use them for your learning.) Do not assume because you can write enterprise applications that all application servers are the same. You do not want to claim that you are familiar with an application server that you are not and then struggle through it on the job. Take the time to learn it now.

as well as:

As far as technologies, your time is best spent learning Struts, Spring, Hibernate, an AJAX framework, and JavaServer Faces. It is not trivial to learn each of these technologies, but develop a schedule, pick out a few good books, and build a sample application in each. In short, if you can add each of these technologies to your resume, you should have no problem finding a job.

Hello stranger!

You need to Register an InfoQ account or to post comments. But there's so much more behind being registered.

Get the most out of the InfoQ experience.

Tell us what you think

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Email me replies to any of my messages in this thread

Bullshit! by Stefane Fermigier

Most of the graphs are meaningless due to blatant errors in the way requests are constructed. For instance "velocity" or "tapestry" are common words that appear in non-Java related job postings. (Here is for instance a list of jobs descriptions with "tapestry" and not "java".)

Here is a much better graph, also showing strong growth of Seam.

S. Fermigier, founder and CEO, Nuxeo

Re: Bullshit! by Mirko Nasato

Here's an even better one! ;-)

This is pretty much exactly what this industry doesn't need by Bruce Rennie

This goes a long way towards explaining why I run into so many developers that know the latest "cool" technologies but can't actually create software.

My expectation is that developers should be able to learn these things as part of the job. But hiring managers always want it now. In that sort of atmosphere, it's not wonder developers chase these frameworks. And useful skills such as unit testing, refactoring, patterns, estimating, and modelling get the short end. How can we change this?

Re: This is pretty much exactly what this industry doesn't need by Maurizio Turatti

I strongly agree with you Bruce. These kind of pseudo-skills are just the reason why our industry is still totally immature comparing to other engineering fields.
Tell the guys to learn how to design and model a domain using proper patterns instead of a list of acronyms. When a job listing is just full of such buzzwords it is a clear indicator of the poor quality of the employer, in my opinion.
I'm very sad, it seems we still cannot move beyond.

Re: This is pretty much exactly what this industry doesn't need by Ranjiva Prasad

I have always believed that a good developer can learn any technology. Aptitude, attitude and ability are key things I look for when hiring. Every thing else can be picked up on the job

Re: This is pretty much exactly what this industry doesn't need by Francois Ward

Its 50/50 in my opinion. Yes, a good dev can learn any technology. But in this day and age, you can't know and learn everything... Someone who -masters- one of these frameworks (AND is a good developer -too-) will run circle around someone who's learning it as it comes.

Even worse, someone who knows different frameworks and go with the philosophy that "its all the same" will make things worse. So everything is in the balance.

No JSF?! by Dejan Krsmanović

As author does not even mention JSF, I assume I should not waste my time with it, right?

Re: This is pretty much exactly what this industry doesn't need by Steven Haines

I agree that you should deeply interview potential candidates to ensure that they have a strong foundation before accepting their acronyms as gospel. For example, I interviewed a candidate in 2000 that claimed to have Servlet, JSP, and EJB experience and within a couple minutes of talking to him I deduced that he had once used these technologies but did not understand at all how they worked. In a couple more minutes I deduced that he didn't have any basic concept of the fundamentals of computer science, such as data structures, algorithm analysis, design patterns, development methodologies, and so forth.

So the point of my article was not to highlight what skills you should list on your resume, or even that you should have a casual knowledge of, but rather these are skills that employers are looking for when seeking new employees. So the two step process could be summarized as (1) become a strong developer (and learn the fundamentals) and then (2) learn, understand, and implement the applied technologies that employers are looking for.

Because I have to agree with Francios that when hiring someone it is better to find a good developer that is already familiar with the technologies that my company is using. True, a good developer can pick up the technology on the job, but are employers willing to pay for the learning curve? Some will, such as larger organizations that are investing more into their R&D team, but many won't because they'll want their new hires to be productive as soon as possible.

What do you think? Is that reasonable?

Thanks,
Steve

Re: No JSF?! by Steven Haines

Sorry, when Ian summarized the article, he didn't include my section on Web Client technologies, which arguably may not be the best place for JSF to be categorized, but it happened to be where I included it. My search results yielded 657 "JavaServer Faces" listings and 688 "JSF" listings, so accounting for some overlap, JSF did very favorably, probably accounting for 10-15% of the job listings I found.

If you read the original article, for applied technologies I explicitly recommended learning JSF :)

Thanks,
Steve

Re: Bullshit! by Steven Haines

Thanks Mirko, that graph is awesome!

Stefane: I came across the same problem of trying to filter out non-Java jobs, which was one reason I relied so heavily on Dice - employers can post specific skills they are looking for, not just including the skills in their descriptions. But then it limited me when it came to skills that they don't explicitly define, such as Velocity and Tapestry. And I had a tough time using their UI because they kept converting RIFE to LIFE, which yielded quite a few more jobs :) (btw, if you want to search for RIFE, or any other word that Dice likes to "correct" for you, enclose the term in quotes)

I'm curious why my Dice searches came up so low on SEAM (46 hits). Why do you think this is? Are companies not explicitly asking for SEAM even though they're using it? Are all the SEAM jobs being advertised elsewhere? Or does SEAM just need more time to fully take off?

Thanks,
Steve

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Email me replies to any of my messages in this thread

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Email me replies to any of my messages in this thread

10 Discuss

Educational Content

General Feedback
Bugs
Advertising
Editorial
InfoQ.com and all content copyright © 2006-2013 C4Media Inc. InfoQ.com hosted at Contegix, the best ISP we've ever worked with.
Privacy policy
BT