Uncharted Waters

Feb 28 2019   4:13PM GMT

The Technical Shibboleth

Matt Heusser Matt Heusser Profile: Matt Heusser


Shibboleth is a code-word, a word that, if known and pronounced properly, makes you insider.

I’ve been interviewing and hiring a lot lately, and I realized that my interview process often involves looking for Shibboleth.

No, I don’t ask them if they know Java. Leading questions where you obviously want the candidate to say “yes” are bad examples. As a recruiter, you’ve got to know that Java and JavaScript are different, that VisualBasics (plural) is not a thing and does not mean a “basic understanding of the visuals.” Of course.

Actually, you don’t, plenty of recruiters don’t know that. To add value as a recruiter, though, you’d want to do a better job than the keyword matching any Machine Learning Algorithm can do. One way to do that is to know the words that anyone that actually uses java would use, the keywords they would use over and over again, every single day. You ask questions that lead to those answers, and if the candidates stumble, that is a strong negative indicator, a shibboleth.

Here are a couple of mine, and their problems.

The FizzBuzz Shibboleth

It’s a little passe, but when I interview people who need to be able to write code, I’m still a fan of FizzBuzz, a simple coding challenge here’s a concise definition:

Write a program that prints the numbers from 1 to 100. If it’s a multiple of 3, it should print “Fizz”. If it’s a multiple of 5, it should print “Buzz”. If it’s a multiple of 3 and 5, it should print “Fizz Buzz”.

Writing this program is as simple a for loop from on to one hundred that calls a function and printing the result. The function has to find the remainder of dividing the current count by 3, by 5, including the possibility of both.

That is, one for loop, two if statements, an else, a return, and a print. It is not hard. I ask people to program it in their strongest language.

Yet many people struggle with it. Some people are unable to construct the for loop and the if’s – that is a pretty strong red flag. Some people, however, don’t know how to find the remainder. That is, they don’t know the modulus operator, which is % in C, C++, Java and similar languages. As someone with a degree in Math and a Concetration in CS, I sort of expected that everyone who codes should just know modulus. Knowing it shows a relatively large understanding of the language because modulus is so rarely used.

My former colleague, Sean McMillan, once pointed out that makes it a terrible shibboleth, especially for junior programmers. The Junior programmers might never have needed to use %, but they could be find programmers. That’s a risk with Shibboleths, one I also see for web testing.

The  Web Testing Shibboleth

When interviewing testers I frequently use a test exercise seeded with bugs. Often, if they are not finding the bugs, I will give them a hint, to use special characters or more than one space. When the results come back, the spaces are compressed, because HTML itself does not recognize more than one space. That is a hint that the code should escape HTML characters. Mumble-something years ago, when I was learning HTML, knowing that spaces were compressed was something we learned every day. Today, with WordPress, Rails, CSS, and other templating agents (or mobile device experience), it is very possible than an effective tester might never get a master of HTML at that level. And that might be fine.

Shibboleths are not perfect. They can be false signals. They can get it wrong.

There is an alternative to looking for Shibboleth keywords. DeMarco and Lister recommend it in Peopleware. In that book, the two talk about hiring a juggler. Yes, you could ask where they went to juggling school, and how many balls they can juggle, and if they do bowling pins.

Or you could ask them to demonstrate, sit back and watch.

The Lesson for Candidates and Managers

Ultimately Shibboleths represent a code – a code that might or might not be required to perform the job anymore. It certainly might not be required to learn the job and be effective very quickly.

To cut to the chase, have a portfolio. If you are a programmer, have sample code in GitHub. If you are a tester, have some tools and utilities in github. Just by having a github, just by being able to say “watch this tool drive amazon.com”, you’ll be better off than 75% of the candidates. You’ll never have to say “My employer owns all my work, but trust me.” If you’re good, you can do it in a long weekend. If not, it’s time to learn.

On the hiring side, give people a chance to audition. Have them pair program for an hour, or ask for a writing sample. Have the candidate find bugs, then write up two of them as bug reports.

The audition is my favorite form of interview.

What are some of yours?

 Comment on this Post

There was an error processing your information. Please try again later.
Thanks. We'll let you know when a new response is added.
Send me notifications when other members comment.

Forgot Password

No problem! Submit your e-mail address below. We'll send you an e-mail containing your password.

Your password has been sent to:

Share this item with your network: