When asked about the two biggest challenges encountered when developing with their current language of choice, fully 61% of respondents answered that the challenge is finding experienced developers. The next most common problem was lack of management buy-in with 30%. Why is there a shortage of experienced developers? What barriers keep management from buying in?
Every developer is as unique as a snowflake, each having a set of skills born out of specific experiences with the IT environments they have worked in. Many IT shops diverge in one way or another from the concepts and standards we all learned in college. What a potential candidate brings to the interview table may not be suited to the culture and processes of a particular IT shop. This is not to say the candidate is not technically qualified. Management wants someone who can bring value to the team, which means the best candidate will have the right mindset for the organization in addition to the right mix of development skills.
Another challenging area for developers is in the area of tools and support. The survey indicates 24% of respondents consider poor debugging tools a major hurdle along with 23% saying that poor tooling support also represents a considerable challenge. Most developers in general write code specific to requirements given. This is a good thing but there is a path less travelled by developers and that is in profiling and performance tuning. Finding bugs is one thing and we all eventually find the problem. But experience with debugging and tuning tools is not often a core developer skill.
Then there is the issue of scalability. The survey indicates 20% of developers find that the language they use to develop in fails to scale beyond multiple cores. If this is true, it’s a big problem. But I think it’s one easily solved because it’s not so much the programming language at fault but it’s more of a need to understand the infrastructure to support highly scalable applications. In theory, JavaEE apps can infinitely scale. Knowing how to leverage the app server container to manage resources from within your code is paramount to high-performance scalability.
It all boils down to what kind of Java developer you have become. Are you the type that bangs out code and get things done quickly or do you take time up front to understand the implications a particular design will have later on? Hiring managers want to know.