In January 2012, three Twitter engineers were in charge of writing and maintaining the entire codebase for Android. New versions of the app were released every two to three months. Twitter’s mobile development needed to scale way up, and to do that the social networking company needed not only to restructure its development team, but also to change its corporate culture.
Twitter for Android engineering manager Jan Chong spoke at the Velocity Web Operations and Performance conference in New York City. Her presentation on “Scaling Android Development” talked about the road from a single team-based development model to a project-based model across distributed development teams. The first thing Twitter had to do, she said, was to break away from its fixed way of thinking, and start thinking about development in a mobile-first context.
“Twitter had Web Brain,” Chong said. “It came of age on the Web and had its initial growth in this area, which provided a lot of challenges when we wanted to go mobile.”
Shifting to mobile-first, Android-first
Twitter for Android began in 2011 with three developers and one designer, including Chong. After convincing the company’s executive board of the need for a more robust mobile presence, she was able to grow the app team from three to a dozen over the next year and a half, accelerating the app’s release cadence from every 8-12 weeks to once a month, then bi-monthly.
In shifting from a Web-first to a mobile-first philosophy, Chong and the Twitter for Android team had to nix Twitter’s #ShipIT concept, getting a release out as fast as possible. One complication of developing for Android as opposed to iOS is that users choose when to install an upgrade. On the Web, an inexperienced developer can code functionality and bugs aren’t as big a big deal, she explained. On Android, bugs can live a lot longer out in the wild, which has implications for API design. While in 2014 more than 80% of the Twitter for Android user base is running Jelly Bean or above, that still leaves several different operating systems to ship upgrades for on a weekly basis, before even factoring in device fragmentation.
“After you release a version, be prepared to support it for two years to avoid cutting off active users,” Chong said.
A constant state of flux
In the past nine months, the Twitter for Android team has grown rapidly from a staff of twelve to dozens, with 12-15 independent product groups including the frameworks team, the UI team, and the performance and stability team. The app has also moved to a weekly release cadence where two releases are always staggered: one in active development and one in bug fixes, with a mostly automated “bake” at the end and a new release branch every Friday.