~pperalta

Thoughts on software development and other stuff

Using Smalltalk as a Java Resume Filter

without comments

Last weekend I picked up My Job Went To India (And All I Got Was This Lousy Book) by Chad Fowler. I must admit that I found the title and the cover to be a bit cheesy, but I decided to look through it anyway. (Insert cliché here about judging a book by its cover.) While reading it in the bookstore, I found it to be such a good read that I decided to bring it home. (In general, if I can’t put down a book at the bookstore, that is the deciding factor on whether I decide to purchase it.) It is full of…well…pragmatic advice on how to improve and enjoy yourself and your career in software development. As I was reading through it, I thought to myself “this really belongs in The Pragmatic Programmers” series. It was only after bringing it home that I realized that not only did it already belong (again, the cover does not look like the other books in the series), but that the author is a coauthor of Programming Ruby, which is another book that I’m going through at the moment.

One of the most interesting anecdotes that Chad gives is when he is going through hundreds of resumes looking for Java developers. After having spent many hours going through candidates that were unqualified, he suggests adding Smalltalk as one of the required keywords for the resume search. Even though Smalltalk won’t be used in the project, using this technique he is able to narrow the resumes down considerably. The developers that make this cut turn out to be “diamonds in the rough.” These are the guys that really enjoy to program, and people that enjoy to program are usually pretty good at it.

Languages are not just a set of instructions to a computer, they are also a medium to express thought on problem solving. It is not hard for a seasoned developer to pick up a new language, but it does take a little more time to think in that language. For a simple example (and a bit of a digression), take a for loop in Java:

for (int i = 0; i < 5; i++) {
System.out.println("Hello");
}

Here’s how to express this loop in Ruby (thanks, Why the Lucky Stiff!):

5.times { print "Hello" }

In the Java loop, we are incrementing an integer variable and printing to the console during each iteration. In the Ruby loop, the number 5 is an actual object, and it contains a method called “times” that will execute the block of code that is passed to it the number of times represented by the integer object. This is reminicent of the Template design pattern that I’m used to using with JdbcTemplate in Spring, except that this is built into the Ruby language and this is a much more concise way of expressing it.

Back on topic, Chad makes the argument that knowing multiple languages makes you more attractive to perspective employers. Via his anecdote, he also demonstrates that this is a very effective way to filter out resumes when looking for good developers. Other than the career implications, being able to think of and express solutions in multiple languages enhances your creativity and effectiveness for solving everyday problems.

Written by Patrick Peralta

May 16th, 2006 at 10:04 am

Posted in Development