Writing

Feed Software, technology, sysadmin war stories, and more.

Friday, June 1, 2012

Many ways to move those bits

Years ago, I was asked to create a list of questions to use when interviewing candidates for a web hosting tech support gig. I guess the existing set they had was wearing thin, or maybe they were worried about people sharing the answers. I decided to make a new set based on things which came up a lot or otherwise appeared in real tickets and slowly ramped up the complexity.

Some of these questions appeared to be trivia, but I was really looking to see just how creative people could be. For instance, one of my questions seemed simple enough on the surface:

List some ways for copying a file onto another server.

Okay, so it's not exactly a genius filter, but remember, this was intended for telling the level 2 techs apart from people who had no clue. I figured it would be a great base for starting a deeper conversation about how things really work.

I also wrote up a list of answers. Personally, I won't ask any questions for which I don't already know the answer, but not everyone rolls like that. That's why the people who asked me to make a list of questions also asked for a list of answers. They wanted to be able to hand them over to people who didn't know this stuff to use as a filter. Sigh.

Anyway, given that I couldn't assume much in the way of domain knowledge on the part of the interviewer, I decided to annotate some of the possible answers so they could get an idea of just who they were dealing with. The types of answers you get can tell you a lot about how someone goes about solving problems.

I said that "good, obvious ways" were things like sftp and scp. They're installed everywhere these days, they don't send stuff in the clear, and by and large, they just work.

Next on my list were the "bad, obvious ways": ftp and rcp. Both of them have their own scary problems. If a candidate mentioned rcp, for instance, I'd expect them to immediately tag something on like "but that means running portmap and a bunch of other sunrpc gunk behind it, and I really hope you aren't doing that".

Then there are my "acceptable 'weird situation' ways": wget, ncftp/ncftpget, and curl. Those are okay in a pinch but sometimes involve sending traffic over the network in the clear, so you have to be careful about what you're doing with them.

Last, I got into the realm of "bonus points for truly bizarre ideas". I suggested that you might say "what if none of those work and it's a binary file". The "binary file" part, of course, was to thwart a simple "oh, just paste it into my editor" type of answer.

One possibility I suggested was that someone might MIME encode it on one end, copy that into their clipboard, and then paste it into a MIME decoder on the other end. I'd like to see someone both discard the copy/paste option for raw data and yet also circle back when they realize it can be done by escaping wacky characters.

One level of loopiness up from that was doing the same encode-and-paste thing, but using UU encoding. You're probably some old grizzled Usenet veteran if you do that. Oh, sorry, we don't talk about Usenet and binaries. Righto.

The last thing I mentioned was doing yet another encode-and-paste scheme, but instead of using base 64, UU encoding, XX encoding, or anything else which already exists, they sit down and write a new one using the tools at hand. This means they take perl, python, awk, sed, tr, bash, gcc, g++, ruby, zsh, or whatever else they can find on either end and hack together something to get those characters to safely transit a tty into an editor.

Questions like this start as trivia but can end up anywhere. They are useful for detecting years of experience (and painful lessons learned), but they also serve to pluck out pathological liars. At some point, they can't weasel through an answer and fall flat.

You just need to make sure you really know your stuff before you ask about it.