My Journey to Become an MLH Fellow
My journey with MLH started long before I joined the fellowship. It began last summer when I joined the organizing team for SwampHacks, one of my university’s MLH-sponsored hackathon, and continued in the Fall semester as I participated in a few Global Hack Weeks. I strongly believe that the biggest factor that led to my acceptance in the fellowship was not my coding ability but my demonstrated passion for MLH as an organization.
What is the MLH Fellowship?
The MLH Fellowship is a 12-week internship alternative focused on learning applicable real world skills with the guidance of industry veterans (I want to emphasize the focus on education, I don’t think there is anything quite like the fellowship in terms of how much you can learn and grow as a developer in this program). There are 3 tracks offered: Software Engineering (or Open Source), Production Engineering (me, me, me!), and Web3 Engineering. Each track follows its own curriculum and has different industry partners. I strongly recommend focusing your application on one of these tracks–I’ll explain a little bit more later. The application form consists of some background questions (i.e. which programming languages are you proficient in, have you contributed to open source, etc.), some specific questions (i.e. why do you want to be an MLH fellow), and a code sample submission. Anyways, now that we have some context, I’ll get into how I got in.
Attempt 1 - Rejection
My first time applying for the Fellowship was for the Spring batch. I didn’t make it far.
So, here is the first important piece of advice I want to impart: BE SPECIFIC IN YOUR APPLICATION. The application questions are the Fellowship team’s first impression of you. If you don’t stand out at this stage, don’t even bother with a coding sample, it’ll never see the light of day. My answers were too generic and, as a result, I didn’t stand out from the sea of thousands of candidates (did I mention the fellowship was competitive?). Think of it this way: there are thousands of talented programmers applying to this program, some better than you at programming, and most at about your level. Everyone is looking for a job, duh, and everyone wants to take advantage of what the program has to offer, so that won’t set you apart. Your goal should be to make it as easy as possible for whoever is reading your application to envision you succeeding in the program. One way you can achieve this, for example, is to make your application very specific to a track and industry partner.
To get an idea of what a strong application looks like, I strongly recommend watching Never Tell Me the Odds: How to Stand Out in a Crowded Field on MLH’s official YouTube channel. In this video, Amanda D’Avria, the then-director of the Fellowship program goes into detail on how to stand out as an applicant. Seriously, its only 40 minutes long… just watch it.
The second piece of advice I want to share is to save your application answers somewhere. You can’t go back to see your answers after submitting your application. If you get rejected, you can ask for feedback but only if you have your answers.
Attempt 2 - Hooray!
Application and Code Sample
About 36% of admitted MLH fellows are reapplicants, like me. So my biggest piece of advice here is: don’t give up.
This time, I was applying to MLH’s summer batch for the fellowship. I focused on a stronger application right off the bat, tailoring my answers much more around my past experience with MLH. I’d attended every Global Hack Week that year and had gained experience organizing MLH events and mentoring at a hackathon, so I focused on that. If you watched the Never Tell Me the Odds video, you’ll remember that the name of the game here is to be specific, so I also decided to focus on one track in my application… drumrolllll… that’s right, SRE!! To be transparent, one of the biggest reasons I chose to focus on the SRE track was that I believed it would be less competitive than the SWE track. Haha. As you can see, my application was very calculated to maximize my chances of making it to the next stage. Some things that I believe set me apart from other applicants included:
- Tailored my responses to leverage my existing history with MLH (organizing/mentoring at MLH events, GHWs)
- The description of my code sample focused on my desire to get out of tutorial hell and step out of my comfort zone
- Tailored my application to the SRE role, reconciling my experiences up until then with my goals, and why/how SRE could get me there
- Got my name out there by being very active in MLH’s GHW streams and reaching out to people I knew would be looking at applications
Now, let’s talk about the code sample. This part is a little simpler (but not easier ha!) to get right. The first step is to read the FAQ.
FAQ Link
Note: it used to have a section that specifically answered what makes a code sample stand out. I’m not sure why I can’t find it anymore, but I remember two examples that would be a good place to start: containerizing your application and having unit tests (I recommend writing unit tests and learning about TDD, a very important industry practice).
Then, pick your favorite, most complex project. It can be a solo project, something you built at a hackathon, something you made with friends, whatever as long as you made meaningful contributions. Your goal here is to demonstrate that you can actually code and you can tackle complex projects. Pick your coolest project, then add one or two things from the FAQ to make your project stand out. That’s it. The only other thing I’m going to say about this part is that your project doesn’t have to be done, but you need enough complexity to be able to talk about design decisions and hold a conversation about your code. Everything else you need to know can be found with some light Googling. Here’s the project I submitted for my application: https://github.com/aleguy02/Doors.
If you want to see the exact state it was in when I did my technical interview, go to this point in the commit history: commit link
Interviews
There are two interviews: a screening interview and a technical interview. The screening interview is pretty straightforward. Be prepared to answer typical interview questions: why this opportunity, time you worked on a team, etc. You got this.
Lucky for you, the technical interview isn’t like industry interviews. There’s no Leetcoding. Instead, you’ll be having a conversation about your code sample. My advice for this one is to do your homework and prepare. Polish your project up until the day of your interview–clean up the README, remove pointless comments, refactor ugly code, etc.–and be ready to talk about what you’ve learned. Personally, I prepared a slideshow and a short demo video (which I actually didn’t have time to show during the interview LOL). If you can give an example of a bug you found, fixed, and learned from, that’ll go a long way. If you can demonstrate that you stretched out of your comfort zone for this project, even better. Note that the project doesn’t necessarily have to be related to the track you’re going for. That’ll help, of course, but my code sample for the SRE track was a mobile app using a BaaS.
Matching Stage
If you made it past your interviews, congratulations, you’re almost done. The final stage is the matching stage, where the Fellowship team reviews all they know about you finds a program and team match for you. You’ll get a form to fill out. Afterwards, it’s mostly out of your control, so if you feel proud of yourself and like you deserve a little break from MLH at this point, by all means, take some self-care time and wait to hear back; you earned it :D. Personally, I was a nervous wreck at this point because I didn’t have anything lined up for the summer, so I kept going. I’d heard that the Fellowship team was looking for applicants with Python experience but my only Python projects were old and not representative of my ability. I spent the next week-ish after my technical interview in my room spinning up two quick Python projects that I felt would prove I was what they were looking for in case they looked at my GitHub. I don’t know if this made a difference in the end, but it certainly made me feel a little better. Some more time passed. The Fellowship start date was coming up really soon and I hadn’t heard back, so I thought it was over. I was checking my email multiple times daily hoping for any news, but I was also going camping that week, so service was limited.
I was a little disappointed and was accepting that it would be another summer of classes, until one day during my trip, I got to an area with good cell service, checked my email, and saw the email…
Closing
I really hope this blog post was helpful, or at least entertaining, to you. I tried to be specific, but I also didn’t want to share every little detail. If you want to ask me any questions or chat with me, please reach out! My LinkedIn is https://linkedin.com/in/alejandrovillate1. I’m always more than happy to answer any questions. I’m rooting for you!
More Links:
- MLH Fellowship page
- https://itispragativerma.medium.com/my-journey-at-the-mlh-fellowship-a1145e260c09
- https://dev.to/pawankolhe/applying-to-the-mlh-fellowship-tips-tricks-1jc1
- https://medium.com/@TharunKumarReddyPolu/mlh-fellowship-my-journey-from-application-to-selection-b444efb85855
- https://dev.to/lakshyakhatri/my-journey-as-an-mlh-fellow-2l6b