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

One problem is that you can just keep going - if you stop at the level of JDBC or JPA or even SQL, then your developers probably don't know anything about the physical side of storage - I recall an experienced developer writing tens of thousands of files into a directory and access speeds slowing at n/2.

Obvious in retrospect (the OS didn't have a binary index of the file structure) - but everything is obvious in retrospect.

Another problem is going to be work experience - within my team it's very hard to ensure that everyone gets a breadth of experience, simply because the work we do is largely based on customer requirements, and a lot of it basically translates down to bespoke web front ends onto existing code, and marginal tweaks - add an attribute to an object and map it to the front end and database - very much the kind of repetitive work Java frameworks are designed to accelerate.

There is little room for them to learn new skills in doing this, nor are we in the position to afford vanity projects. It is really the same work that COBOL programmers did. But that doesn't mean they are bad developers, more that the industry doesn't really have large numbers of positions that can develop 'deep skilled' developers.

A couple of months back we drew up a list of 'what new developers have to learn to be productive' and it's amazing what it looks like compared to the early 90s. And to a degree I am suspicious of someone who goes to far the other way (who knows many languages and frameworks) as I would question whether they have the practical knowledge that comes from working for years with something.

Einstein was thought incompetent. Perhaps the interviewer here needs to humble himself a bit. I am so tired of interviewers who think java is the last word and also that the goal of an interview is to prove they are the smartest person in the room. Interviewers have the home field advantage, and most development interviewers are INTJ/ENTJ; Can you say judgemental, poor long-view thinking, and prone to ruts? No wonder some candidates have "test anxiety". I peg the IQ tests just fine... I could care less for memorizing what I can look up...

I have sufficient skills and know where things are found... My code is usually elegant to the expert... And I consistently bring PRODUCTIVITY breakthroughs; It comes from thinking different - not the same. If you hear a little more contempt than you expect in these replies... MAYBE its not all the interviewees fault. My response to an egghead question sometimes wants to be - "I get paid $XX/hr to answer that question; check my references; and quit pretending you are competent as an interviewer."

There are these case that most of the IT Professionals (Developers/Programmers) do not know how to put it words when it comes to interviews, or have difficulties in expressing their answer. Just like to other mentioned here, give them an actual hands-on test sets, give them the requirements of the problem and how will they attack the problem using their prepared tools.

But if you are looking for the more matured or real gurus, the scenario-based interview, just like the one given above, will separate it definitely. And it is really very true that frameworks are very overwhelming nowadays in Java world, and it also sad that some employers are looking for lots and lots of these overwhelming Java Technologies. And if you do not know a few, you might land any job at all. And this might be one of the reasons that drive the IT industry today.

I would love to know what anyone thinks they are writing that is so new that it takes 5 experts? I think expert developers learn how to write less code - making way for less expensive coders for the light work. That's called effectiveness and efficiency - its called modern development - its called ROI.

If job one is not making the work simpler - and thus reducing the project risk - I submit that the interviewer is more in love with java than results. I have seen projects where 500 man-years became 2 man-years; I have seen 10x productivity improvements along with 5x quality improvements. It did not come from knowing java or design patterns - It came from finding real leverage. I see too many developers going straight to code from requirements - ZERO analysis. Great products and companies are made with leverage - not simply execution in a known and perhaps worn programming language.

Commodity java - even expert java - five at a time - means slow wits in the analysis & design world. Think iPhone - not basic palm or pocketpc - quit rushing to code - find simplicity, create leverage, and quit with all the superfluous KLOCs; If it is written already, then re-use... that is the point of objects and java. Your customers and shareholders will thank you. Spewing code comes slowly and only after you have run out of ideas. I will take the Z80 guy... because I bet he knows the meaning of economy.

I've been working as a software developer for more than 20 years now and I confess that I'm always having problems to sell myself on the interviews.

I started with Z80 Assembly (no debugger, no compiler) and I used to write the code in a peace of paper first and translate it to hex code (good old times). Also I was a C/C++ developer for more than 10 years and I used to read dozens of tech books/magazines.

When I started with Java (9 years ago) the things started to change and nowadays I don't think books are so important, and here start my "interview problems".

My first Java Web application was developed using only Servlets and JDBC and I built my own multi-threaded connection pool. But if someone ask me, in an interview, to write a simple servlet... panic... I'll have a hard time to remember what class I have to extend and all its "post/get" methods...etc...

Am I unqualified for the job ? I don't think so, I'll not take more then one minute to find the javadoc on "google" or in a book. I just started to think different: instead of memorize all the syntaxes, I started to learn how to search for it (in a efficient way). This also make it easy to learn/apply other languages and technologies.

My point is: I still know how to developer great software, so, how can I prove it on an interview ?

Sorry by the long post.

I think a lot of the posters here are quite correct when they point out it's not necessarily the candidates themselves that are the issue, but the expectations of those candidates given their level of expertise and, most importantly, the amount of money being offered for those positions. You can't leave the latter out of the question given people who are really good at what they do often won't work for less than what they perceive to be top dollar. `Competitive` when applied to salary level is a synonym for `average`, and for average money the best you can hope for is `average` candidates. I'm not excusing people who fudge their resumes to get interviews they shouldn't, but it takes a fair amount of time to come up to speed on any of the frameworks (Spring, Hibernate, Flex) let alone all of them in addition to the Java language and the J(2)EE framework.

@ajainy

What is wrong with this code ? Could you elaborate

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

Let's see... All those things designed to make life easier(e.g. Spring)... we now have to feel bad for using them? These are signs of language and domain maturity - that people can generate useful code without spending their lives in the language is good news, not bad. Companies want productivity - understanding all layers of the stack is certainly being an expert - but companies want to get solid features out the door - period. Understanding the stack is the booby prize fought over by people with no lives. To think all practitioners need to squander their precious lives chasing this one language with unwavering zeal - what about python, perl, php, c, c#, ruby, ... ? Who anymore is paying to train anyone? We bury our practitioners with a complete lack of covergence on anything... how many ORM tools should we be expert on? We want to buy and are unwilling to build. And even when you are good, the industry pays poorly for your efforts - ours is the fastest learning curve among all - doctors, lawyers, accountants - no one has to pedal as fast as us. To ask candidates simple conformance - to expect no effort in the interviewing process - sorry; Life is always hard when you need an expert. If you want an EJB star - you should have started queuing him up years ago. To need 5 of anything specialized in a hurry means someone planned poorly. WHich part of any of this is the interviewer ready to own? Perhaps the industry needs to figure out how to stop mushrooming the complexity and converge instead on some common foundations again. Before the web - if you wrote C well - you had a job; You were a unix guy, a microsoft guy, or an embedded guy - and you wrote system code or high-level... you had a good job fresh out of school. Have we made things better for ourselves - or are we just inventing incessantly new treadmills to jump on?

Unfortunately, if you look carefully at most of the postings for Java developers, they aren't really looking for Java developers at all. They are really looking for people who have skills in a very particular framework in a very particular vertical market. They aren't really looking for developers at all. They are looking for people who can "plug and play".

I think it’s easy to judge others especially when you are in the world of writing books. Do not take my comments in the wrong way. But by just interviewing five people; it would not be wise to come to any conclusion (unless the objective of the author is to create a sensational blog/article to get good ratings).

Well if you believe that there are smarter people out there than you then; I can ask you questions which could result in you not answering some of them; although I agree there are some questions that are pretty basic; my first critical comment on your blog is fire the HR people who brought that resume to you in the first place; as the root cause of the problem lies not in those guys but those HR guys who do a word search and rely on individuals who talk about the baseball score / football score……...). I have worked in this industry for 15+ years and I have witnessed the deterioration in IT industry across board. When there is demand there is supply (quality goes for a toss, quantity matters more bodies more billing; its so bad; and do not pretend to be a holy cow; I am assuming when you provide estimates to your customer what do you say; it can be done in 40 hours or create a project plan with all those testing cycles and management overhead to charge 200 hours; just to squeeze profit; oops I forgot there is a new term in use management reserves; or much better unknown unknowns……:).

