Slide 1

Slide 1 text

Empowering iOS Developers Samuel Giddins Empowering iOS Developers – Samuel Giddins @ MobileConf Thailand 2019 1

Slide 2

Slide 2 text

Samuel Giddins Mobile Developer Experience @ Square Empowering iOS Developers – Samuel Giddins @ MobileConf Thailand 2019 2

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

Why build tools? ‣ Higher leverage ‣ Building things for those sitting around me ‣ Easier to do open source / share Empowering iOS Developers – Samuel Giddins @ MobileConf Thailand 2019 6

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

(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 @ MobileConf Thailand 2019 8

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

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 @ MobileConf Thailand 2019 12

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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 @ MobileConf Thailand 2019 16

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

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 @ MobileConf Thailand 2019 24

Slide 25

Slide 25 text

What can we provide? Empowering iOS Developers – Samuel Giddins @ MobileConf Thailand 2019 25

Slide 26

Slide 26 text

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 @ MobileConf Thailand 2019 26

Slide 27

Slide 27 text

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

Slide 28

Slide 28 text

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

Slide 29

Slide 29 text

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

Slide 30

Slide 30 text

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 @ MobileConf Thailand 2019 30

Slide 31

Slide 31 text

‣ 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 @ MobileConf Thailand 2019 31

Slide 32

Slide 32 text

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

Slide 33

Slide 33 text

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

Slide 34

Slide 34 text

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 @ MobileConf Thailand 2019 34

Slide 35

Slide 35 text

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

Slide 36

Slide 36 text

36

Slide 37

Slide 37 text

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

Slide 38

Slide 38 text

38

Slide 39

Slide 39 text

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

Slide 40

Slide 40 text

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 @ MobileConf Thailand 2019 40

Slide 41

Slide 41 text

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

Slide 42

Slide 42 text

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 @ MobileConf Thailand 2019 42

Slide 43

Slide 43 text

43

Slide 44

Slide 44 text

Built for Scale Empowering iOS Developers – Samuel Giddins @ MobileConf Thailand 2019 44

Slide 45

Slide 45 text

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

Slide 46

Slide 46 text

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 @ MobileConf Thailand 2019 46

Slide 47

Slide 47 text

Projects like this require a combination of ownership & expertise Empowering iOS Developers – Samuel Giddins @ MobileConf Thailand 2019 47

Slide 48

Slide 48 text

At Square, the Platform Engineering team is over 100 people for server Our MDX team is 5 for iOS and 5 for Android Empowering iOS Developers – Samuel Giddins @ MobileConf Thailand 2019 48

Slide 49

Slide 49 text

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

Slide 50

Slide 50 text

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

Slide 51

Slide 51 text

51

Slide 52

Slide 52 text

Samuel Giddins @segiddins Empowering iOS Developers – Samuel Giddins @ MobileConf Thailand 2019 52