Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Scaling Mobile Development

1,960 views

Published on

Lookout iOS developer Stephanie Shupe presented at the Grace Hopper Celebration of Women in Computing on October 10, 2014. She explains the processes that Lookout has used to successfully scale its mobile app.

Published in: Technology
  • Be the first to comment

Scaling Mobile Development

  1. 1. Scaling Mobile Development Stephanie Shupe @steph_shupe Software Engineer, Lookout October 10, 2014 2014 #GHC14 2014
  2. 2. Development Team Evolution 2014
  3. 3. Development Team Evolution 2014
  4. 4. Development Team Evolution 2014
  5. 5. Development Team Evolution 2014
  6. 6. Development Team Evolution 2014
  7. 7. Outline § Lookout Case Study § Tools to scale mobile development § Key Recommendations 2014
  8. 8. Lookout iOS App Case Study § New Product ~2011 § Team grew from 1 to 6 developers § Processes developed as team grew in size 2014
  9. 9. Lookout iOS App Versions 2014 3 2.5 2 1.5 1 0.5 0
  10. 10. App Versions v. Developers 2014 7 6 5 4 3 2 1 0 Sep-11 Jun-12 Mar-13 Dec-13 Sep-14 iOS App Version Developers
  11. 11. App Versions v. Developers 2014 7 6 5 4 3 2 1 0 Sep-11 Jun-12 Mar-13 Dec-13 Sep-14 iOS App Version Developers
  12. 12. Tools for any size team Process / Tool 1 dev 2-4 devs 5+ devs Version Control l l l Planning Tool m m l Unit Testing l l l Code Review Tool m l Integration Testing m l Automated UI Testing m m l Continuous Integration m l Localization Tool m Code Style Guideline l Release Process l 2014
  13. 13. Workflow 2014 New Task Write Code • Write Tests • Localize* Verify Code • Build Project • Run Tests Peer Review Commit Code Release to Market • Quality Assurance
  14. 14. Workflow 2014 New Task Write Code • Localize* • Write Tests Verify Code • Build Project • Run Tests Peer Review Commit Code Release to Market • Quality Assurance
  15. 15. Planning Tool 2014 § Lightweight − Whiteboard − To-Do Lists § Heavyweight − Task Managing Software / Website
  16. 16. Planning Tool https://www.atlassian.com/software/jira 2014
  17. 17. Planning Tool 2014
  18. 18. Workflow 2014 New Task Write Code • Write Tests • Localize* Verify Code • Build Project • Run Tests Peer Review Commit Code Release to Market • Quality Assurance
  19. 19. Writing Code… My project no longer compiles?! 2014
  20. 20. Version Control git-scm.com github.com 2014
  21. 21. Version Control 2014 github.com
  22. 22. Writing Code… What’s the style? 2014
  23. 23. Code Style Guideline 2014
  24. 24. Writing Code… Wir haben andere Sprachen? 2014
  25. 25. Localization Management 2014 § Lightweight − Email strings files back and forth § Heavyweight − Localization Tool
  26. 26. Localization Tool 2014
  27. 27. Localization Tool § Command line tool § Graphical interface for translators § Cross-project translation database 2014
  28. 28. Writing Code… Something is broken, but I don’t know why! 2014
  29. 29. Unit Testing 2014 describe(@"+isExpired:", ^{ context(@"when date occurred in past", ^{ beforeEach(^{ subject = [NSDate dateWithTimeIntervalSinceNow:-­‐10]; }); it(@"should return expired", ^{ [[theValue([NSDate isExpired:subject]) should] beYes]; }); }); context(@"when date occurs in future", ^{ beforeEach(^{ subject = [NSDate dateWithTimeIntervalSinceNow:1000000]; }); it(@"should return not expired", ^{ [[theValue([NSDate isExpired:subject]) should] beNo]; }); }); });
  30. 30. Integration Testing context(@"when a request is made with malformed data", ^{ it(@"should return an error", ^AsyncBlock { Request *request = [Request new]; 2014 ... expect(error).toNot.beNil(); expect(httpResponse.statusCode).to.equal(500); [client enqueueRequest:request]; }); });
  31. 31. Automated User Interface Testing § Automates Manual Tests § Test the same app you submit to the marketplace 2014
  32. 32. Automated User Interface Testing Run Tests Generate Screen shots Linguistic Verification 2014 Quality Assurance
  33. 33. Automated User Interface Testing § Open Source § Interacts with UI Elements § Tests can be written in Ruby, Java, ObjC 2014 https://saucelabs.com/appium
  34. 34. 2014
  35. 35. Automated User Interface Testing 2014 Language English Japanese Russian German Spanish French Device Resolution (px) 480x320 960x640 1024x768 1136x640 1334x750 1920x1080 2048x1536 OS Version iOS 6 iOS 7 iOS 8
  36. 36. Automated User Interface Testing 6 languages x 7 supported device resolutions x 3 supported OS Versions 126 Combinations 2014
  37. 37. iOS App Crashes v. Automated Tests 2014
  38. 38. Workflow 2014 New Task Write Code • Write Tests • Localize* Verify Code • Build Project • Run Tests Peer Review Commit Code Release to Market • Quality Assurance
  39. 39. Verifying Code 2014 § Lightweight − Manually compile project − Manually run tests − Minimal Continuous Integration § Heavyweight − Continuous Integration
  40. 40. Continuous Integration − pre- or post- code check in § Run test suites § Report back status § Code Review plugin support 2014 § Build project http://jenkins-ci.org/
  41. 41. Continuous Integration 2014 http://jenkins-ci.org/
  42. 42. Workflow 2014 New Task Write Code • Write Tests • Localize* Verify Code • Build Project • Run Tests Peer Review Commit Code Release to Market • Quality Assurance
  43. 43. Reviewing Code… How do I know that this code is any good? 2014
  44. 44. Code Review Tool https://code.google.com/p/gerrit/ 2014
  45. 45. Code Review Tool Push Code • git push gerrit HEAD:refs/publish/master Gerrit • Kick off Jenkins Build* • Code review interface Jenkins 2014 • Task number? • Project builds? • Tests pass?
  46. 46. Workflow 2014 New Task Write Code • Write Tests • Localize* Verify Code • Build Project • Run Tests Peer Review Commit Code Release to Market • Quality Assurance
  47. 47. Committing Code… I’ve committed, so I’m done. 2014
  48. 48. Workflow 2014 New Task Write Code • Write Tests • Localize* Verify Code • Build Project • Run Tests Peer Review Commit Code Release to Market • Quality Assurance
  49. 49. Releasing Code… There isn’t a magical ‘Release’ button? 2014
  50. 50. Release Process 2014
  51. 51. Tools for any size team Process / Tool 1 dev 2-4 devs 5+ devs Version Control l l l Planning Tool m m l Unit Testing l l l Code Review Tool m l Integration Testing m l Automated UI Testing m m l Continuous Integration m l Localization Tool m Code Style Guideline l Release Process l 2014
  52. 52. Lookout’s Mobile Dev Toolbelt Process / Tool What Lookout Uses Version Control Git Planning Tool JIRA Unit Testing JUnit, Kiwi Code Review Tool Gerrit Integration Testing Robotium, Specta Automated User Interface Testing Appium Continuous Integration Jenkins Localization Tool Web Translate It (WTI) Code Style Guideline Google / Apple code style guidelines Release Process Wiki documents 2014
  53. 53. Additional tools to consider § Code coverage § Code guideline enforcement § Automated releases § Automated builder setup § Crash tooling § Error logging § Agile Processes § Performance testing § Code Modularization § Dependency Manager 2014
  54. 54. Got Feedback? Rate and Review the session using the GHC Mobile App To download visit www.gracehopper.org 2014

×