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 1 of 3

Dear Sir,
Please kindly post the answer to your last question.
I am not finding the answer on google and yahoo.
Thanks you very much,
Sincerely yours
Patel Kumar

@rdgflex - I think you miss the point completely. While breadth is important, lack of depth shows itself in 'smelly' code, bad design and maintenance nightmares, sooner or later.

I think it is the attitude who work with.
Also we all work for money in the first,but as we work,we should have enough knowledge to solve any problem.With google any guy can search, can fill the answer in all blank space.Any guy know how to find the answer,but not why the answer is.

I think that who know why will like programming more than the money.

I like coding.

I've heard the same comments from people who used to code in C, Basic, and then on bare metal. Despite the legitimacy of their claims at the time, the market for people who can understand the intricacies of 'malloc' had dried up within a few years. I agree with the suggestion that 'good' developer a rare, but that's not really news. Just make sure that you don't get so caught up in technical trivia that you loos the capability to code faster than two guys working for half the price.

And what makes things funny, that there are people who are leaving comments stating that by asking the basic questions like how to stop a thread or explain a standard HTML-servlet-JDBC data flow I wanted to show off and prove that I'm smarter than others...

And what really disappoints me that one of these "Java developers" who's hiding by meaningless nick will filter out my name from the technical book searches. I'm sure, he knows how to configure Google search to do this.

Happy coding!

BTW ... remind me to filter out "Yakov Fain" from technical book searches.

Wow. Your arrogance is a bit much here. You hire people that are smart and can come up to speed quickly, especially with newer technologies.

I actually had an interview with someone a few years ago that has a very similar style to yours. He liked to show how much more he knew about Java than I or anyone else did, until I blew him away with a question of my own (related to threads and JDBC). After that, I thanked him for his time and informed him I would not be interested in the position. The look on his face was priceless.

I believe that java developer must be good enough with java but the most important too in my vision is how much he love java .. if he like it too much he can learn more and more not depending on his Job and it's related technologies.

If you don't mind Sir , Could You plz tell us the 10 levels of skills with flex developers because I have good knowledge with adobe flex and certified java programmer too and now I making integration between them and I love to know all requirements to get good work with those 2 wonderful technologies.

thanks
M.Adam

I think the author has an outdated paradigm for what software development as become. It's no longer about being a "Java developer" or "C/C++ Developer" anymore. Now, the demands of the web required developers to be jack of many languages, which implicitly means master of none.

Let's face it. To be a "Java developer", per the author's standards, that alone requires years and years of experience. Today, as a typical web developer, the breadth of knowledge required of me is staggering. Again, analogous to my statement above, increased breadth is inversely proportional to depth. As a web developer, I must know HTML, CSS, Javascript, Flex, Flash, Actionscript, XML, XSLT, Java, Spring and Apache CXF frameworks, MySQL, DB2, Sybase, Oracle, RPG, CLP, DDS, JBoss, Tomcat, iSeries, Linux. Oh, and, of course, my employer doesn't want the expense of a graphic artist, and so I must know quite a bit about UI, Adobe CS4 (Photoshop, Fireworks, Illustrator).

So, sorry if I come to your condescending interview and you expect me to have the exact set of skills that you possess. Maybe a bright interviewer would look at it this way. How flexible is this candidate? How quickly does s/he pick up new technologies? How clean and well structured is the code that they write? If the answers to these questions are positive, they can probably come up to speed on doing things your way within a matter of weeks.

Let's face it. The number of permutations possible for constructing a web architecture is phenomenal. Most of us are lucky to find enough on-the-job time, coupled with tons of personal time, to acquire sufficient knowledge to exercise the skill set demanded within our given architecture.

So, to come to an interview that is conducted like a college oral exam says far more about the narrow-mindedness of the interviewer, who probably has a subconcious alternate purpose for the interview: to show how smart he is and how dumb everyone else is because their focus of knowledge hasn't been identical to his own.

R. Grimes

I have a thought about the majority of the posters here: if your coding is as bad as your grammar, it is a wonder any of you have jobs. I'll make an allowance for those with English as a second language, but you native speakers should be ashamed.

They make these tools - word processors - that come with amazing tool subsets such as spelling and grammar checkers. Consider checking those things out. Perhaps you would appear less illiterate online. The points of your posts are completely obscured by your inarticulate use of the English language.

Hi Yakov,

I really take into consideration what Joel Spolsky says about job interviewing: hire only "smart and get things done" people.

If you are smart enough, gaining new skills will only be a matter of weeks. If you get things done (gtd) you will be productive.

This is also our approach in hiring people. Well, to be honest my company is very small and actually we only hired one person.

