Preparing for the Future

What if you don't have any interviews in the next few years, for example, if you are still a high school or college student? It's actually a great place to be in, and there is a lot you can do to prepare for the future. Let's discuss this here.

Internships

If you are a college student, doing an internship at some big company is probably the best thing you can do. You should definitely apply to Google, Facebook, and similar well-known companies – it's possible to get there no matter where in the world you are from!

Usually, internships are done after the second or the third year of the college, but sometimes you can do them earlier. So, it's a great idea to start preparing early.

Interviews for the internships are very similar to the real job interviews, only maybe a bit shorter and easier. Preparation is about the same too – you still have to be able to solve coding problems and to know algorithms and data structures, and solving problems on Leetcode is a great way to prepare. As a bonus, the same skills will be helpful later at the real job interviews, and interning at the big company is one of the best ways to get hired by it later.

You should also remember:

  • Internship interviews are easier than real job interviews, and almost any computer science student can get an internship at a famous company like Google or Facebook after some preparation. Companies also don't care where you study or where you live – interviews are the same for everyone, and the company will bring you to their office if you get an internship.

    It's very possible to get an internship, and it's an excellent opportunity for everyone. So believe in yourself, prepare, and apply!

  • Interview applications are done very early – if you are applying for a summer internship, you will often need to apply early fall of the previous year! So start preparing earlier, and don't miss the deadlines!

Competitive programming

One of the most useful activities for the interviews (and software engineering in general) that you can do in advance is to participate in programming olympiads, or, how it is often called, competitive programming.

Like interviews, competitive programming is also focused on solving algorithmic problems. Problems in competitive programming are much harder than typical interview problems, so after that interview problems will seem much easier, and you will also learn all the needed algorithms and data structures.

To get started with competitive programming, check out if your school or university already has a programming olympiads club. You can also watch How to start Competitive Programming video or start reading Competitive Programmer’s Handbook. I also recommend Codeforces and AtCoder as the two best platforms for competitive programming right now. And you can also go to some online judge (website with a collection of problems) like Timus, sort the problems by difficulty, and simply start solving!

Participating in competitive programming olympiads is especially rewarding when you are a high school or a college student. It's a great way to meet smart people, and you may win a right to participate in many international olympiads – travel covered! Even at the regional or country level, good participants often receive cool prizes and even university grants for free tuition.

From my experience, most competitive programming participants who are at least somewhat good usually easily pass interviews later, and, if they want, end up working for the big software engineering companies.

Other

There are many other things you can do in advance:

  • Take an algorithm course at your university or online.
  • Working on a personal project is a great way to become a better software engineer.
  • Find other cool people interested in algorithms and software engineering. You can prepare together, or simply encourage each other to be better software engineers.

If you don't have interviews to pass right now, it's great – you have a lot of time to prepare in advance. Use it wisely!

Action Items
1. Check out the internship requirements and deadlines.
If you are a college student, check out the internship requirements and deadlines at some big companies. You may use the following websites:You often need to apply to the internships very early. Don't miss the deadlines!
2. Try solving competitive programming problems.
Try solving 1-3 easy competitive programming problems. They are similar to the interview questions, but also have some differences. For example, you can try the following easy problems:
  1. 1409. Two Gangsters
  2. 1225. Flags
  3. 1837. Isenbaev's Number
3. Think about what else you can do to grow long term.
Think about what else you can do to grow and be a better software engineer long term. Here are some possible ideas for the inspiration: