Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Empowering iOS Developers

Empowering iOS Developers

Given at MobileEra in Oslo on November 8, 2019

Samuel E. Giddins

November 08, 2019
Tweet

More Decks by Samuel E. Giddins

Other Decks in Technology

Transcript

  1. Empowering iOS
    Developers
    Samuel Giddins
    Empowering iOS Developers – Samuel Giddins @ MobileEra 2019 1

    View Slide

  2. Samuel Giddins
    Mobile Developer Experience @ Square
    Empowering iOS Developers – Samuel Giddins @ MobileEra 2019 2

    View Slide

  3. Formerly:
    ‣ iOS Open Source
    ‣ RubyGems
    ‣ Bundler
    ‣ Realm
    ‣ CocoaPods
    Empowering iOS Developers – Samuel Giddins @ MobileEra 2019 3

    View Slide

  4. What do all these all have in common?
    Empowering iOS Developers – Samuel Giddins @ MobileEra 2019 4

    View Slide

  5. What do all these all have in common?
    Building tools for other developers
    Empowering iOS Developers – Samuel Giddins @ MobileEra 2019 5

    View Slide

  6. Why build tools?
    ‣ Higher leverage
    ‣ Building things for those sitting around me
    ‣ Easier to do open source / share
    ‣ It's a unique skillset that's less common
    Empowering iOS Developers – Samuel Giddins @ MobileEra 2019 6

    View Slide

  7. So, what about this topic has to do with iOS Developers?
    Empowering iOS Developers – Samuel Giddins @ MobileEra 2019 7

    View Slide

  8. (Quick) Trip through history
    ‣ Pre-2.0
    ‣ Only jailbreak apps
    ‣ A few years of small apps
    ‣ Lots of apps built by agencies / consultancies
    ‣ iOS 7
    ‣ Everyone rewrote everything
    ‣ Apps got big
    ‣ Now
    ‣ Multinational companies base their business off of mobile apps
    Empowering iOS Developers – Samuel Giddins @ MobileEra 2019 8

    View Slide

  9. The largest iOS apps are bigger than some small companies'
    entire codebases (across all engineering disciplines)
    Empowering iOS Developers – Samuel Giddins @ MobileEra 2019 9

    View Slide

  10. Think
    ‣ Facebook
    ‣ Instagram
    ‣ Gmail
    ‣ Airbnb
    ‣ Uber
    ‣ Square
    Empowering iOS Developers – Samuel Giddins @ MobileEra 2019 10

    View Slide

  11. Even the smallest apps have gotten bigger,
    as platform expectations have grown
    Empowering iOS Developers – Samuel Giddins @ MobileEra 2019 11

    View Slide

  12. Before Now
    Nav bar & table view Rich collections
    Pixel-perfect PNGs Scalable designs
    CRUD APIs Instant syncing
    Multitasking
    Extensions
    Multiple input options
    State restoration
    Empowering iOS Developers – Samuel Giddins @ MobileEra 2019 12

    View Slide

  13. I work on a massive app.
    Empowering iOS Developers – Samuel Giddins @ MobileEra 2019 13

    View Slide

  14. I work on a massive app.
    We have 480+ source files.
    Empowering iOS Developers – Samuel Giddins @ MobileEra 2019 14

    View Slide

  15. I work on a massive app.
    We have 480+ source files.
    We have 480+ modules.
    Some of which have hundreds of files.
    Then there are the tests.
    Empowering iOS Developers – Samuel Giddins @ MobileEra 2019 15

    View Slide

  16. I work on a massive app 6 massive apps.
    Business reasons dictate we have multiple apps
    (and a couple of SDKs!)
    all built on a common platform.
    Empowering iOS Developers – Samuel Giddins @ MobileEra 2019 16

    View Slide

  17. Built by
    ‣ Multiple engineering teams
    ‣ across a half dozen different offices
    ‣ spanning different organizations in the company
    ‣ each with their own product managers & designers
    Empowering iOS Developers – Samuel Giddins @ MobileEra 2019 17

    View Slide

  18. 90% of those teams are responsible for
    shipping features
    Empowering iOS Developers – Samuel Giddins @ MobileEra 2019 18

    View Slide

  19. I’m in the 10%.
    I ship features to everyone else.
    Empowering iOS Developers – Samuel Giddins @ MobileEra 2019 19

    View Slide

  20. Server engineers hit this scale a long long time ago,
    they had a solution called platform engineering
    Empowering iOS Developers – Samuel Giddins @ MobileEra 2019 20

    View Slide

  21. Platform Engineering
    mix of devops stuff and writing frameworks
    Empowering iOS Developers – Samuel Giddins @ MobileEra 2019 21

    View Slide

  22. Platform Engineering
    Took longer on mobile because getting to scale took longer
    Empowering iOS Developers – Samuel Giddins @ MobileEra 2019 22

    View Slide

  23. All we need is what
     gives us!
    1
    The i
    OS Community
    Empowering iOS Developers – Samuel Giddins @ MobileEra 2019 23

    View Slide

  24. Then Now
    1-3 people collaborating on a
    single app, in their free time
    four thousand person
    business making money
    primarily through their apps
    Empowering iOS Developers – Samuel Giddins @ MobileEra 2019 24

    View Slide

  25. What can we provide?
    Empowering iOS Developers – Samuel Giddins @ MobileEra 2019 25

    View Slide

  26. What can we provide?
    Look to what server folks did!
    ‣ Developer environment
    ‣ Write some tests
    ‣ CI / automated testing setup
    ‣ Automated deployment
    ‣ “Frameworks”
    ‣ Task automation
    ‣ Build systems
    ‣ IDEs
    Empowering iOS Developers – Samuel Giddins @ MobileEra 2019 26

    View Slide

  27. The goal:
    allow engineers to
    focus on building product
    Empowering iOS Developers – Samuel Giddins @ MobileEra 2019 27

    View Slide

  28. Make the path from product managers & designers to the
    built app be as easy as possible
    Empowering iOS Developers – Samuel Giddins @ MobileEra 2019 28

    View Slide

  29. If you work on a small team, this may sound strange
    Empowering iOS Developers – Samuel Giddins @ MobileEra 2019 29

    View Slide

  30. If you work on a small team, this may sound strange
    but think of all the small parts of your job you try to ignore
    Empowering iOS Developers – Samuel Giddins @ MobileEra 2019 30

    View Slide

  31. ‣ Updating to new Xcode versions
    ‣ Keeping the build passing
    ‣ Uploading builds to testflight / the appstore
    ‣ Investigating Xcode doing something silly
    ‣ Speeding up a slow build
    ‣ Updating network request / response code
    ‣ Protobufs!
    Empowering iOS Developers – Samuel Giddins @ MobileEra 2019 31

    View Slide

  32. As you reach a certain team size,
    it makes sense to invest in expertise
    in those kinds of problems
    Empowering iOS Developers – Samuel Giddins @ MobileEra 2019 32

    View Slide

  33. There’s something in here for anyone to learn (regardless of team size)
    Empowering iOS Developers – Samuel Giddins @ MobileEra 2019 33

    View Slide

  34. For every complaint you see about something getting in the way
    see if you can invest in a permanant fix
    Empowering iOS Developers – Samuel Giddins @ MobileEra 2019 34

    View Slide

  35. everyday frustrations of being a developer pile up
    Empowering iOS Developers – Samuel Giddins @ MobileEra 2019 35

    View Slide

  36. 36

    View Slide

  37. No matter how many engineers you have,
    these frustrations are real costs your team faces
    Empowering iOS Developers – Samuel Giddins @ MobileEra 2019 37

    View Slide

  38. 38

    View Slide

  39. Every time master is red, someone has to go and look at why
    Empowering iOS Developers – Samuel Giddins @ MobileEra 2019 39

    View Slide

  40. hey, not to be a broken
    record, but i had to rebuild
    the same commit 27 times
    (no rebases, exact same SHA)
    to get a green build last night
    Empowering iOS Developers – Samuel Giddins @ MobileEra 2019 40

    View Slide

  41. github.com/square/refinement
    Selective test execution
    Empowering iOS Developers – Samuel Giddins @ MobileEra 2019 41

    View Slide

  42. I was on vacation
    !
    for a bit and came back this
    week and noticed that my builds were super fast!
    Sometimes I'd see some builds take 30-45 minutes
    (where I'd typically modify things that only touch
    Retail) but have noticed them go down to about 5
    minutes (except for ALL, but this went from 1h+ to
    about 30 minutes, with is still huge)! Just wanna
    say how awesome that is
    "
    , seeing the reduced build
    times have me nurse PRs with less time, and I
    presume freeing resources for other folks
    Empowering iOS Developers – Samuel Giddins @ MobileEra 2019 42

    View Slide

  43. Seller Monorepo Cash Monorepo
    With 0 involvement from me
    Empowering iOS Developers – Samuel Giddins @ MobileEra 2019 43

    View Slide

  44. 44

    View Slide

  45. Built for Scale
    Empowering iOS Developers – Samuel Giddins @ MobileEra 2019 45

    View Slide

  46. This kind of migration takes a lot of effort, and requires
    building up lots of specialized knowledge.
    Empowering iOS Developers – Samuel Giddins @ MobileEra 2019 46

    View Slide

  47. This kind of migration takes a lot of effort, and requires
    building up lots of specialized knowledge.
    Just like you wouldn’t ask a java server engineer to build up
    your table views,
    it’d be a mistake to have an iOS developer replace your build
    system
    Empowering iOS Developers – Samuel Giddins @ MobileEra 2019 47

    View Slide

  48. Projects like this require a combination of
    ownership & expertise
    Empowering iOS Developers – Samuel Giddins @ MobileEra 2019 48

    View Slide

  49. At Square, the Platform Engineering team is over 100 people
    for server
    Our MDX team is 2 for iOS and 4 for Android
    Empowering iOS Developers – Samuel Giddins @ MobileEra 2019 49

    View Slide

  50. Investing in these areas allows us to scale
    A team of 50 total mobile engineers to over 150
    1 app to over half a dozen
    Empowering iOS Developers – Samuel Giddins @ MobileEra 2019 50

    View Slide

  51. no matter the team size,
    investing in increased productivity
    & developer happiness is worth it
    Empowering iOS Developers – Samuel Giddins @ MobileEra 2019 51

    View Slide

  52. 52

    View Slide

  53. Samuel Giddins
    @segiddins
    Empowering iOS Developers – Samuel Giddins @ MobileEra 2019 53

    View Slide