Long story short, if you were doing system programming and working on low level programming languages like C and remembered your engineering days - Data Structure books then you know things haven’t changed a lot whether its iBatis (really the fight between ORM and writing stored procedures and iBatis is a compromise) , Hibernate (really ORM concept), Spring (really a “mini-me” version of Enterprise application Server containers) etc the list goes on and on…….So even some of the java specifications are evolving, Remember EJB3 is completely new from EJB 2.1 and where do you think EJB 3 learned from (hibernate). I am not including Microsoft’s attempted effort of LINQ and now Entity Framework into this mix as they are special or at least they claim to be (remember its service pack in their world not bugs)

Bottom line is those guys did what their HR guys told them to do so that their resumes could be picked from the 1000’s your HR gets every day, so here is another suggestion not only fire the HR from your company; remove the company those guys you interviewed; from the preferred vendor list (if you have any)

I've been an interviewer for a number of years and just recently had the tables turned on me as I completed a new job search for a high-level development position.

I agree with you 100% that a candidate must absolutely have the skills necessary to do the job. I also agree with you that Googling for an answer is not a replacement; however, Googling is an important skill that can serve its purpose in the (hopefully) rare situation, but being able to find the page with details on Mark-Sweep Garbage Collection or when to use Spin-Lock -vs- Semaphore doesn't mean the candidate understands it.