He didn't know anything about Flex, had only some old fashioned PHP coding skills but we mentored him a lot and within a few weeks he became productive.

Even if he is very young and never had the chance to program in assembly on 8 bit machines as we did.
But he is smart and get things done.

Smart/gtd people are hard to find on the job market, usually they are all hired or aren't on the job market because they are young students (we offered our employee to work with us before he finished his studies and waited for him).

Best regards and good luck!
Alessandro Ronchi

I've been a professional software engineer for over 25 years. Oracle, Borland, Novell. A handful of unknowns. I find it curious how the software interview has changed over the years. You write code on a whiteboard to solve some mini puzzle. Software Engineering is the only profession that does this. If you are an architect, I don't think they ask you to design a bridge during the interview. If you're a fireman, they don't set the trash can on fire and see if you can put it out.

What should matter is what you have already accomplished, and what your design was. Then do a full background check on references to make sure it is not B.S. If you ask a whiteboard question, instead of having that person write code from scratch, have a pre-written piece of code and ask, "what does this do?", and "How would you improve it?". You will learn a lot more about the interviewee than having them write some code to reverse a string.

This problem is not unique to Java. Try to find programmers who can hand craft simple html code, or who have a working knowledge of databases beyond how to create a table in Access. They are out there, but they are a small minority. And, you certainly cannot tell who they are from a resume or interview. Sit them down and have them create something that actually works.

Concerning comments by JavaServedHot, I could not disagree with you more. I have interviewed a lot of people with your background, and even hired a few. That's how I learned that the only way to hire people is to sit them down and have them demonstrate they can do what they say they can do.

Very Interesting debate. Here is my input. Confession time. I have made a career out of fibbing about of java skills.I switched from mainframes to java to content management to portal to the next hot technology. Like they say proof is in the pudding. I have been a consultant all my life. Not to blow my own horn but I have never had a gap between my umpteen gigs I have done so far. I wouldn't call myself an expert at any of the technologies I have worked in but I have written decent code and never had any complaints about my code. Google has been my friend in my quest to learn new technologies on the job. So in my experience if you can ace a Java interview just by reading up on the technology and can learn it on the job go for it. This is the classic chicken and egg situation and this in my opinion is one way to break the deadlock.(Cant finish the post without throwing a techie term)

@hell2009

I think 2 points: its a lot code for only logging messages - just write log.debug(msg); and configure your logging framework right. But writing it that style has also pros when used right - log.isDebugEnabled() should be used to prevent evaluating an expensive toString()-call on your object, so I think it would be OK to write it like

private void debug(Object msg) {
if (log.isDebugEnabled() && msg != null) {
log.debug(msg.toString());
}
}

Well thats only about the code, probably the real question is why he uses logging for debugging code (instead of a debugger) ..


Feedback Pages:




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

ADS BY GOOGLE

The question before companies today is not whether to become intelligent, it’s a question of how and...
While some developers care passionately about how data centers and clouds are architected, for most,...
ChatOps is an emerging topic that has led to the wide availability of integrations between group cha...
As DevOps methodologies expand their reach across the enterprise, organizations face the daunting ch...
As Marc Andreessen says software is eating the world. Everything is rapidly moving toward being soft...
You know you need the cloud, but you’re hesitant to simply dump everything at Amazon since you know ...
Is advanced scheduling in Kubernetes achievable?Yes, however, how do you properly accommodate every ...
The cloud era has reached the stage where it is no longer a question of whether a company should mig...
The need for greater agility and scalability necessitated the digital transformation in the form of ...
In his keynote at 18th Cloud Expo, Andrew Keys, Co-Founder of ConsenSys Enterprise, provided an over...
Coca-Cola’s Google powered digital signage system lays the groundwork for a more valuable connection...
In his session at 21st Cloud Expo, Raju Shreewastava, founder of Big Data Trunk, provided a fun and ...
"Since we launched LinuxONE we learned a lot from our customers. More than anything what they respon...
DevOps is under attack because developers don’t want to mess with infrastructure. They will happily ...
"As we've gone out into the public cloud we've seen that over time we may have lost a few things - w...
In his session at 21st Cloud Expo, Michael Burley, a Senior Business Development Executive in IT Ser...
Sanjeev Sharma Joins June 5-7, 2018 @DevOpsSummit at @Cloud Expo New York Faculty. Sanjeev Sharma is...
We are given a desktop platform with Java 8 or Java 9 installed and seek to find a way to deploy hig...
"I focus on what we are calling CAST Highlight, which is our SaaS application portfolio analysis too...
"Cloud4U builds software services that help people build DevOps platforms for cloud-based software a...