odds and evens.

I know, as does every thinking person, that hidden and wandering among us live dozens and hundreds and thousands of geniuses, creating art and music and inventions that we will never see, because they're stuck (or perhaps they choose) working at McDonald's or mopping floors, without a chance for their creations to reach the world. This comes to mind partly because on the bus ride from Mazatlan to Tijuana we got to see The Legend of 1900, which has that as one of its themes.

However, I had a job interview today, of all things: on Sunday I figured I'd just send out a few resumes, and if there was a problem with the fact that I can't start for a few weeks, I'd just deal with it. Curiously, I woke up the next morning to discover someone had emailed me to ask if I could show up for an interview in Walnut Creek this week, Monday, Tuesday, or Wednesday. So I went today at 1500, to give myself some time to study up (I haven't really coded Java seriously in about 14 months), and I'm pretty sure it went well. I was tired and out of practice and not really at my most articulate, but I think they liked me--at the very least I'm pretty sure my cover letter and/or resume got their attention, seeing how fast they got back to me.

I first talked to the lead engineer ("Have a technical question about a tradeoff or decision, that's me. Need to take a few days' vacation, that's the next guy."), who left me for 20 minutes with a horrendous ten-question quiz. This is not unusual as a way to weed out the supremely unqualified, but this was hard:

  1. What locks can you synchronize with the Java synchronize keyword, and when would you use them?
  2. What does ACID stand for and what does it mean?
  3. What are some methods for scalable session storage on a website? What are some problems encountered in scaling session storage?
  4. What is a good collection [a Java library data structure] for a LRU object cache?
  5. What are Oracle's four transaction isolation levels, and how do you use them?
  6. Draw a possible data pipeline for a website using XML/XSLT, JSP, JDBC, and Servlets.
  7. Create an XML document based on this DTD snippet.

And three more along those lines. For you nontechnical readers, these questions go a bit beyond the usual questioning of job candidates. So I stressed a little and got two questions answered, and the team lead came back in with a smile and said "So, do you hate me yet?"...a couple of questions were designed to discover the undercover Oracle administrators trying to masquerade as programmers, and I think the rest were largely meant to stimulate discussion. That's OK, and it turned out I knew the answers to almost all of them, I just couldn't remember the acronyms, or I knew the concepts under other names. I got a pass on the "data pipeline" question, though: he figured if I knew the different between different versions of the Internet Protocol, I knew how the information goes through a web server.

The place has much to recommend it: smart people, who enjoy what they do, and insist on building software that doesn't suck. The lead engineer could tell me what CVS modules I would need in order to build the software, they said they could beat my salary from my last job, and the commute is counter to the normal flow of traffic (I would be going out to Walnut Creek in the morning, back to Oakland in the evening), even when I drove back almost right at 5 PM. So we'll see. I'll know more tomorrow afternoon.