Everybody can author a new question


Subscribe to JavaBlackBelt: eMailAlertsEmail Alerts newslettersWeekly Newsletters
Get JavaBlackBelt: homepageHomepage mobileMobile rssRSS facebookFacebook twitterTwitter linkedinLinkedIn

JavaBlackBelt Authors: Sumith Kumar Puri, Duncan Thomas, Maureen O'Gara, Karthik Narayanan, Steve Beaty

Related Topics: RIA Developer's Journal, Java EE Journal, JavaBlackBelt, Sun Developer Journal, Oracle Journal, Adobe AIR on Ulitzer, IBM Journal, Java Developer Magazine, Enterprisey IT Journal

Blog Post

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

More Stories By 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

Comments (37) View Comments

Share your thoughts on this story.

Add your comment
You must be signed in to add a comment. Sign-in | Register

In accordance with our Comment Policy, we encourage comments that are on topic, relevant and to-the-point. We will remove comments that include profanity, personal attacks, racial slurs, threats of violence, or other inappropriate material that violates our Terms and Conditions, and will block users who make repeated violations. We ask all readers to expect diversity of opinion and to treat one another with dignity and respect.

Most Recent Comments
pkumar 10/14/09 04:47:00 PM EDT

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

talonx 08/13/09 12:11:00 PM EDT

@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.

Fly_m 08/06/09 06:12:27 AM EDT

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.

miketheprogrammer 08/03/09 10:20:14 PM EDT

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.

Yakov Fain 08/03/09 09:01:37 PM EDT

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!

Jiml521 08/03/09 01:02:49 PM EDT

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

Jiml521 08/03/09 11:33:14 AM EDT

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.

adamlee 08/01/09 08:42:02 AM EDT

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.


rdgflex 07/25/09 07:13:00 PM EDT

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

gwlucas 07/24/09 11:03:07 PM EDT

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.

Alessandro Ronchi 07/24/09 03:52:00 AM EDT

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

tahoekid 07/24/09 12:03:00 AM EDT

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.

dreese 07/22/09 08:25:34 AM EDT

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.

JavaServedHot 07/21/09 12:57:21 PM EDT

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)

taurec 07/21/09 05:13:00 AM EDT


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) {

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

JulesLt 07/21/09 04:25:00 AM EDT

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.

visionary1usa 07/20/09 11:19:00 PM EDT

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."

visionary1usa 07/20/09 11:04:00 PM EDT

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.

deejay 07/20/09 11:04:00 PM EDT

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.

golimpio 07/20/09 10:34:18 PM EDT

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.

UncheckedException 07/20/09 10:24:40 PM EDT

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.

hell2009 07/20/09 09:56:37 PM EDT


What is wrong with this code ? Could you elaborate

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

visionary1usa 07/20/09 08:54:31 PM EDT

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?

andyjnsn 07/20/09 05:39:04 PM EDT

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".

jayesh_nazre 07/20/09 05:17:37 PM EDT

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)

polydectes 07/20/09 04:50:04 PM EDT

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.

polydectes 07/20/09 04:49:00 PM EDT

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.

jeff_s 07/20/09 01:26:00 PM EDT

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.

techie.Brandon 07/20/09 12:48:00 PM EDT

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.

Anatole Tartakovsky 07/19/09 10:10:00 PM EDT

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

Anatole Tartakovsky

jens 07/19/09 09:53:06 AM EDT

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.

ajainy 07/19/09 09:40:12 AM EDT

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()) {

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

yakovfain 07/19/09 08:48:17 AM EDT

@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.

davidnwd 07/19/09 06:31:12 AM EDT

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.

jondcruz 07/18/09 06:58:43 PM EDT

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?)

adrianoc 07/18/09 05:31:30 PM EDT


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).

jriddler 07/18/09 11:50:07 AM EDT

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.