My Summer Internship at Coursera

SITE NAME
2016-10-24T22:56:00+00:00

Hi I’m Meiri, and I’m a rising senior majoring in economics and computer science at Swarthmore College. This summer, I had the amazing opportunity to intern as a back-end software engineer on the Learning Experience Team (internally called FLEX) at Coursera!

How I Got the Internship

Why did I choose to intern at Coursera? First was the mission. I have always been very motivated by social impact, and one of my most important personal criteria is working at a company that makes a difference in disadvantaged people’s lives. Coursera is a perfect example of applying the power of technology and its scalability to create social impact. 80% of Coursera’s 20 million learners come from outside the US, many from developing countries. Its mission is to “universalize access to the world’s best education,” which really resonated with me.

The second motivation came from the desire to try out something different. After interning at various large companies and on exclusively infrastructure teams, I was intrigued to experience the fast-moving pace of a smaller company and to work on a user-facing product team.

I had first learned about MOOCs and Coursera in sophomore year of college, when one of my favorite bloggers Scott Young explained how he completed a four-year degree in computer science entirely through freely available online content. I had two thoughts: one, this is awesome, and two, why am I paying over $50,000 a year for a college degree when I can learn everything online for free? This lead to a minor quarter-life crisis where I almost dropped out of college. Thanks Coursera. I took my first Coursera course, Psychology of Popularity (great course, btw), on a whim during finals to procrastinate on doing actual schoolwork.

My first interaction with Coursera was when they contacted me after I submitted my resume to Start @ a Startup, a conference in New York City. I did a phone interview with an engineer, and then chatted with Ngiam, the Director of Engineering at Coursera, at the conference. I found out I got the offer, then had multiple rounds of calls with my hiring manager on my team, Priyank, as he patiently but surely convinced me Coursera would be the best working experience of my life yet. Everyone throughout the process thoroughly impressed me with their passion, intelligence, and patience.

What I Worked On

At Coursera, I really appreciated that even as an intern, I was able to work on a variety of projects with high impact for users. As a newbie at Scala, which the whole backend of Coursera is built in, I was somewhat intimidated at first. However, I soon realized there was nothing to fear as my mentor, Nikhil, helped me quickly ramp up by always being available to ask questions and providing meticulous code reviews. Soon I felt like I was just another member of the team, making active contributions to team-wide initiatives.

My first project was implementing submission rate limiting. Rate limiting submissions allows an instructor to limit how many times an assignment can be submitted in a given time interval, for example one time every 3 hours. This lag between multiple submissions discourages a learner from cheating on assignments by simply submitting an incorrect assignment at first in order to get the right answers without trying. This project familiarized me with the programming assignments platform and I really appreciated all the detailed code reviews I received to help me improve as an engineer.

The next feature I built was a pedagogy checker for teachers. Coursera cares about the quality of its courses and has a set of pedagogical guidelines for course creators, such as having feedback for quizzes and having an adequate number of assessments. The pedagogy checker would check the existing course content to validate if the course met the guidelines and display which criteria were met. This feedback would help instructors improve course quality. This project was really helpful for me to learn about all the different types of content in a course and work with the various data models.

My third main project was about email notifications for forums. Initially, when a forum action is performed, such as creating a new question or answer, email notifications would be sent in the same web request. This caused requests to be slow, especially if there were a lot of subscribers for that forum. I rewrote forum email notifications to be asynchronous and log forum changes to Apache Kafka, a publish-subscribe messaging system, to be processed later. Since the entire forums backend was being re-architected from scratch during this time, I also helped refactor some forum features to be compatible with the new infrastructure.

Fun Times

How should I describe the Coursera culture? Two words: BOBA TIME. No really, Coursera takes boba very seriously. We put in group orders for boba tea multiple times a week through an internally created Slack bot called BobaMaster, and my weekly 1:1’s consisted of driving downtown for boba.

My coworkers were truly the best part of my internship. I was instantly welcomed into the fun and inclusive Coursera family. Within the first week, I was invited along to an unofficial weekend trip to Point Lobos with the mobile team. Engineers went out to dinner together multiple times each week. Friday company happy hours were complemented with beer club every Monday afternoon and tea-time with baked goods every Tuesday. For one of the tea times, I helped another engineer Alex make and serve boba from scratch.

The recruiting team, led by Gelila, did a great job organizing some super fun intern events. We went for a cruise on the Bay, Museum of Modern Art, and took a day trip to the SF Zoo!

Conclusion

My internship at Coursera was filled with an amazing combination of high-impact projects, a ton of learning, and some of the nicest people you can find anywhere. Anyone who is interested in a company with a impactful mission and exceptional engineering team should consider Coursera.