It was a Tuesday morning, and for once I got up early. I picked up my phone and scrolled through my emails, trying to spot one from MLH. To my surprise, there it finally was, the acceptance letter I had been waiting for more than a month. Oh boy, that feeling was great. 😊
I was accepted into the Open Source program of the MLH Fellowship for Spring 2021 (batch 2). 🎉
In short, it is a global 3-month remote internship alternative where the selected fellows are placed in pods of 8-10 fellows where they collaborate and work on real-world projects depending on the program (Explorer, Open Source, Externship) they are selected for and are assigned seasoned software development mentors to help them throughout the program. There are many fun events throughout the fellowship such as CTF challenges, hackathons, workshops, show and tell sessions, game nights (Among Us, Skribbl), etc. All students, as well as non-student professionals, can apply to the MLH Fellowship.
The MLH Fellowship website probably explains it a lot better: 💻 https://fellowship.mlh.io/
MLH offers a stipend to accepted Fellows. The stipend won’t replace a full-time job, but it can help offset some of your living and educational expenses during the program. The amount of the stipend is determined by your track and the country you are residing in during the program.
In this blog, I share my experience applying to the fellowship, from filling out the application form to interviewing. I provide my opinions on what the folks at MLH are looking for while evaluating your application.
- My Timeline
- Applying to the MLH Fellowship
- Statistics for Spring 2021
Here is a summary of the phases your application goes through:
- Application Review: Going through your resume, essay questions, and other parts of the program.
- Code Review: Looking at the code sample to ensure it's of a high enough quality
- Initial Interview: Chance to get to know you and find out why you want to be part of the Fellowship
- Technical Interview: Chance to show your technical skills by going through your code sample
- Final Review: The best applications are selected and sent the acceptance letter.
- Applied: Aug 17, 2020
- Review Started: Nov 27, 2020 (after 3 months, 10 days)
- Email to schedule Initial Interview: Dec 5, 2020 (after 8 days)
- Initial Interview: Dec 9, 2020 (after 4 days)
- Email to schedule Technical Interview: Dec 9, 2020 (same day)
- Technical Interview: Dec 13, 2020 (after 4 days)
- Accepted: Jan 19, 2021 (after 1 month, 6 days)
The deadline for the Spring 2021 application was Jan 4, 2021, with the program commencing on Feb 1, 2021.
To apply, head over to the MLH Fellowship website, and click Apply Now.
PRO TIP: If you want to check out all the questions on the application form without submitting the form, just enter random data into the form and keep clicking
I would recommend applying at least 1-2 months before the application deadline. The volume of applications might be very high within the last one month, so the earlier you apply, the earlier your application gets reviewed, and the earlier you complete your interviews.
Let's walk through some of the important sections in the application form.
You'll need to select one of the 3 programs:
- Explorer: Build out your portfolio of personal projects and experiment with new technologies by collaborating in small groups on a series of short hackathon-like sprints.
- Open Source: Learn how to be a great Open Source citizen by contributing to major projects that are used by thousands of companies around the world.
- Externship: Experience what it's like to solve real-world software engineering problems by collaborating on projects from real companies & government partners.
If you select Open Source, you'll need to select one of the following tracks:
- Python (Web)
- Python/Julia (Data, AI/ML)
Explorer is a good fit for those lacking many personal projects or who want to discover new technologies. In the Explorer program, you would be building out your portfolio of personal projects & experimenting with new technologies. After every two weeks (sprint), you'll be building a new real-world project to add to your resume with a group of 2-4 new members. Each sprint has its own theme (Portfolios, Dev Tools, Gaming, Social Good, etc) that challenges you to explore your interests. You'll get to interact with industry experts and founders who will talk to you about the real challenges they face every day.
Open Source is great for people that have experience working on many projects or have interned at companies but lack experience contributing to major open-source projects. In the Open Source program, fellows will get to work on major open-source projects such as React, Jest, Flask, Julia, forem, scikit-learn, etc. At the beginning of the program, fellows are placed into small groups called "pods". Each pod contains 8-10 students, a professional mentor, and 2-3 Open Source project maintainers. Fellows within the Pod collaborate on their projects over the course of the program.
Externship is awesome for people looking to solve real-world software engineering problems and gain experience collaborating on projects from real companies & government organizations. Fellows will learn how to go from ideation to launch, developing not only technical skills but also business skills like the customer discovery process.
NOTE: Externships are mostly given to people authorized to work in the US, as most of the partnering companies are located in the US. Although, MLH is trying its best to partner with more companies around the world. If you are not eligible for the Externship, you will automatically be considered for the Open Source program, so don't worry.
Next, you need to pick to work either part-time (10-20 hours per week) or full-time (30-40 hours per week). I went with part-time being a full-time university student. 👨🎓
There will be a Developer Experience section, where you need to select the programming language you are most proficient with. 👨💻
Ideally, you are expected to have intermediate to advanced knowledge in the programming language you select and have some experience working on a variety of projects using that language. You'll be judged on your proficiency in this language during the technical interview.
In my opinion, the code sample plays a crucial role in the overall selection process. It's great to have a code sample that solves a real-world problem and demonstrates good software engineering practices. It could be a project you created at a hackathon, a personal project, or a significant open-source contribution you made.
NOTE: If you're applying for the Open Source program, the code sample you submit needs to be in the programming language you picked as your most proficient one.
Pick a project you are most proud of and best represents your ability to write code. It doesn't need to be a complex project, but also not too simple. If you have multiple great projects, pick the one that is unique in terms of the idea, since it shows that you couldn't have copied it off the internet.
Avoid submitting Jupyter Notebook projects. As Swift says:
"They don't really demonstrate a real-world ability to solve problems, they read more like a blog post".
Here are some code sample requirements straight from the application form:
Displaying good software development practices is a huge plus point. Some good to have things in your project:
- Well written documentation
- A neat looking, easy to understand README file which explains what the project does and how one can use it
- Modular code. Don't put everything in one large file, try to divide it into multiple files.
- Consistent and clear variable naming
- Consistent indentation and spacing
- Avoid large commented out sections in code
- Use environment variables where necessary
- Unit testing
P.S. If you know more, mention them in the comments.
Here is the project I submitted:
- Getting Started
- Bug Reporting
- Feature Request
- Release Notes
- Zero dependencies
- Add events to calendar
- Perform some action on calendar date change
- Month and year picker built-in
- Themes available
- Fully customizable using CSS variables, passing options parameters while creating calendar, or overriding CSS.
- Request more features...
📦 Getting Started
Also available on unpkg.
Pick a css file according to the theme you want.
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/color-calendar/dist/css/theme-basic.css" /> <!-- or --> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/color-calendar/dist/css/theme-glass.css" />
Get fonts from Google Fonts
<link href="https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;600;700&display=swap" rel="stylesheet" />
This section is the most important part of your application. Take your sweet time to write the essay responses. ✍️
There are a total of 5 long answer questions:
- Briefly describe what this code sample does. (200 words limit)
- Briefly describe what you learned when you created this code sample. (200 words limit)
- Why do you want to become an MLH Fellow? (250 words limit)
- Learning is the primary focus of the MLH Fellowship. What have you learned recently that you would want to teach other fellows if accepted? (250 words limit)
- Anything else we should know about you? (250 words limit)
In question 1, I talked about what the project does, where it can be used, and what technologies I used.
In question 3, I talked about how the fellowship would help me bridge the gap between university and industry by exposing me to real-world projects. I also discussed my love for lifelong learning and sharing my knowledge with others.
In question 4, I talked about the build tools I learned that I mentioned in question 2 and about Cloud and DevOps.
In question 5, I talked about my volunteering experience and my career goals.
"You should focus on what’s unique about your circumstances that makes you interesting or noteworthy. The most powerful essays tell a personal story that’s unique and relevant to the opportunity. For us, these typically tell the tale of how someone fell in love with coding, hackathons, or the CS community."
- Will Russell, MLH Fellowship Community Manager
As Will says, make your first impression count.
One more thing, if you're not the best with English, have your essay answers reviewed by your friends or family. Grammatical and spelling mistakes can be a huge turnoff.
Scroll to 34:10 timestamp
If your essay questions are answered well and your code sample is good enough, you'll be invited for the initial (non-technical) interview. There will be a Calendly link in the email for you to schedule the interview according to the date and time of your preference. Always be on-time and check your audio/video setup beforehand.
Once your application review process starts, it usually takes up to 10 days for you to receive an email to schedule your initial interview.
This interview starts off with the interviewer confirming the details you mentioned on your application like the program you applied for, the time commitment, whether you are over the age of 18, which country you reside in, etc.
It's a short 10 minutes interview to check:
- If you're eligible
- How passionate you are about the program
- If your audio and video quality is up to mark
- If you are able to communicate well with others since it's a global program
The 2 major questions I was asked during this interview were:
- Why do you want to become an MLH Fellow?
- Tell me a bit about the project you submitted and what you learned from it.
At the end of the interview, you can ask questions to the interviewer and I would highly suggest you do ask something here. As my interviewer was a past MLH Fellow, I asked him about his experience as a fellow.
Just within 2 hours after my initial interview, I got an email to schedule my technical interview. 🥳 Note that it might take longer for some people to receive a response, depending on the volume of applications and time of the year.
In the technical interview, the interviewer judges your technical abilities. It's strictly a 15 minutes interview, so manage your time wisely. Make sure you know your project inside out, and what each file in your project does. 👩💻
The interview would start off with you explaining what your project does in brief (keep it short). Then, you'll need to share your screen and guide the interviewer through the codebase explaining how it works. The interviewer will stop to ask you questions in between from time to time. They could ask why you did something in a particular way in your project and about some concepts of the programming language you used.
I think I must have over-prepared for my technical interview. 😅 I thought I might get asked questions from React, Express, Vue, technologies that I've used in my other projects on GitHub, but that was not the case.
I was only asked questions from the project I submitted. I certainly didn't realize how quickly 15 minutes can fly. I definitely could have reduced how much time I spent explaining what the project does.
The interviewer is more interested in knowing how much of the code you understand in your project and if you can explain why you made a certain decision in your project. The interviewer also wants to understand how well you know the programming language you used.
NOTE: You will not be asked to write any code during the technical interview.
Thankfully, I was prepared to answer all those questions. Though I wasted too much time in the start to explain what my project does, I finished off strong in terms of technical knowledge.
After the technical interview, one needs to be patient because the final review of your application usually happens close to the application deadline. You can expect the acceptances to start rolling out about 2 weeks prior to the start of the fellowship.
PRO TIP: Always check your spam folder, you don't want to miss any important emails.
- 4968 people applied (confirmed)
- Approximately 1000 received interviews
- Around 125 fellows accepted across all programs combined
That's a 2.5% acceptance rate.
NOTE: Spring had lower applications as some regions don't make doing internships very easy during that time. Expect the applications count to multiply for the Summer and Fall batch.
You actually don't need to have past open-source experience in order to get into the Open Source program. In fact, most people that get selected into the Open Source program are new to open source.
I did not have any experience contributing to major open-source projects when I applied, apart from a few documentation contributions. What I did have however was plenty of personal projects, an active GitHub profile, and an internship experience at a startup. 💪
Make sure to show that you're a lifelong learner, can collaborate well with others, and are passionate about tech. A personal touch to your application in the essay questions and code sample would be an awesome way to set yourself apart from the others.
All the best! 😇 I hope you get that acceptance letter!
I'll be writing about my fellowship experience once it's complete.