My company continues to hire. We hire smart people, who get stuff done. We're a huge Java/Linux shop, but we can't find anyone. We pay well, have a great environment, lots of cool technology to play with; but we only hire smart people.
Except there aren't any left to hire. I know. I've interviewed a dozen people in the past few weeks - all of them had less than stellar interviews.
Five Interview Tips From Idcmp
1. Have an opinion. Justify it. What's your favourite past project? Where do you think Java web frameworks are going? What's your favourite thing in Java 5? Why do you like Hibernate better than iBATIS?
2. Be real. Everyone has disagreements and problems sometimes - it's how you manage through them that truly matters.
If you have ten years of development experience in medium to large-sized companies and you tell me you've never had a disagreement with QA, then you've either done nothing of merit, or you're lying.
You used a pet store style architecture for your reporting application (entity beans 'n all), deployed it clustered with WebSphere on AIX using DB2, and you tell me you had *no* issues at all along the way? Either you had little to do with the project, or you're lying.
3. Update your Mythology.
If you've been around Java for a long time, you may still think that reflection is slow, garbage collection is to be avoided and nobody could write a *real* application in Swing. Our system completely disproves this, so working for us would scare and confuse you.
4. Be details oriented and technical.
I'm bad at this one too. You've had HR ask you about your experiences, and you've used the phrase "stuff", "thing" and "system" when you really mean "shell script", "message driven bean" and "cronjob". You had to, they wouldn't understand!
If someone technical is present, use the real words. If you're not sure if they're technical, ask them. Weed the words "stuff" and "y'know" from your interview vocabulary. While you're weeding, drop "obviously" too; that drives me nuts.
I asked a candidate how they would implement something, and their *final* reply, after pressing them for details was "There would be some logic in an EJB." Really.
5. Know when to say "I don't know."
This will completely kill an interview for me. *Do* say "I don't know", when you've not used the technology you're asked about. *Do not* say "I don't know" when presented with a "How would you do the following..." question.
Q1: How would you detect that you're iterating infinitely through an cyclic graph?
Q2: Do finally blocks get called if you System.exit in your try block?
Good Answers:
A1: Depends on what your needs are exactly. Mark nodes as visited in some sort of thread local attribute (one of a bunch of different ways), or ..., or ..., or ...
A2: I Don't Know.
Bad Answers:
A1: I Don't Know.
A2: Depends on the virtual machine, and the OS, oh, and the phase of the moon. It happened this one time to a buddy of mine, it totally surprised him, we thought it worked the other way.
That's All For Now
So, these five little tips will put you ahead of the pack of developers I've spent time with, and if they're common sense to you, maybe it's time you sent your resume my way... ..if you're out there.
Lack of Decent Java Developers?
Idcmp
Subscribe to:
Post Comments (Atom)
RSS
4 comments: (+add yours?)
My goodness.
Hi, That was a very good and highly informative blog. I've a concern here.... why our industry doesn't bother about someone who is really interested in working on a particular technology or domain, though at present they are not working on it. For example, I'm a developer working on multiple technologies and multiple domains. But my wish ever is I shall work on Java related technologies. Java always fascinated me even as a student. I don't want to put a fake in CV saying that I have worked on Java technologies, but yes, I'm confident that I can pick up the technology and domain very quickly and start being very productive very soon. But nobody want to beleive genuine people like me and they always filter resumes of so called Java experts... which, must just be a fake. Anyways thanks for your highly informative blog.
Hi,
Superb !
I picked up your Blog from TSS out of sheer curiosity - it's too good !
Regards,
Sandeep
I have been interviewing people for a Perl position recently and have had the same experiences - there are a lot of perl scripters out there, but damn few solid developers.
When looking for a good perl developer I tend to focus more on good development habits, especially:
* revision control
* unit testing
* documentation
* prefer maintainable code over clever code
I strongly prefer people who have read both "Pragmatic Programmer" and "Perl Best Practices".
Having a good deal of domain specific knowledge is appreciated, but honestly most of the important bits can be taught quickly if you have someone who enjoys mentoring and the new hire is the type who enjoys learning. If they're development bookshelf has one book per language then you can probably skip them in my opinion.
Hiring Java developers is similar in that the personality and drive to learn is critical, but there is also a lot of language specific knowledge to pick up. Sure, you can get the basics very quickly if you have used any other object oriented language.. but there are some critical areas that require study.
One critical area that is often overlooked is thread safety. Reading "Java Concurrency in Practice" should be required reading for all Java developers as it does an excellent job of explaining the java memory model, and why synchronization is not just about restricting concurrenct access to a block. Reordering, visibility, and atomic operations are critical areas to understand.
Post a Comment