Facebook Paper iOS App

Facebook Paper : What was it like to help develop Facebook iOS Apps? ?

Answer by Jason Barrett Prado:

Working on Paper has been the best and most challenging experience of my career.

Paper was designed on a principle: content should be respected. Facebook is supposed to be like a glass through which you can see its contents. This has been an aspirational goal for a long time, but in reality many of the pixels on the screen in our products are not content, they are chrome.

If we are trying to respect content, we should minimize chrome in a radical way. Everything on screen should be a user’s content, whether it’s their picture, their name, their posts, or their photos. Paper has almost nothing on screen except for user-generated content.

If content is to be respected, it should be beautifully presented. I think we nailed this. By polishing every detail–obsessive performance optimizations, perfect gesture handling, delightful interactions, and beautiful layouts–we make a container suitable for beautiful content. Facebook can be beautiful, but I feel that the design of previous Facebook products does not inspire users to create and post beautiful content. I hope that Paper does.

I think the team behind Paper might be the best iOS team anywhere in the world, including Cupertino. Mike Matas basically came to Facebook to build a product like Paper. His co-founder at Push Pop, Kimon Tsinteris, got caught up building the native rewrite of the main iOS app for a long time before moving to Paper. A lot of members of the team had worked together before, some for many years. Tim Omernick, who started working at Omni as a teenager, had worked with Mike at Delicious Monster and Apple. Kimon was at Apple too. The team’s manager, Scott Goodson, was also at Apple, as were Brian Amerige and Sharon Hwang. Brandon Walkin, who built most of Origami, and Andrew Pouliot knew each other from iOS circles. I had gone to school with Ben Cunningham and hadn’t seen him in years, but I ran into him at Zeitgeist (thanks Foursquare!) and he showed me a beautiful app he had made; a few weeks later he joined the team. Grant Paul, a prominent figure in the jailbreaking community, finished high school while working on Paper.

Mark Slee and James Wang, long time Facebookers, worked on the early prototype of Paper but were on their way out when I joined the team over a year before the launch. A few times an old Facebooker who was now manager/director of something or other would want to try coding again and would do a hackamonth on the Paper team since it was the sexy new product, but after the month would realize they could just retire instead. More power to them.

The team also has an interesting mix of cultures. If Facebook’s predominant motto is “move fast break things” (though we are always trying to deprecate it), Apple’s is the complete opposite. Since many of the early team members were from Apple, their culture of polish and being design-led set the tone for the product. Sometimes the Apple and Facebook culture mixed like oil and water. There was a world where we shipped much, much earlier at significantly lower quality. That did not sit well with the team as we were committed to our principles. Paper is one of the longest-running products at Facebook, and it is a testament to Facebook’s experimental culture that Paper was even given a chance to ship even though it didn’t fit any existing molds. I’m excited to continue this process with Facebook Creative Labs.

We went through more product churn than we would have liked. Our principles guided us throughout the product, but our goals changed a lot between our prototype and shipping. Facebook has been conducting experiments in new ways to organize content for years, and none have really worked yet. Interest lists and related features have not taken off in any significant way, and Paper tried a few more ways of breaking content into sections before we took the plunge and committed to curating the best content in over a dozen categories. Looking back it is obvious, but our early attempts at simple filters like ‘Photos’ and ‘News’ are naive compared to the sections we ended up shipping.

We plan to share more details about the engineering in the future through blog posts or tech talks. Our problems involve scale and performance.

Though Paper had a small engineering staff for most of its life so far, it still lives in the codebase of the other mobile apps at Facebook that has hundreds of regular contributors. Facebook is doing mobile development at a massive scale. Sharing code with hundreds of engineers is hard in any organization but especially hard in a new programming paradigm (mobile, native) where our tooling is immature. (Xcode can’t handle our scale—our xcworkspace has too many files in it and Xcode takes 45 seconds to open. see: https://twitter.com/cdespinosa/status/430223437529763840)

In our push for polish we had a goal of never dropping a frame on high-end devices, and we mostly achieved that goal. The engineering complexity here is finding a way to fully utilize the multicore architecture of newer iPhones on top of the UIKit framework which has no support for multithreading. Significant work went into creating a framework for doing rendering work on multiple threads, and we spent a long time finding the balance between performance and complexity. Turning synchronous operations into asynchronous ones adds a lot of cognitive overhead, and this was one of the biggest challenges of the project.

Shipping feels amazing. I can’t wait to see people using Paper in the real world. Seeing strangers play with our delightful interactions, each obsessively tuned, will be a joy. I’ll be slowly transitioning off of Paper and onto a related project, still within Creative Labs. Working on Paper has been a special experience, and I hope our users love it.

View Answer on Quora


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s