Part 2: Prepare for interviews
All the experience you can learn by starting a side project is really good for your resume. I explain it in the first part of this long post on how to get a job as a junior software engineer. But, unfortunately, it is not enough to get you a job. Indeed, interviews for software engineers, mainly focus on algorithms. You do not really work on this during your personal projects.
Even as a Computer Science student, you had a course about algorithms. If you are like me, you have forgotten a lot of basic knowledge. For the majority of the people, we need a huge preparation.
In my opinion, technical interviews based on algorithms is not a good way to know if someone is a good software engineer or not. But, it is really a good test to see if this person is motivated or not.
Preparation, the key of success
If you target the best companies in the world, you will need to work on algorithms night and day during several weeks in order to be ready. The requirements from a top tier software company are very high, you will need a huge and long preparation because the competition is very rude.
The preparation journey will be a long one. I highly suggest finding someone who will do it with you. You can support each other during hard moment and keep continuing to work hard.
Massive open online courses
First, you will need to review your algorithm courses. Or, you can find a really nice course on Internet:
- Algorithms and Part II by Princeton University
- Algorithms: Design and Analysis and Part 2 by Stanford University
You can also find books that will help you to understand deeply about algorithms. Here, this is the list of books:
Courses and books are a good start. Unfortunately, the best way to master a skill is to practice. The book Cracking the coding interview is the reference to prepare technical interview for software engineers. This book is really nice to read, but it will become a more powerful tool if you solve the questions by yourself.
There are also several websites that help you to prepare interviews:
All the links I give you here contains a lot of questions from real interviews. These websites implement a text editor, letting you program directly on your browser. At the end, you can run your code and you can check if the output is equal to the expected results. You do not need to write yourself the unit test because it is already provided.
Sometimes, you will not succeed to solve some interview questions. You can find solutions on Internet. Especially, you have a lot of videos on YouTube that explain them. And, it is easier to understand an algorithm on YouTube than on a blog with only text.
You should also do several times the same question you failed to be sure you understand well and do not forget to track your mistakes.
I also suggest you to stick into one programming language and do not change during your training. Otherwise, you will lose your time to learn another one.
Even if it is not a big deal to learn a new language, you should only focus on algorithms, and how you will solve interview questions. Furthermore, during the interview process, interviewers do not care about the language you use. You should focus one language because you will be able to go deeper into one.
Write your resume
The resume is a complex topic and my knowledge is limited about this. Even if I am currently based in France, I was using the American format. For example, my resume was in English in order to differentiate myself from other applicants. I will share with you a couple of tips for an American resume:
- Your resume should fit into one page
- You should describe your professional experiences and your personal projects. You should not forget to mention the impact you have made
- You should have the opportunity to use a lot of programming languages. In your resume, you should only put the skills you really know. Indeed, you will need to be ready to answer some questions about the skill you write on your resume
I highly suggest you to find out more information on Internet.
Grow your network
For sure, the best solution to find a job is through the network. An employee in a company who refers you for a position will increase considerably the chance to get contacted for an interview.
As a new graduate, your network should be small. If you are lucky, you will have some friends or relatives that already in the industry. But, most of the people you know are looking for a job at the same time as you ;) That means you cannot really use your network to find a job.
However, you should still keep in touch with your classmates and build a strong relationship with them. They probably stay in the technology industry and in a couple of years, they will help you in your future job searching. So, after finding your job and starting working, it costs nothing to contact your old classmates and take a coffee or a dinner with them.
As I said, the interview is not a good way to test if somebody is a good engineer. Unfortunately, the majority of the company uses this kind of technical interview to hire their engineers.
That does not mean you will lose your time to prepare it. You will still learn a lot during this preparation process and master something that are different to what you can learn in your side project. For example, you will understand different data structures and algorithms, and how you can use them efficiently.