In my opinion, it is more important to understand what you are doing than it is to know the syntax of how to do it within the language, because if you know the what, then you can work in multiple environments, but if you only know the how you are limited to the language itself.

Because of this, I would much rather hear someone tell me how the ActiveRecord system in Rails builds the SQL statements, or how to properly test a module in addition to, or even in lieu of having them write the code.

@ajainy -- on the debug output routine, I would ding the guy only if the code was created after 2000. log4j wasn't common until after that and java logger didn't come until later still. So it is quite possible that older code like this still exists. However, I would ding their company management for not providing sufficient time and resources to refactor the system to handle java logging properly.

I've been an interviewer for a number of years and just recently had the tables turned on me as I completed a new job search for a high-level development position.

I agree with you 100% that a candidate must absolutely have the skills necessary to do the job. I also agree with you that Googling for an answer is not a replacement; however, Googling is an important skill that can serve its purpose in the (hopefully) rare situation, but being able to find the page with details on Mark-Sweep Garbage Collection or when to use Spin-Lock -vs- Semaphore doesn't mean the candidate understands it.

In my opinion, it is more important to understand what you are doing than it is to know the syntax of how to do it within the language, because if you know the what, then you can work in multiple environments, but if you only know the how you are limited to the language itself.

Because of this, I would much rather hear someone tell me how the ActiveRecord system in Rails builds the SQL statements, or how to properly test a module in addition to, or even in lieu of having them write the code.

@ajainy -- on the debug output routine, I would ding the guy only if the code was created after 2000. log4j wasn't common until after that and java logger didn't come until later still. So it is quite possible that older code like this still exists. However, I would ding their company management for not providing sufficient time and resources to refactor the system to handle java logging properly.

The problem is that the enormity of technologies and libraries and frameworks, even within just the Java world, is overwhelming for individual developers.

It's unreasonable to expect individual developers to have mastery, or even journyman level competency, over every technology on your laundry list. It's impossible.

What does a developer do? They have to pick and choose a subset of technologies to train in, or get experience in, and go from there.

But then employers expect to meet very specific, and oftentimes long, laundry lists, and then they bitch about nobody meeting all of the requirements of said laundry list.

As for a Java developer, a reasonable laundry list should include the following:

1. Understanding and productivity with the Java language itself. This much is obvious.

2. Understanding of JDBC and SQL
3. Understanding of ORM. Any ORM framework will do.
4. Understanding of managed beans - either of the EJB variety, or Spring container variety. Either will do.
5. Understanding of the web tier - JSPs and Servlets, and any framework will do. Understanding of the differences between andan Action framework (and traditional MVC), and a component framework, is a plus.
6. Understanding of GUI libraries, either Swing or SWT, a plus.
7. General understanding of OOP.
8. Build tools - Ant or Maven.
9. Understanding of unit testing JUnit, or TestNG, or other, will do.

Notice this list here is general, and not specific.

Getting into a laundry list of specific frameworks, web technologies, containers, build tools, IDEs, etc, is a strategy that is bound to fail. As an employer, if you are utilizing very specific technologies, you should very much expect to do a little training of your staff, or at least allow for learning curves, provided the candidate has proven and demonstrable qualities in the above "general" list.

