It was the best of times, it was the worst of times, it was the age of programming, 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 interpreted 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.
-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 philosophical questions: “What do you think about open-source software?”. Upon hearing that the interviewee 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 interviewee 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 calculations 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 conversation 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 algorithmic tests.
The questions are quite easy: implement a queue using two stacks, find the subsequence 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.