This summer (post-sophomore year) I worked at Facebook as a Software Development Intern on the Facebook Messenger team. Facebook Messenger is a free alternative to SMS that allows you to send Facebook messages to your close friends in a manner that resembles texting.
I chose to work on the Facebook Messenger team for a few reasons. One was my experience with mobile software development, specifically iPhone-based. I interned the previous summer for Klout on their iPhone team and even before that had begun creating iPhone small apps in my free time. Another reason was that Facebook is prioritizing mobile, and especially mobile messaging, more than ever before. Across all devices, a number of apps have saturated the SMS alternative space: WhatsApp, Line, Viber, Tango, and KakaoTalk, to name a few. WhatsApp, for example, handles nearly 12 billion outgoing message sends per day and is one of the hottest tech companies around.
Naturally, Facebook wants to compete with and catch up to WhatsApp. WhatsApp has roughly 300 million monthly active users, compared to about 100 million for Facebook Messenger. So I thought an intern experience on arguably the most mature team at Facebook (due to the fierce competition) would be a great way to spend the summer. When I arrived, I saw immediately the best parts of Facebook – everyone moving at breakneck speed, empowered engineers creating new features from the bottom up (as opposed to managers telling them what to make), and a company culture that makes the place seem like a startup even though Facebook recently passed the 5000-employee mark. I started right away exploring the code base and fixing a few small bugs, like an iPad bug that played chat sound effects at the wrong volume. After about a week of getting into the swing of things, I started on my two projects for the summer.
The first project was to create an alert banner infrastructure for the message view page. When you’re in a group conversation on Facebook Messenger, alert banners can appear if you lose your network connection, if you disable push notifications, etc. My assignment was to rewrite roughly a third of the existing code to ensure that multiple banners could be displayed at the same time and would animate themselves to make sure everything was visible. For example, if two banners should appear at the same time, they shouldn’t stack on top of each other so only one is visible – one should appear above the other one, and they should slide in smoothly without distracting the user’s attention.
The second project, which I spent roughly 75% of my time working on during the summer, was a more backend – and data-intensive project. Part of Facebook’s effort to improve Messenger included a huge push toward more data measurement, and my job was to establish three end-to-end data pipelines that would log data from the app and send it to an internal console that could be viewed by any Facebook employee. The three pipelines I created measured DNS lookups, network requests, and cache fetches. For example, when the messages inbox loads when you launch the app, your friends’ profile pictures are fetched from a Facebook database. I measured how long it took to fetch those pictures. The common element with the three elements that I measured (DNS lookups, network requests, and cache fetches) is data usage by the application – now that this data is visible to the rest of the team, they will analyze it to make future improvements that will reduce the app’s battery consumption.
My changes will be pushed to all users of Facebook Messenger later this month. I look forward to seeing them in the live app and also to being Facebook’s Campus Rep at Penn for the 2013-2014 school year. All in all, I had a great summer!
Jeff is a current M&T junior in the Class of 2015. He studies Computer Science within Penn Engineering and Management and Entrepreneurship & Innovation in the Wharton School. In addition to academics, Jeff is Vice-President of the M&T Student Board.