A year of Stories: Launching is the easy part

Instagram Engineering
Instagram Engineering
8 min readAug 2, 2017

--

One year ago today we launched Instagram Stories to the world. We knew we were making a major change to a product that hundreds of millions of people around the world love and use daily. The weight of this responsibility — plus the opportunity to create something new and delightful for the Instagram community — drove the team to do our best work. After months spent discussing, designing, and building, the final weeks of the project were both stressful and rewarding as the whole company came together to make the launch a success.

Photo credits: @pamelachen and @johnbarnett

…And then it was out there. The urgency of shipping quickly gave way to anxious anticipation. With eyes glued to metrics dashboards, we waited to see how the community would respond. Within a few weeks, we could see a clear pattern of growth that indicated we had found market fit. This is where the real journey began.

How do you transition from the intensity of shipping to the sustained focus needed to succeed in the long run?

Shipping a new product is characterized by focused intensity, but maintaining a growing product is all about balance. Balance between adding new features and keeping the app fast and stable; between structured prioritization of work and providing opportunities for creativity and fresh ideas; between bringing new features to market quickly and patient craftsmanship; between maintaining a small, tight-knit team and attracting contributors with new skills and perspectives.

It’s impossible to strike these balances perfectly. The best you can hope for is to make the right correction when you sense things are going too far in one direction. Here are a few examples of how we found balance over the past year.

Balance Adding New Features With Stability and Performance

Leading up to the launch, we went through an exercise to prioritize all the outstanding feature work to determine what would be included in the first version. Cutting unnecessary features is an important discipline to practice when launching and maintaining a product. Our product manager, Nathan Sharp, worked with the team and our leadership to create a burndown list of feature work so engineers and designers always knew the next high-priority item whenever a project was completed. The features on this list were inspired by feedback from the community, user research, and our own intuition. We particularly sought out opportunities to parlay Instagram’s strengths as a platform into delightful new experiences.

@ mentions

Thinking along these lines led to one of our first significant feature updates, @mentions. We noticed a trend of story posts that called out other accounts by mentioning them with an @ symbol. We realized we could enhance this experience to support social context, discovery, and distribution.

@mentions align well with our mission of strengthening relationships using Instagram’s graph of friends and interests to share who you’re with or who you’re thinking about. We also took advantage of Instagram Direct messaging as a way to send notifications about mentions privately so the mentioned person could enjoy the moment as well. The Stories viewer receives extra metadata so the mention text is interactive and navigates the user to the mentioned account’s profile.

Performance as a feature

Creating new experiences like @mentions was a constant source of motivation for the team, but we also realized the importance of balancing new feature work with improving the quality of existing features. We designed our engineering schedule to include breaks in new feature development for dedicated performance and quality sprints. Refactoring code to be more flexible, improving logging, fixing crashes, and performance tuning were recognized as equally valuable uses of time. In fact, some of these engineering-driven projects led to some of our largest increases in user engagement.

For example, iOS engineer Ryan Olson worked with Rui Wang, a backend engineer in our New York office, to develop a flexible system to control media fetching based on user behavior. This enables optimization for story viewer responsiveness without impacting other parts of the user experience. These improvements drove large gains in story consumption participation and story impressions, and also increased participation in story production. The wins we saw outside of the directly affected area demonstrate that making the product perform better in one area drives overall engagement, as users receive a higher quality and more enjoyable experience.

Balance Structured Priorities with Opportunities For Creativity

Thanks to our burndown list, the engineering team always knew the next priority — whether it was a new feature or a prioritized bit of performance and stability work. This structure helped the team plan and distribute work among engineers, but still allowed flexibility to pursue innovative new ideas.

A core value of the Stories team culture is appreciation for creativity and initiative. We know that good ideas can come from anyone on the team, regardless of their role, and we encourage engineers to prototype ideas they are excited about. Often these ideas make their way into the app, and the opportunity to influence the roadmap motivates us and continually infuses the product with fresh ideas.

Creative tools

A great example of this was the development of our “Selfie Sticker” feature. Eric Smith, a product engineer on iOS, realized that sometimes you want to show your reaction to a moment in your story. He developed a prototype that added a selfie camera overlay to a post, which would take a picture and include it as a sticker in the final render. Everyone on the team loved the feature so we shipped it. The community has embraced selfie stickers and we see new creative uses of it every day.

