How I failed 39 interviews and what I’ve learned

Hassan El Desouky
Feb 18 · 11 min read

Why did I fail to get an internship?

What I have learned?

Believe it or not, but I actually learned a lot by just failing interviews.
A former software engineer at Microsoft always says that…

“It’s a numbers game!” — Mohamed ElSherif

Therefore, you just have to apply a lot and eventually, you will get an interview.

Advice from a software engineer at Google

I try to connect with a lot of people who works at big companies like Google and Apple, to get their opinion on my resume and personal projects. I wanted to get any advice that will help me achieve my dream goal. Actually, I wanted to build a connection that will be definitely helpful for me in the future.

Computer Science Fundamentals

Understanding computer science fundamentals are really crucial to become a good software engineer. You have to have a pretty good understanding of Math, Algorithms, and Data Structures.

Don’t rush!

It’s better if you don’t rush into learning new technologies in the first two years in college. The better thing is to learn the fundamentals very well and become very solid in problem-solving skills. It’ll help you a lot in your future career. After these two years, you can start learning any technology you like and start making personal projects.

Know what’s going on under the hood

When you start learning a new technology, it’s better if you go a bit deeper to know more about it. Learn what’s going on under the hood, not just take a sneak peek of what it does. That will definitely make you a better learner and better software engineer.

Programming languages

There’s a lot of programming languages and learning a lot of them is not actually bad. However, you should have at least one programming language that you are comfortable with. Type in it at an acceptable rate without googling obvious syntax.

Communication skills

Communication skills are equally as important as technical. As work in a team might be one of the most challenging aspects of being a software developer.

Online presence

Your online presence is important for your career as a software engineer. You should have a blog and write on a regular basis. Write about what are you learning, how do you approach the problems that you encounter in your personal projects and how you solve them. Marketing yourself can open a lot of working opportunity for you in the future.

Open source contribution

Contributing to open source projects is really beneficial for you as a software engineer. Not just open source contributions can give you a huge boost in your job application. Contribution to the community also can be the reason why a company contacts you to hire.

Internships

You should take advantage of your summer vacations and go to internships as much as you can. It will give you industry experience that you won’t get from any online courses, nor college. Internships will also improve your communication skills and teach you how to work in a team environment.

Difference between Startups and Corporates

Everything has its own ups and downs. Therefore, working at a corporate teach you how to write proper code not just writing a code that works. It also gives you the opportunity to write code that has a big impact and solves a problem for a very large scale of audience. It will teach you how to work in a team environment and how to communicate with different teams in the company.

Resume

The resume should be just one page long, especially if you are still a student or don’t have a lot of experience. Also, it should be nicely formatted.

Preparing for interviews

When you are preparing for interviews you should have a solid understanding of algorithms and data structures. After that, you should start with reading and doing the problems in Cracking the Coding Interview book. Then, you should start in Elements of Programming Interviews book as the problems in this book are harder than those in the CtCI book.

How to approach a problem?

More likely, in your interview, you will hear a new problem but kind of similar to a problem that you solved before. The key here is to try to make the problem that you heard like the one you already know. Then start approaching the problem from there.

How I’m preparing for my next interview?

I really want to get an internship at a big company next year, and if I’m lucky I want to get one also this year. Therefore, I’m trying and doing my absolute best to get that internship. Here’s what I do:

I write in my blog

Having a blog gives you great exposure in the community, and sometimes it can be the reason you get an interview. Therefore, in December of 2018, I started writing here on Medium, and it’s been a pleasure! I really enjoyed writing and I really like the feedback that I get from you guys.❤️

I build apps

One of the things I enjoy is building iOS applications. I love the ability to solve a real-world problem with just an app on your iPhone. I haven’t made any big application yet. I’m still learning and I have a very long way to go. Eventually, I’ll be there and very soon I’ll have an app on the App Store. I guess, having an app on the App Store will definitely be a huge boost in my resume.

Programming Competitions

Programming competitions are a great thing to do while you are at school. By doing programming contests, you gain an intimate understanding of data structures, algorithms, and their complexities. Solving contest problems is an excellent way to familiarize yourself with a programming language, data structures, as well as get better at converting procedural ideas to code. These are very useful skills for a coding interview.

Hackathons

I plan on joining hackathons this year. At a hackathon, It is very important to learn how to network with others. You’ll meet students who are interested in the same things that you are and love to work on projects. You will also connect with companies and it might be the reason you get interviewed. Finally, if your project won, it will give you a huge boost in your resume.

Local meetups

I went to SwiftCairo meetup twice now, and it’s been a pleasure so far. Meetups are a great way to communicate and build a network. You’ll meet people who are interested in the same things that you are and they will be more than happy to help you.

Preparing for the Technical Interview

Of course, we can’t ignore this portion. It’s a must to be good at problem-solving to pass an interview with any one of the “big four” companies. So, here’s what I do/ what I plan on doing:

  1. Algorithms and Data Structures
    You must be good at algorithms and data structures to be able to pass your technical interview. I read a book about algorithms and data structures in Python. The book called Data Structures and Algorithms in Python — Michael H. Goldwasser, Michael T. Goodrich, and Roberto Tamassia, it’s a really great book. It starts with teaching you the basics of Python, then it starts in the algorithms and data structures portion. I’ll add also all of the other great resources that I use in learning algorithms and data structures down in the resources section.
  2. Solving problems
    After I read a chapter on a specific part, or study a specific data structure. I solve problems from Cracking the Coding Interview, and Data Structures and Algorithms in Python books. Then, I solve easy to medium problems about the topic in which I’m studying from LeetCode. Finally, I might solve a problem or tow about the same topic from HackerRank’s Interview Preparation Kit.
  3. Mock Interviews
    It’s really recommended to practice the interview style with someone of your friends. You can arrange to do mock interviews, as each one takes a problem and tries to solve it on his own. The next day you can ask your friend the problem that you already know the solution for it, and vice versa. So, at the end of the day, each of you had a mock interview and learned about two different problems. Another great resource, that you can practice mock interviews on, is a website called Pramp.com. I really recommend this website, for practicing an interview-like setting.

Conclusion

Hopefully, I’ll be committing to my plan, as I’ll be consistently learning, making apps, and solving problems. I’ll also try to get an interview at one of the “big four” in April this year, and hopefully, I’ll pass.

Resources

Flawless iOS

🍏 Community around iOS development, mobile design, and marketing

Thanks to Ahmed Khalaf.

Hassan El Desouky

Written by

CS Student 👨🏻‍💻 Developer  Optimist 🚀 “What you do at 8pm will determine your future.”

Flawless iOS

🍏 Community around iOS development, mobile design, and marketing