Wednesday, May 26, 2010

Snatching Defeat from the Jaws of Victory

After all the work I put in to the recruitment stuff from Cyrus Innovation for a senior Java / Ruby developer job, I lost it.

A few weeks ago I had a really good interview with their technical recruiter, Glenn. Then he gave me a code test to do. He mentioned the Ruby one, but then corrected himself and gave me the URL to the Java one. Since I mentioned I like learning new things, I dug around and fiddled with the URL for the test to find the Ruby one and did both of them, with an email explaining it was my first ever Ruby code (it was). A while after sending them to him I got a response:
I just heard from our development team, and this is one of the best code tests we've seen at Cyrus! The Java submission was, by our standards, essentially perfect, and the Ruby test was also extremely strong.

So, it looked good. I spent some time on the weekend putting together the job application document, getting it printed and signed and scanned back in.

Then Glenn arranged for me to do a pair programming type session with Alfredo on Monday for a few hours. We used Skype and its desktop sharing and voice. It wouldn't let us do both desktop sharing and video, however. That session went okay, not fantastic, but not yet a disaster and afterwards Glenn gave me positive feedback.

For Tuesday night he arranged an even longer session for me with Matt there. I felt that went even better for the two of us. And Matt sounded really positive when we got off the Skype thing.

In both sessions we did some refactoring of the code I wrote for the initial Java test and added a little new functionality. I guess I should've guessed, since in neither session did we ever finish the functionality we were adding. A lot of discussion about how to do it and in both cases we began with test cases and some refactoring to move out what looked like would be good interfaces, but never quite completed.

It was fun both times working with Alfredo and Matt. We laughed, swapped some stories about coding and platforms and weird things in tools and all that. I described some of how my project structures things and what-not. Both guys were pretty cool to work with.

A little while later I got an email from Glenn:
I just had a chance to sit down with Matt and talk about the second pairing session. As I've heard from everyone thus far, it was a real pleasure working with you, and in terms of personality, everyone here agrees that you would be a great fit at Cyrus and would get along well with the team. Matt and Alf both spoke highly of your instinct toward agile practices, and your deep knowledge of design patterns.

There were a couple of points of concern that came up in both of the pairing sessions over the past two days. Matt mentioned today that parts of your code test seemed like they were packed a bit too tightly to pull things out easily - a fact that was made apparent when adding a new parser to the project, and that your approach to refactoring the code could have been better. Alf noted yesterday that the flow between testing first, coding, and then following up with additional tests was not as smooth as it could have been. Because we'd be bringing you in at a senior level here at Cyrus, these became points of concern for the development team, and unfortunately we have decided that because of this, we have to pass at this time.

I think remote pairing is certainly a challenging prospect, and as discussed, it is largely uncharted territory for Cyrus. To that end, in the event that you relocate or travel to the NY area, I would love for you to come in and pick up the recruiting process again. We would could conduct a pairing session in person to ensure that any potential issues related to the remote connection are not to blame for the team's assessment.

It has been a real pleasure speaking with you, and the team wants to thank you for taking the time to go through our recruiting process. I wish you all the best, and please keep in touch.
So that's sort of that... I feel like I put in an awful lot of effort on this one.

I suppose part of the problem was me. When it comes to the job hunt, I do manage to mess things up that would normally be easy. If one of my teammates asked me to do the same things with the code that Alfredo and Matt did, I'd probably jump up to the board, or a notebook and start scribbling just what to do and get it done quickly. But when I'm being tested for a job interview I'm nervous and I screw up easy things. I don't handle that context very well.

Another problem is I'm sure I wasn't at my best in the evenings after full work days. Caffeine probably wasn't a good substitute for being well rested and fresh.

Maybe I also let the friendly chit-chat get away from us. Not that we shouldn't have been friendly, but discipline... Maybe I should've tried to focus a little more on the tasks at hand and solving the problems put to me. Then again, that gets harder to do after a full work day as well.

The remote stuff added to the difficulty. It's not trivially easy to pair that way even with teammates I've known for a few years and worked in-person with, so with someone I don't know, I think communication that way was a little tougher and maybe we didn't pass information back and forth very well. Without video we couldn't even use our hands for body language while talking.

So, at this point, now that I have a better idea of where they're going with the code, and given how much time and effort I've put in already, it's probably worth it to spend a few hours this weekend updating the test code I sent them and just emailing it to Glenn with "here, I've done some of what Alfredo and Matt had me doing..." and see.

Not much to lose, and lots to gain if I'm successful.

No comments:

Post a Comment