Another example of an engineering-driven feature was Rewind. In order to build our sticker pinning feature, we needed to be able to backtrack through a video to find where a pixel region was at the beginning. In the process of building this, we developed an approach for reversing videos that we thought might be fun as a new capture format. After sharing a few ridiculous videos of team members reverse jumping off tables and chairs we were convinced. Because the engineering work was essentially a by-product of another feature we were already working on, the relative cost of shipping Rewind was low. We shipped it and the community has enjoyed having a new creative tool to tell their stories.

Balancing Moving Fast With Craftsmanship

At Instagram our engineering motto is “Do the simple thing first”. The idea is not that you should cut corners, but that you should try to distill the problem you are solving into its simplest form and solve it with focus and quality. Asking, “Am I doing the simple thing first?” is a great test to apply when you’re building the first version of a product, but how does that translate to V2, V3, and V(n)? It’s actually just the same rule on a new baseline, or you could say “Do the next simplest thing next.” By adding complexity in layers, you maintain the velocity to deliver a steady stream of improvements to the product.

The discipline of doing the simple thing first is balanced with an appreciation for details and craft. Sometimes a little extra finishing touch can make a huge difference in how delightful the product is to use. Good product engineers are able to get to the core of what a feature is trying to accomplish, implement that goal as simply as possibly, and polish it to a mirror finish.

Stickers on Android

One example of the type of craftsmanship we value was the work of Kevin Jung on the Android sticker UI. The mockups called for a blurry translucent background behind the sticker drawer so the photo or video beneath could show through. Android does not provide a built-in component for achieving this, and falling back to a darkened layer didn’t feel right in our UI. Kevin decided to develop a reusable component for blurring the contents below a view. The component paints a Drawable with a sampled down capture of the view hierarchy beneath it and processes the blur through a fast native library. This BlurDrawable can even handle playing video by capturing frames from a TextureView and merging them with the rest of the hierarchy. There are challenging memory and performance constraints to overcome in order to make this component work smoothly on a wide range of Android devices, but the time investment was worth it. That blurry background really ties the room together.

Balance Maintaining Core Values With Expanding the Team

The sprint to launch Stories was both stressful and inspiring. The team cared deeply about bringing this experience to our community and we spent long hours working toward our goal. Memories of sleeping bags in conference rooms and weekends spent polishing all the rough edges come to mind, but this bonded the team with a shared vision and values of collaboration, ownership, and creativity. This enabled us to work well together and achieve the balances needed to grow the product over the past year.

As Stories grew to be a more and more prominent part of the Instagram experience, we looked for people to join the team who shared our values, but also brought new perspectives and skills to the project. New engineers filled out the team, like Nick Freeman, our first dedicated server engineer; Timothy Kukulski, who implemented a cross platform system for our creative drawing tools; Bogdan Chiritoiu, who helped launch camera effects on Android; and Shiyi Zhao, who led the stickers project on iOS. We grew at a sustainable pace to ensure our values were maintained and enhanced as new people joined.

We also collaborated with other teams to share the responsibility of growing Stories. Sharing our vision and values with these teams helped us function as one. An example of this was our work to enable face effects in Stories, which was one of the top requests from our community. The investment required to quickly build a camera effects platform from scratch was prohibitive, so we looked beyond our team for assistance. Frank Du, our camera tech lead, coordinated with a core technology team to integrate a shared camera platform that enables these kinds of effects. During the integration process, Frank guided the team toward simplicity and craftsmanship, resulting in improvements to the library that allowed us to integrate it with our codebase and make it better for all consumers.

The Next Chapter

Today Instagram Stories has over 250 million active users and is continuing to grow. It’s hard to imagine Instagram without Stories at this point; however, from the moment the project began, success was never guaranteed. In the past year, the team found the intensity and focus to launch and the balance to maintain and grow the product. I’ve mentioned just a few of the people who worked so hard to get us where we are today, but there are many more talented engineers contributing in big and small ways every day. We’re all looking forward to the next year of challenges and bringing new ways for our community to strengthen relationships and share experiences. We’ll need more help in the coming year so if you are excited about this mission, please consider joining us!

Will Bailey is an engineer on the Stories team.

--

--