You’re a young undergraduate who is enjoying the university life: you’re eating, drinking and hanging out with your new vibrant friends. But, it’s not all about social activities. You’re at university, aren’t you? You chose to pursue the studies in Computer Science till this point, and now, you’re having the chance to attend inspiring courses about coding algorithms, robotics, distributed systems, so on and so forth. Realistically speaking, different courses have different inspirational degrees and this depends on a number of factors ranging from the extent of your passion for the topic to the professor’s influence level. Anyway, there’s one very important fact.

The challenges offered by (at least some) university courses make you dreaming. (*)

In the final years of my graduate studies, one challenge, among the others, completely fascinated me: the P versus NP problem. It’s still one of the most important unsolved problems in computer science regarding the algorithms’ computational complexity, and yes, it still fascinates me. In addition, this challenge is so outstanding that it’s part of the Millennium Prize Problems: whoever, in the world, can come out with the solution and, if this happens, they will be awarded with one million dollars.

Soon, I began daydreaming about how it could be working on such a sort of problem. It has to be amazing, for sure. I’ve always imagined situations in which groups of inspired, smart and peaceful people work together to find out the solution to a problem. Situations in which the passion drives the workers. These thoughts weren’t changing when I tried to imagine how working for the most blazoned software companies could be.

You may be wondering if all this interest and all this attraction is exclusively related to the potential achievement of popularity. After all, saying something like I’m a software developer at Google or I’m a senior researcher at Microsoft still sounds impressive nowadays. And, yes, it isn’t pure invention. See for example the story of Ellen Huerta, former Googler. She had publicly disclosed her reluctancy in leaving the big G due to the company safety and prestige.

It took me some time to understand that it’s definitely not about the prestige, the popularity, the regard of the other people and, it shouldn’t be about that. Rather, it’s about the chance of having an impact on thousands, millions or even billions people. For example, think about how it could be working on the most widespread operating system in the world. And, what about working on the most popular search engine? Even if your contribute is minimal with respect to the overall infrastructure, your work will be delivered to thousands (or millions?) users. Thrilling.

What would have led me from the university to one of these amazing jobs?

Well, I was getting really great marks during the graduate studies and, similarly to what Jeff Atwood wrote in Doing Terrible Things To Your Code, I thought I was one of the best students in the course, so I wasn’t worried too much.

I couldn’t be so wrong.

After the graduation, I began attending my first interview rounds and I didn’t know what an interview could involve. I couldn’t even imagine. So, it happened I did interviews without any sort of specific preparation.

This comic comes from dilbert.com. And, it’s funny, but being unprepared it isn’t!

Soon, really soon, I recognised the bitter truth.

Even if you think to be the best, you will need to prepare for attending both phone screenings and technical interviews.

Yeah, dude. Phone screenings requires preparation too. In particular, since it’s your very first contact with the company you should do your homework, as some recruiters would say, in order to sound interesting and pass the stage. The homework typically involves the search of information about the company (99% of the times) and the study of various possible behavioural questions.

I personally find behavioural questions pretty boring, especially those standard, pre-packaged questions. Yes, my darling recruiter coming from a top-notch company. This. Is. Boring. What is the creativity you’re showing by asking those questions? Why are you expected to be impressed by a great candidate without being yourself great enough? Should I have to think that this is just another ordinary interview?

The interview is also the chance for you, as a candidate, to evaluate the company and see if it’s in line with what you’re looking for.

If you’re lucky (prepared?) enough to pass the phone screening, you will be expected to attend one or more technical interview rounds. So, let’s get nerdy! It shall be more funny than the phone screening, shan’t it? Well, it depends on the type of the technical interview. In this context, you can meet very different scenarios. Indeed, you might be asked to:

  • solve coding problems on a whiteboard, on coderpad, on Hackerrank, and the list goes on, during a live interview.
  • solve coding challenges at home, with or without time constraints. Often this challenges are more structured and complicated than the ones proposed during a live interview.
  • answer questions which are specifically language related (e.g.: what is the meaning of the pass keyword in Python?).
  • deeply answer technical questions on your past projects.
  • answer technical questions that explicitly relate to the position your applying for. For example, if you’re a back-end software engineer you might me asked questions about designing the entire back-end of a specific application.

In my opinion, the range of the arguments is so broad that there’s no book that, once read, assures you will pass the interview. One book isn’t sufficient. Many books could be enough. You will definitely need all the best sources of information at your disposal. What can be better than the Internet? You will surely need Internet, but it’s very likely you will also need to refer to other sources for your preparation (books, university projects, personal projects, etc.).

There’s no cookbook, no ideal formula that will safely lead you to gain the position you want at that awesome company.

So, how can you be prepared for the next technical interview? Studying thousands books during the few days you have for preparing seems impossible to accomplish.

A couple (or more) of years ago, I was contacted by well-known software company. In my opinion, it’s still one of the best, if not the absolute best in the world. I was scheduled for a phone screening, and I easily passed. Then, I was scheduled for a technical interview with one of their software developers based in the United States. During the technical interview we had lots of problems with the call and we decided to do the interview by writing on a shared document. It’s kinda funny that a technical interview can be affected by technical problems, isn’t it? It was pretty tough to concentrate and answer in the appropriate time without letting think the interviewer I was googling the answer rather than simply thinking about the solution. I didn’t performed at my best but, I learned an important lesson that I want to share with you. The interviewer told me his story. He didn’t enter at his first application, and if I remember well, he applied three times before being hired. Furthermore, in order to be hired, he spent a lot of time preparing, and he gave me a really important suggestion.

Work with smart people.

It may seem banal, but it isn’t. Is there a better way to prepare the next technical interview than studying during your current job? That’s the way: study everyday and work with smart people! Incrementing your knowledge in the field, day by day, will surely bring you closer to what you really want to do.

How did it end up? I didn’t pass smoothly but, I was rescheduled for another interview, which I refused. I knew I wasn’t prepared enough and I thought that having a couple of weeks more to prepare wouldn’t have changed so much the result. And then, what happened? Then, I entered in a sort of continuous loop made of working, interviewing even if I’m working, and finally living. And now it’s tough to exit from this vicious cycle.

But, why did (do?) I accept interviews even if I was (am?) already employed? At the beginning, I applied such sort of behaviour in order to:

  • check out what the market is offering in a particular time;
  • improve myself at interviewing.

And, I can say these reasons still hold nowadays. Fortunately, during the last year, I began receiving proposal from various channels (the major is LinkedIn) without doing almost nothing (**). So, with an increased awareness, I accept interviews because I like to discuss about technology, I like challenging myself, I like knowing about the work in progress of other companies.

Pay attention. If you’re working and interviewing at the same time, don’t expect that recruiters will understand your situation. In my experience, no one really understood the toughness of this kind of situation. Recruiters only have a vision on their company and often they forget they’re actually dealing with “real” people, not just virtual voices over the phone or virtual writers on a Skype chat. Be aware of this but don’t give up.

So, do you have a job but recently you may have the chance to interview with that awesome company? Stay hungry, stay foolish! And, c’mon let’s go! Toward the next technical interview.

(*) This is part of my personal experience and it shouldn’t be taken as the sole truth.
(**) Well, maintaining clear information about my past and current experiences can’t really be thought as “nothing”.