“Own Your Code”: Facebook’s Engineering Shift Tackles the Problem of Mobile
Now, as the lion’s share of the social giant’s user base accesses the site via mobile devices, Facebook has undergone a major internal organizational shift, retooling product workflows to better focus on the phone.
Engineering teams are morphing. Software cycles are being rejiggered. It’s a materialization of the company’s newest mantra: “Mobile first.“
The Old Days
Facebook has taken flak for its mobile strategy for some time. Its smartphone apps, for example, were sluggish and underperforming compared to others like Twitter.
Some of the blame for these deficiencies is placed on a technology bet Facebook made years ago, making HTML5 a key component of its mobile strategy. Put simply, HTML5 is a coding language that can handle some of today’s more taxing Web features. And Facebook’s apps were built with heavy use of HTML5.
Using a language like HTML5 has its benefits. For one, it let Facebook spread much faster. Any phone with a Web browser can access Facebook’s mobile site, which the company spent much of its effort refining early on.
Not to mention that many of today’s engineers grew up using Web-based languages back in the early dot-com days. That makes it much easier to recruit talent for Facebook’s ever-growing engineering team.
But as we’ve moved toward a “native” world of smartphone app development, the classic Web-centric engineering emphasis is harder to maintain. “Pushing” a piece of new code live to the desktop and mobile Web is a much faster process than making changes to a native iOS or Android application. For native apps, there is a mandatory review of app changes from Apple’s App Store. And with every change made to an app, that means users need to download a new update to the app.
Previously, Facebook split dealing with these problems in two. Desktop coders were part of one group, while the mobile apps teams were separate. In fact, as product manager Dirk Stoop told me, the native iOS and Android apps were so small in the early days, only a handful of people were responsible for maintaining the iOS and Android applications — two of the most-downloaded apps in the entire world.
This wasn’t enough. Facebook’s Web-centric culture didn’t translate over to native app development the same way. Something had to change.
A Different Framework
The Facebook product structure of today looks very different than it did before. Teams are separated across the company by product rather than platform.
So, for example, the Facebook Messenger group, led by Facebook veteran Peter Deng, is one team composed of desktop, mobile and native engineers who create features for every place that this product appears. This is the same for Photos, the team which Stoop leads.
Both of those teams, you may recall, produce standalone apps outside of the proper “Facebook” native application. This, Deng tells me, is part of a strategy focusing on improving these products faster, essentially making each app a “testing ground” for the main Facebook app. If the team sees increased use in a specific feature in the standalone app, for example, that feature could be integrated into the main app.
Timing is also a focus. To shift the “push-whenever” mentality of a Web-focused coder, Facebook has put all new code updates into staggered release cycles.
Deng’s team, for instance, updates the iOS Messenger app every six weeks, like clockwork. This gives the team a better sense of deadlines and timing, while minimizing the amount of updates users need to download. Desktop coders still push more frequently, but are now relegated to doing so twice a day.
Perhaps the most drastic change is philosophical. Product managers want teams to “own their code,” to put more intention and responsibility behind any changes they make.
“This is about understanding that there is some level of permanence in the code you ship,” product manager Michael Sharon told me. “This is educating our people about quality.”
Facebook talks a big game. But is this shift actually going to benefit users?
Deng and his fellow product managers believe so. In a recent update, two of the most popular features from Messenger and Camera were integrated into the Facebook main iOS app. The idea is, Facebook’s app will get better, faster and stronger with the modular approach.
Not every timed release will be groundbreaking. Most have included bug fixes and optimizations, while others include better feature additions. It’s less about revamping the application and more about getting into a timing groove.
Ultimately, Facebook hopes the shift will pay off in the masses being happier with their mobile experience, unlike the old days when the native apps were built heavily with HTML5. Ideally, that makes for a more engaged, more active Facebook user.
That’ll let the engineering team rest a bit easier. At least until the next product cycle begins.