Slide 1

Slide 1 text

Making friends with backend developers Making friends with backend developers. Stanfy MadCode Meetup, 2014. 1

Slide 2

Slide 2 text

Making friends with backend developers Well, at least don't fight Making friends with backend developers. Stanfy MadCode Meetup, 2014. 2

Slide 3

Slide 3 text

Own experience • Outsource • Own products • Working with remote backend team • Creating backends ourselves Making friends with backend developers. Stanfy MadCode Meetup, 2014. 3

Slide 4

Slide 4 text

Situation Remote team: Mobile team <~> Backend team Making friends with backend developers. Stanfy MadCode Meetup, 2014. 4

Slide 5

Slide 5 text

Situation Remote team: Mobile team <~~~~~~~~~~ ~~~~~~~~ ~~~~~~~~ ~~~~~~~~ ~~~~~~~~ ~~~~~~~~ ~~~~~~~ ~~~~~~~~ ~~~~~~~~ ~~~~~~~~ ~~~~~~~~ ~~~~~~~~ ~~~~~~~~ ~~~~~~~~ ~~~~~~~~ ~~~~~~~~ ~~~~~~~~ ~~~~~~~~ ~~~~~~~~ ~~~~~~~~ ~~~~~~~~ ~~~~~~~~ ~~~~~~~~ ~~~~~~~~ ~~~~~~~~ ~~~~~~~~ > Backend team Making friends with backend developers. Stanfy MadCode Meetup, 2014. 5

Slide 6

Slide 6 text

Situation Remote team: Mobile team <~~~~~~~~~~ ~~~~~~~~ ~~~~~~~~ ~~~~~~~~ ~~~~~~~~ ~~~~~~~~ ~~~~~~~ ~~~~~~~~ ~~~~~~~~ ~~~~~~~~ ~~ ocean ~ ~~~~~~~~ ~~~~~~~~ ~~~~~~~~ ~~~~~~~~ ~~~~~~~~ ~~~~~~~~ ~~~~~~~~ ~~~~~~~~ ~~~~~~~~ ~~~~~~~~ ~~~~~~~~ ~~~~~~~~ ~~~~~~~~ ~~~~~~~~ ~~~~~~~~ > Backend team Making friends with backend developers. Stanfy MadCode Meetup, 2014. 6

Slide 7

Slide 7 text

What we want from backend? • Use less requests • Send only needed data in suitable format • Low latency • Handle heavy computations Making friends with backend developers. Stanfy MadCode Meetup, 2014. 7

Slide 8

Slide 8 text

What we do? • Hey, let's change this request • Hey, let's add this field • Hey, let's get data in that format • Hey, let's have public URL to pics • Hey, let's ... Making friends with backend developers. Stanfy MadCode Meetup, 2014. 8

Slide 9

Slide 9 text

What we usually hear from backend devs? • No, I need yet another table to join • No, it's not simple to add that field • No, calculate it on your side • No, our library can't do that • No, I'll deploy these changes in next sprint Making friends with backend developers. Stanfy MadCode Meetup, 2014. 9

Slide 10

Slide 10 text

Problems • Different goals • Misunderstanding • Lack of trust • Limited experience Making friends with backend developers. Stanfy MadCode Meetup, 2014. 10

Slide 11

Slide 11 text

Solutions? Making friends with backend developers. Stanfy MadCode Meetup, 2014. 11

Slide 12

Slide 12 text

No solution Making friends with backend developers. Stanfy MadCode Meetup, 2014. 12

Slide 13

Slide 13 text

Approaches • Write documentation • Write tests • Write constructive emails • Explain on examples Making friends with backend developers. Stanfy MadCode Meetup, 2014. 13

Slide 14

Slide 14 text

API documentation • Need time to write • Need time to update • Need time to search • Useless if outdated Making friends with backend developers. Stanfy MadCode Meetup, 2014. 14

Slide 15

Slide 15 text

API documentation • 'Put everything in one place' (not in emails, not in head) • User friendly • Access anywhere at any time • Determined • Always updated Making friends with backend developers. Stanfy MadCode Meetup, 2014. 15

Slide 16

Slide 16 text

Creating API documentation • Auto generated docs from code • API tests • Wiki • Google Doc • Emails/skype history/developer's head Making friends with backend developers. Stanfy MadCode Meetup, 2014. 16

Slide 17

Slide 17 text

Documentation in Google Doc • Easy to create (access anywhere) • Easy to share • Easy to update (ACL) Making friends with backend developers. Stanfy MadCode Meetup, 2014. 17

Slide 18

