Thursday, December 12, 2024

How to Blow an Interview

I recently had to interview a candidate. He had passed earlier interviews, had done well, and was in the final running. My only task was to determine his coding ability.

I checked resume, and saw that he listed Python among his computer language skills, so I decided to pitch him a Python program. I wrote a this simple skeleton of a Tic-Tac-Toe program:

class TicTacToeBoard:
    def __init__(self):
        pass

    def __str__(self):
        pass

    def make_move(self, row, col, player):
        pass

    def is_winner(self, player) -> bool:
        return False

    def is_full(self) -> bool:
        return False

if __name__ == '__main__':
    board = TicTacToeBoard()
    print(board)
    board.make_move(0, 0, 'X')
    board.make_move(0, 1, 'O')
    board.make_move(1, 1, 'X')
    board.make_move(1, 0, 'O')
    board.make_move(2, 2, 'X')
    print(board)
    print(board.is_winner('X'))
    print(board.is_winner('O'))
    print(board.is_full())

I invited him to “go to town” on the code. I didn’t care what he implemented or how he implemented it, I just wanted to watch him code.

Alas, he didn’t. He studied the code for a few minutes, moved the cursor around, and then admitted that it had been a while since he had written any significant Python code and he was a bit rusty. He was more used to Java.

That’s fine. I asked him to write the code in Java. I apologized for not having a Java skeleton, but I was sure he could write something.

He didn’t get very far. He wrote a class declaration, but was stumped on any method definitions. He admitted that he was pretty rusty in Java, too, and wanted to switch back to Python.

I didn’t care, I just wanted to see some code. He asked if the job was going to require a lot of coding. I said that it would definitely require some coding as part of the job was analyzing legacy code and identifying and fixing security bugs.

After half an hour, he still hadn’t written even a single line of working code in any language. I felt bad for him and asked him about the other experiences on his resume. They looked good, but a little digging showed that his experience was a bit shallow. I thanked him for his time and told him that the recruiter would be in touch.

I gave him a solid “no”. He just would not have been a good fit. The job required coding skills that he simply did not have.

I don’t understand it. I would have thought that the ability to write some code was a basic requirement for any job involving computers. But I guess not.


Nutanix is hiring. It’s a pretty good gig, so if you see something that interests you, apply. But be prepared to write some code.

2 comments:

Anonymous said...

If you did the code interview first, you'd have avoided your colleagues wasting time on the other interviews.

Josh Ballanco said...

I still remember the first time, as a very junior coder, my boss invited me to sit in with him on an interview for a software engineering position with our team. He handled the intro and basic niceties, along with a couple basic questions on background, then handed it off to me to present a coding challenge. Not really being prepared at all, I quickly came up with what I thought was a simple challenge of switching state based on the current state of the system and an incoming stream of data. I had, essentially, just pulled an issue I was literally working on the day before. The candidate stared blankly for a moment, made a few halting attempts to start a solution, then asked for some "clarification". A few iterations of this, and I eventually ended up writing the bulk of the solution myself via these "clarifications".

After the interview, my boss pulled me aside and said to me, "Josh, have you ever heard of 'FizzBuzz'?" I had not, but when he explained it to me, I scoffed. How could that, possibly, be a reasonable coding exercise for an interview. "Well," he told me, "about half the candidates that come in to interview fail...so..."