Digital Edition

SYS-CON.TV
Interviewing Java Developers With Tears in My Eyes
Do you call yourself a Java developer?

During the last week I had to interview five developers for a position that required the following skills: Flex, Java, Spring, and Hibernate.  Most of these guys had demonstrated the 3 out of 10 level of Flex skills even though each of them claimed a practical experience on at least two projects. But this didn’t surprise me – Flex is still pretty new and there is only a small number of developers on the market who can really get Flex things done.

What surprised me the most is a low level of Java skills of most of these people. They have 5-8 years of Java EE projects behind their belts, but they were not Java developers. They were species that I can call Robot-Configurator.  Each of them knew how to configure XML files for Spring, they knew how to hook up Spring and Hibernate and how to map a Java class to a database entity. Some of them even knew how to configure lazy loading in Hibernate even though not all understood why it’s needed.

Two out of five developers who claimed seniority in Java proved to have a mid-level understanding of this programming language. The other three really disappointed me.  They didn’t even know the basics of Java…One of them had no idea of what interfaces are for. The other one was still killing a thread by calling a deprecated ten years ago method  stop(), the third guy had issues explaining the data flow of a standard Web application built with Servlets and JDBC.

Next time you’ll be interviewing a Java guru, ask him/her the following question, “There is an HTML form with a button Submit, a servlet and a relational database with the table Customers.  The users enters a First and Last names of the customer, presses the button Submit, and you need to write the code that would return the detailed data about this customer. Explain IN DETAILS the entire data flow and the HTML/Java processing you’d need to perform.”

Do not forget to repeat that the candidate is not allowed to use neither Spring, nor Hibernate.  You might be surprised...

I like Java, and it’s sad to see these herds of creatures who truly believe that they are Java developers.  They aren’t

About Yakov Fain
Yakov Fain is a Java Champion and a co-founder of the IT consultancy Farata Systems and the product company SuranceBay. He wrote a thousand blogs (http://yakovfain.com) and several books about software development. Yakov authored and co-authored such books as "Angular 2 Development with TypeScript", "Java 24-Hour Trainer", and "Enterprise Web Development". His Twitter tag is @yfain

In order to post a comment you need to be registered and logged in.

Register | Sign-in

Reader Feedback: Page 3 of 3

When I am interviewing candidates I ask them to tell about one of their java projects from a strict technical point of view. That quickly reveal their skill level. People that know their stuff, starts with the architecture goes down to usage of the main desing/tool artefacts and asks me if I got it or if they have to elaborate further. The other candidates, are rambling about the business, revenue and a lot of other things I never asked for.

The inherent problem with software development (exaggerate by Java) is that there are no clear compentence differentiators, as there are in many other engineering/science professional areas.

For example, nobody would even think about letting a person that just got their medical degree perform advanced eye surgery. However, in our business this happens all the time.

Why, this is the case; is the topic of a PhD thesis on its own. One part of the explanation is the (rapid) pace of the technical evolution. Another part is the focus on paid-by-hour instead of paid-by-task. The latter rewards working smarter and faster and the former the opposite.

Recently in my new job, i was asked to review code, written by their best java programmer. First thing i noticed was this ->

private void debug(String msg) {
if (log.isDebugEnabled()) {
log.debug(msg);
}
}

Not sure, how to tell my tech lead, he is good programmer, but not experienced enough.

@jondcruz I'm looking for programmers of type 2 as you put it. I'm not interested in Google monkeys who say I don't read tech. books as I can find everything on Google. The problem is that those who don't read book don't know what to look for on Google other than a code snippet that they immediately need (a bubble sort in Java).
The biggest issue with the interviewees that disappointed me is that they don't fking care! Can a normal person spent years configuring Spring/Hibernate without thinking of how things work under the hood? Not deep under the hood, but under the surface?
As to questions on Flex, send out your resumes nationwide just for the sake of getting phone screened in Flex. One day I'll publish a set of Flex questions, but for now get intimately familiar with item renderers, custom components and how they talk to each other and Flex/Java workflow using BlazeDS.

@davidnwd You are very conservative. You'd need to fire 2/3 of the team.

On a large project for a media conglomerate, I was asked to oversee development in the middle of the project. After 1 week I went to my manager and said, "I can reduce cost by 30% and improve our productivity 50% in one day." He replied to do it, but then I said, "you don't understand. I need to fire 1/3 of the team."

This got his attention, and, long story short, we did just that. One "15 year" Java developer almost came across the table and hit me. What was true, however, was that these contractors were hired with little of the vetting you did to these interviewees. They simply didn't know Java. I think many outright lied about their skills, and hoped they could pick J2EE up fast enough to not be found out.

Since I'm currently in the interviewing stage, (just laid off June 2nd), this post sorta struck a nerve. After reading it a few times, and then again a few more times, I can see where you're coming from. And it sounds like you at least gave them worthwhile/practical questions that truly tested their java level.

There's a big difference between a programmer who solely uses Google to solve his coding problems or write his code, and doesn't care to learn. There are other programmers who try to solve it themselves, consult their stack of books, ask their peers, and -- if those don't work -- go to Google. Then there are those programmers who were lucky enough to have started using Java since the beginning of Time. They not only know the ins and outs due to a decade-and-a-half of experience, but they might also be the founding developers of a framework or other open source project.

I guess my point is, if you're that third type of programmer, make sure you ask the interviewee practical questions that pertain to either the job in question, or their project background.

I've been in interviews where after a few of what I call "architect" questions, it was deemed that I didn't know Java. Ok. Put a machine with an IDE, or hell -- TextPad and a compiler -- in front of me, and I'll show you I know it. During those types of "architect" question interviews, I've never been asked about my past experiences and how I actually achieved my coding goals.

Sorry, Yakov, as this is not directed at you, (since it appears you gave them questions that had practical usage.) It's more toward those interviewers out there that are reading this blog. Please ask those who you consider not as knowledgeable as you in the ways of Java a chance and ask some practical/hands-on coding questions. Make these practical questions about either the job they're trying out for, or their past experiences.

Also, I'm really curious as to what type of questions you'd ask a Flex developer, Yakov. I've been using Flex for the frontend since Aug 2008, using BlazeDS to talk to a JEE service layer, (which then talks to a Hibernate layer). (Heh. I'm not a Robot-configurator, as I tend to want to learn what I'm configuring and why it works. Cyborg-configurator? Part robot, part human?)

@jriddler

So I must be an "old fashioned programmer" too, btw, a happy one :)

During my career I have meet many developers who had no clue about what was going on under the hood. Usually they get desperate when something go wrong.

IMHO, a developer must have solid knowledge of all technologies used in their projects (at least this have proved to be invaluable for me).

Today's programmers don't need to actually know anything outside of having good googling skills. It is debatable that a given knowledgeable programmer will be more productive than a google hacker. You are simply an old fashioned programmer dude.


Feedback Pages:




ADS BY GOOGLE
Subscribe to the World's Most Powerful Newsletters

ADS BY GOOGLE

The explosion of new web/cloud/IoT-based applications and the data they generate are transforming ou...
CI/CD is conceptually straightforward, yet often technically intricate to implement since it require...
Containers and Kubernetes allow for code portability across on-premise VMs, bare metal, or multiple ...
Enterprises are striving to become digital businesses for differentiated innovation and customer-cen...
Digital Transformation: Preparing Cloud & IoT Security for the Age of Artificial Intelligence. As au...
DevOps is often described as a combination of technology and culture. Without both, DevOps isn't com...
DXWorldEXPO LLC announced today that All in Mobile, a mobile app development company from Poland, wi...
The now mainstream platform changes stemming from the first Internet boom brought many changes but d...
DXWorldEXPO LLC announced today that Ed Featherston has been named the "Tech Chair" of "FinTechEXPO ...
Chris Matthieu is the President & CEO of Computes, inc. He brings 30 years of experience in developm...
Bill Schmarzo, author of "Big Data: Understanding How Data Powers Big Business" and "Big Data MBA: D...
Andi Mann, Chief Technology Advocate at Splunk, is an accomplished digital business executive with e...
In this presentation, you will learn first hand what works and what doesn't while architecting and d...
The Internet of Things is clearly many things: data collection and analytics, wearables, Smart Grids...
To Really Work for Enterprises, MultiCloud Adoption Requires Far Better and Inclusive Cloud Monitori...
We are seeing a major migration of enterprises applications to the cloud. As cloud and business use ...
If your cloud deployment is on AWS with predictable workloads, Reserved Instances (RIs) can provide ...
Disruption, Innovation, Artificial Intelligence and Machine Learning, Leadership and Management hear...
We build IoT infrastructure products - when you have to integrate different devices, different syste...
Consumer-driven contracts are an essential part of a mature microservice testing portfolio enabling ...