In a way, it's much easier, for both developer and employer, in the Microsoft .Net world. For those candidates (and positions) the only requirements are C# or VB, Visual Studio, WinForms, ADO.Net, and ASP.Net. Other stuff, like NAnt, NHibernate, and maybe Silverlight, are gravy.

But in the Java wolrd, it gets much more complicated for both developer and employer, in terms of finding qualified candidates, and developers finding jobs where they can meet the "laundry list".

But if both employer and developer can emphasize on the "general" stuff, and expect training/learning curves on "specific" stuff, both parties would be much better off.

jriddler,
You can't be serious?! No amount of googling can compare to a comprehensive knowledge of the underlying fundamentals. While you are busy banging away at google I will be on to the next project, because I know the technology and what the symptoms and situations an issue can stem from. Google is a wonderful tool, but by no means a replacement for everyday knowledge. I don't understand how people can even consider themselves a programmer if they don't invest their time in understanding and practicing. You will find a stack of books next to my bed as high as my lamp... I just haven't yet put them on the shelf since reading or I reference them too much still.

Yakov,
I would guestimate that all five would also fail simple SQL questions. I see it even a bigger problem as for them Java ORM tool is the Database language and they do not need to know what happens under the hood there either. That in turn causes much bigger problem of application being unreliable/incorrect - and impossible to fix.
As far as googling the code - it does not work too well. You can get quite a lot of code snippets online - but almost none can be placed into production system. They are usually overly simplistic ways to approach the problem and need 200%-300% of supporting code to make it usable for business applications.
The main issue is in quantity over quality approach to the application development. We have diminishing number of professional developers driven out by decreasing compensation and increasing number of unqualified people that came from other fields driven by demands of ongoing expansion of Internet. As long as companies would settle for low quality staff we would have old recepie of "pitting out fire with gasoline".

Personally, I do not hire people to work on MY projects unless I believe they are somewhat better them me in the areas I want them to concentrate on. I might have few junior people with potential to work on direct client projects that do not afford seasoned developers - but is I see them failing to learn fast they are out regardless of the profitability - they will become a problem in no time

Sincerely
Anatole Tartakovsky


Feedback Pages:




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

ADS BY GOOGLE

@DevOpsSummit at Cloud Expo, taking place November 12-13 in New York City, NY, is co-located with 22...
SYS-CON Events announced today that IoT Global Network has been named “Media Sponsor” of SYS-CON's @...
To Really Work for Enterprises, MultiCloud Adoption Requires Far Better and Inclusive Cloud Monitori...
The best way to leverage your Cloud Expo presence as a sponsor and exhibitor is to plan your news an...
CloudEXPO New York 2018, colocated with DXWorldEXPO New York 2018 will be held November 11-13, 2018,...
DXWorldEXPO | CloudEXPO are the world's most influential, independent events where Cloud Computing w...
Disruption, Innovation, Artificial Intelligence and Machine Learning, Leadership and Management hear...
"We host and fully manage cloud data services, whether we store, the data, move the data, or run ana...
Enterprises are striving to become digital businesses for differentiated innovation and customer-cen...
DXWorldEXPO LLC announced today that Telecom Reseller has been named "Media Sponsor" of CloudEXPO | ...
Enterprise architects are increasingly adopting multi-cloud strategies as they seek to utilize exist...
Digital Transformation: Preparing Cloud & IoT Security for the Age of Artificial Intelligence. As au...
"Calligo is a cloud service provider with data privacy at the heart of what we do. We are a typical ...
We are seeing a major migration of enterprises applications to the cloud. As cloud and business use ...
Discussions of cloud computing have evolved in recent years from a focus on specific types of cloud,...
Containers and Kubernetes allow for code portability across on-premise VMs, bare metal, or multiple ...
DXWorldEXPO LLC announced today that "IoT Now" was named media sponsor of CloudEXPO | DXWorldEXPO 20...
Modern software design has fundamentally changed how we manage applications, causing many to turn to...
In this presentation, you will learn first hand what works and what doesn't while architecting and d...
In an era of historic innovation fueled by unprecedented access to data and technology, the low cost...