I am pretty much sure you know what MLH Fellowship is. For those who don't know about this, let me brief you about this amazing program. MLH Fellowship, powered by GitHub, is a global program aimed at providing experience to talented individuals with an unlimited thirst for learning. You would be learning the in-demand technologies from the leading tech mentors. Also, you will be put in a healthy competitive environment consisting of other hand-picked fellows, with similar interests and zeal.
I applied for MLH Fellowship in the early weeks of October from the official MLH website. Then, I got scheduled with my Initial Interview (kind of behavioral). After a week, I gave my Technical Interview and finally, after another week's wait, I received the result and guess what, I got selected.
This was the very first interview I have ever given and the result is quite motivating! If I can do this, so could you.
The entire procedure is neatly divided into three phases:
- Final Review
Let's understand each process in detail
In this phase, you would be filling out an application form. The form contains choice-based questions (like, Which programming language(s) are you comfortable working with? And then they provide some choices), essay questions (like, Why are you applying for MLH Fellowship?) and finally, detail-based questions (like, Your Name, GitHub profile link, Code Sample etc).
The form filling is a fairly easy process and it would take around 10--13 mins to fill out the form. Once you have submitted the form, you'd have to wait for a considerable period of time (probably, for around 10--15 days) before getting to know your result. During this period, your application is reviewed by multiple MLH recruiters. This is done to filter out the most apt and genuine application from a vast pool of applications. If your application is unique or interesting, then you'd be called in for the interview phase.
There would be two interviews: Initial and Technical.
The Initial interview's purpose is to find out whether you are an appropriate candidate who can successfully complete the MLH Fellowship. The questions asked in this round are:
- Why do you think you are a good fit for MLH Fellowship?
- How do you keep yourself updated with the new trends in technology?
- You have mentioned this in your application form. Could you please tell me about a situation where you demonstrated this?
The duration of this interview was roughly around 15-25 minutes.
The Technical interview is primarily based on the code sample that you have submitted in the application form. You would be given most of the control where you'd have to do a brief code walkthrough. The interviewer will then stop you in between and ask questions related to certain concepts. In my interview, since I demonstrated a Flask application, I was asked the following major questions:
- Why did you prefer Flask? You could have also opted for other frameworks (like DJango)
- What is a decorator? Explain to me briefly
- What is an ORM? How is it useful to a developer who wants to create rapid applications?
- Several other concept based questions.
One thing to note here is that, you need to have an in-depth knowledge of what you are demonstrating. The entire duration of this interview was around 20-30 minutes.
After successfully completing both the interviews, your entire performance is analyzed and then top folks are selected. Those who get shortlisted gets an acceptance letter along with the time and date of commencement of the program.
If you want to see good results, you must plan it properly. With enough research and thorough understanding, you can clearly envision what's going to happen and what to do if its going to fail. After all, we are computer science students, we should look at the world from a different, systematic perspective right? Okay, so I am going to share with you the mindset I followed which got me through all the phases in the first attempt.
I firmly believe that humans are capable of performing things way better when they feel the heat. MLH is a highly competed internship. The seat that you are vying for has an acceptance rate of 2.5%. No, the data is not to scare you rather, its to challenge you to push harder. Now that you are feeling the heat and in the right mindset, lets proceed further.
Before even applying to MLH, you must have a good understanding of the following technologies:
- Any Programming Language(s) excluding C, C++, BASH. Yes, even I was pretty much taken aback by this. Preferred: Python, JAVA, JS, TypeScript.
If you don’t have any good understanding of the aforementioned topics, I suggest you to spend some time learning it. I would give you some cool resources at the end.
The first milestone to be reached. Let's understand this from MLH's perspective. Why are they conducting this Initial Application process? One reason would be to remove spurious or "copy-pasted" applications. The key thing to consider here is, be authentic. Trust me on this. Many of my colleagues who went after the shortcut ways of filling application ended up receiving the same "Apply next time" letters.
Write essays that reflects you, in a professional way. Use good amount of vocabulary (something we never even really cared). Use big words, no really, I am not trying to be ostentatious 😃. This would, overall, make your application top-notch. The reviewers would feel as if you have done hard work. A sweet psychological trick ain't it?
In the choice based questions, choose things that are applicable to you. The more the merrier is not applicable here. In my application, I only opted for Python as the preferred Programming language (even though I knew around 3-4 others). Be simple, be genuine and be professional.
There would be one section, where you would have to describe a project that you are going to submit as a code sample. One interesting observation I made here was that web-based projects were preferred over other ones. My colleagues gave projects like Library Management System, Hotel Booking Management System etc. These projects are great from the beginner's standpoint but are not multi disciplinary. Projects like Full stack website, Simple Chat application, even Calendar shows that you have a varied understanding of several topics. Go for such projects if you haven't already and if you are already working on such projects, then great! You are on the right track.
Once you clear the first round, you are in for a tougher fight. Here, all the candidates who passed the application process are interviewed. This is a phase where many candidates loose focus and starts doubting.
Let's again understand why interviews are conducted from the MLH's standpoint. Well, one obvious reason would be to check whether you are a good fit or not. Whether you have it in you to complete the internship. Keeping these in mind, its time to oil our guns.
For initial interview, being in the right mindset is really important. Let's look at this way: The interviewer has to interview many candidates. So, it is quite certain that there would be many questions he/she would ask that are common for all. Be prepared for these questions. The questions are going to be from your application form and some general questions I mentioned way earlier in this post. The key thing to demonstrate is your calm and composed attitude. Believe me, its the easiest and the most interesting interview you'd have ever given so, enjoy the process.
Technical interview, however requires some grinding. In this process, you would be given most of the control to demonstrate and give a brief walkthrough of the code sample you have submitted. It's you who has the complete authority. As you start explaining your project, follow this paradigm:
- Describe briefly about the project
- Tech stacks used
- Start explaining the project structure
- Start explaining the concepts
The interviewer is not going to look for the number of lines or files in your project rather, he/she is interested in finding out how deep you know a certain concept. If the project is solely yours, then no need to fear at all. You would easily be able to give answer to the questions.
You are expected to be an individual with strong fundamentals. If you are a Python programmer, consider following this playlist. Pick a topic that you don't know and start learning.
I used a neat trick to trap my interviewer. While explaining my project, I gave emphasis on concepts like decorators, ORMs, Flask, Object Oriented Programming among many that I was dead comfortable with. By doing this, I took him to my territory and guess what, the interviewer asked the questions related to those same concepts. You can also do this, but only when your fundamentals are quite robust and have something to fall back on. The aim here, is to prove your interviewer that you are one of the top folks.
If you have followed the above methods systematically, then no need to worry at all. Consider yourself selected*. In fact, I was pretty confident that the moment after my technical interview got over, I notified my colleagues that I am going to be selected.
"A perfect amalgamation of psychology, smart work and dedication can take you a long way."
If you get selected and followed my techniques, then be sure to tell me about your story! Would love to hear it. You can mail me at: firstname.lastname@example.org or follow me at GitHub or connect with me on LinkedIn
These are some of the cool resources I found helpful during preparation:
Python Programming Playlist : Pick a concept, start learning
Linux Fundamentals : Understand Linux structure and basics
Git Essentials : A comprehensive Git guide
YouTube Channel : A channel (relatively new) which aims at promoting contents related to computer science.