A tale of two interviews

    It was the best of times, it was the worst of times, it was the age of pro­gram­ming, it was the age of young rashness, it was the age of hope, it was the age of naivety, we had everything before us, we had nothing before us.

    There was a small company with a Dutch owner and 4-5 employees in an old, big and cool house in the center of the city. There was a medium sized company with French roots and over 100 employees in a new, modern office complex towards the outskirts of the city. In both companies it was clear that dynamic and in­ter­pret­ed languages were better than static and compiled languages.

    The young programmer went warily to the first interview. He had scouted the address previously, but there was no sign of the company. Where could it be? No logo, a common yard, only a small sign at the door saying the name of the company. Somebody comes out to greet him.

    -Hi! I’m here for the internship.

    -Come in. The interview will start in a minute.

    The two did a bit of small talk about the company, what kind of projects it tackled and what kind of experience the new guy has. Then the boss comes in. After a few informal questions about the interests of the candidate and what he is looking for, they were surprised to see their first candidate who had already done unit testing and un­der­stands the need for it. He also knows HTML5, Javascript and is interested in developing mobile apps too.

    -Should we give him a test, too?

    -Yeah, I guess it’s only fair to the other candidates.

    Here come a few easy questions, about making a join on two tables in MySQL, writing a Fibonacci function, the difference between public, private and protected functions and two logic puzzles. The other programmer joins them and starts asking about more philo­soph­i­cal questions: “What do you think about open-source software?”. Upon hearing that the in­ter­vie­wee has a GitHub repository, they start checking it out and looking for what forks he made to other projects.

    After a short tour of the building, the in­ter­vie­wee says he is interested, but he wants to sleep on the decision first.

    To have a more complete picture of the universe, he goes to the other interview. It’s a completely different company: many employees, a new building, it’s older too, but there is one thing in common: no sign showing where the company is. After asking around a few workmen, he finds the place. After asking around the company, he finds the HR person who’s doing the interview.

    Well, the first part of the interview was actually 4 different kinds of puzzle questions. Some very relevant to the job, like being able to do 60 different cal­cu­la­tions in your head in less than 10 minutes, some slightly more relevant, like making flowcharts for different programs.

    After this test is done, he is told that they will get back to him within a week.

    The next day they call him to schedule for another interview. This one is with two employees and is more technical in nature. The con­ver­sa­tion ranges from trivial topics, such as what frameworks are, to more complex ones, such as NoSQL databases. After about half an hour of talks, they say that he has their approval for the internship, but he has to pass through a formality: some al­go­rith­mic tests.

    The questions are quite easy: implement a queue using two stacks, find the sub­se­quence of largest sum in an array, and find the maximum height from which you can throw an egg without it breaking LINK and so on.

    Again, they promise to get back to him within a week. The following day they call him to tell him that he is being offered that internship.

    Now, all our young programmer has to do is choose. Go with the big company or the small one? Go with the one that is across the city or the one that is right in the downtown?

    He made a choice, but only the future will tell whether he made the right one.