Slide 18 text

Documentation in Google Doc • Loooong & slow • Not super-structured (as wiki) Making friends with backend developers. Stanfy MadCode Meetup, 2014. 18

Slide 19

Slide 19 text

Must have: easy navigation Table of changes • When • Who • What was changed (with links) Making friends with backend developers. Stanfy MadCode Meetup, 2014. 19

Slide 20

Slide 20 text

Must have: easy navigation Table of changes • When • Who • What was changed (with links) Making friends with backend developers. Stanfy MadCode Meetup, 2014. 20

Slide 21

Slide 21 text

Must have: easy navigation Contents • Quick to search • Easy to deep into Making friends with backend developers. Stanfy MadCode Meetup, 2014. 21

Slide 22

Slide 22 text

Must have: fundamentals Envinronment description • Production server URL • Dev server URL(s) • Main accounts • Version Making friends with backend developers. Stanfy MadCode Meetup, 2014. 22

Slide 23

Slide 23 text

Must have: fundamentals Data formats • JSON/xml • Response should be valid! • Encoding • Timestamp format • Boolean format • Float format Making friends with backend developers. Stanfy MadCode Meetup, 2014. 23

Slide 24

Slide 24 text

Must have: fundamentals Request formats • GET • POST (body format) Making friends with backend developers. Stanfy MadCode Meetup, 2014. 24

Slide 25

Slide 25 text

Must have: headers HTTP headers for Request • Accept content-type • Accept encoding • Cookie • Device • App version • Image scaling • Session handling Making friends with backend developers. Stanfy MadCode Meetup, 2014. 25

Slide 26

Slide 26 text

Must have: HTTP codes HTTP codes • What are valid? • What app should do? Making friends with backend developers. Stanfy MadCode Meetup, 2014. 26

Slide 27

Slide 27 text

Must have: response structure Response structure • Inner error code • Error message to user • Body Making friends with backend developers. Stanfy MadCode Meetup, 2014. 27

Slide 28

Slide 28 text

Must have: communication with user Inner error codes + message • Ok • Session is expired • DB error • Synchonization needed • Just show message to user Making friends with backend developers. Stanfy MadCode Meetup, 2014. 28

Slide 29

Slide 29 text

Must have in API documentation • Easy navigation and search: • Table of changes • Contents • Fundamentals • Envinronment description • Data formats • Request/response structure Making friends with backend developers. Stanfy MadCode Meetup, 2014. 29

Slide 30

Slide 30 text

API tests • Shared with backend dev • Public results • 'Everything is broken' - blame Making friends with backend developers. Stanfy MadCode Meetup, 2014. 30

Slide 31

Slide 31 text

API tests. Helium https://github.com/stanfy/helium • DSL description • Poke tests • Scenarios tests • Object generation Making friends with backend developers. Stanfy MadCode Meetup, 2014. 31

Slide 32

Slide 32 text

Miscommunication Be definite • Discuss smth in emails/chat -> add to API doc • Add manager to email thread Making friends with backend developers. Stanfy MadCode Meetup, 2014. 32

Slide 33

Slide 33 text

Miscommunication Provide full details • Add headers • Add timestamps • Add session IDs • Mark out details Making friends with backend developers. Stanfy MadCode Meetup, 2014. 33

Slide 34

Slide 34 text

Explain Making friends with backend developers. Stanfy MadCode Meetup, 2014. 34

Slide 35

Slide 35 text

Explain Making friends with backend developers. Stanfy MadCode Meetup, 2014. 35

Slide 36

Slide 36 text

Miscommunication Explain • Backend developer is not iPhone/Android user • Have no idea how data will shown • Design driven vs DB-data driven Making friends with backend developers. Stanfy MadCode Meetup, 2014. 36

Slide 37

Slide 37 text

Miscommunication Be polite • Thanks for quick changes • Thanks for deploy • Thanks for description Making friends with backend developers. Stanfy MadCode Meetup, 2014. 37

Slide 38

Slide 38 text

Why we need this? • We deal with real users • We gather feedbacks Making friends with backend developers. Stanfy MadCode Meetup, 2014. 38

Slide 39

Slide 39 text

Last slide Helium https://github.com/stanfy/helium Google doc http://bit.ly/1s69iVP Making friends with backend developers. Stanfy MadCode Meetup, 2014. 39

Slide 40

Slide 40 text

Questions @vixentael [email protected] Making friends with backend developers. Stanfy MadCode Meetup, 2014. 40

Slide 41

Slide 41 text

Making friends with backend developers. Stanfy MadCode Meetup, 2014. 41