Your SlideShare is downloading. ×
  • Like
Droidcon2013 facebook stewart
Upcoming SlideShare
Loading in...5

Thanks for flagging this SlideShare!

Oops! An error has occurred.


Now you can save presentations on your phone or tablet

Available for both IPhone and Android

Text the download link to your phone

Standard text messaging rates apply

Droidcon2013 facebook stewart



  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads


Total Views
On SlideShare
From Embeds
Number of Embeds



Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

    No notes for slide


  • 1. Simon Facebook for Android1
  • 2. Mid 2012: becoming native▪ “We were never able to get the quality that we wanted. Looking back, that’s probablyone of the biggest if not the biggest mistake [we made]”
  • 3. Engineers committing mobile code3
  • 4. (but there are spoons)There is no Android team4
  • 5. A developer’s day5
  • 6. Build6
  • 7. The working copy▪ We use git for source control▪ Two branches we care about day-to-day:▪ master▪ stable7
  • 8. How the code is organizedText
  • 9. ▪ git checkout -b fancy_feature▪ hack, hack, hack▪ git commit -am ‘Fancy new feature’▪ git rebase origin/stable▪ hack, hack, hack,▪ git commit -am ‘checkpoint’▪ git rebase -i HEAD~2▪ arc diff9
  • 10. Dependency injection
  • 11. Test11
  • 12. Developers write tests12
  • 13. Unit tests
  • 14. Larger tests
  • 15. Commit15
  • 16. Code review▪ arc diff16
  • 17. Image macros17
  • 18. Arcanist▪ The command line counterpart to Phabricator▪ arc lint▪ Runs Android’s own lint tool▪ Checks for common errors:▪ Null pointers▪ Using APIs unavailable in all supported Android versions▪ arc land▪ Pushes code into the tree18
  • 19. Buildbot19
  • 20. Dogfood20
  • 21. Gingerbread▪ Still incredibly popular.▪ Some employees use a Gingerbread device▪ Including our release manager21
  • 22. Updates▪ Employees use more recent version of the apps▪ Rage shake to report bugs
  • 23. Release23
  • 24. Pick twoFeatures, quality, schedule24
  • 25. Time based releasesText
  • 26. “Done” isn’t just native code▪ Design▪ Release branch doesn’t take design changes, implies work isn’t quite ready▪ Logging▪ How do we know we aren’t regressing without data?▪ Server-Side▪ We need to test the interactions our users will see▪ Privacy and Legal review▪ Just as important as code review26
  • 27. Questions?27