Slide 1

Slide 1 text

by your friend: Ryan Weaver @weaverryan Developer Experience in the PHP World

Slide 2

Slide 2 text

KnpUniversity.com github.com/weaverryan Who is this Hipster? > Lead for the Symfony documentation
 > KnpLabs US - Symfony Consulting, training & general Kumbaya > Writer for KnpUniversity.com Tutorials

Slide 3

Slide 3 text

We <3 Cake Big plate of cake

Slide 4

Slide 4 text

Ephemeralization* @weaverryan

Slide 5

Slide 5 text

* shamelessly “borrowed” from David Zuelke http://bit.ly/dzuelke-ephem

Slide 6

Slide 6 text

R. Buckminster Fuller

Slide 7

Slide 7 text

No content

Slide 8

Slide 8 text

do more and more with less and less until eventually you can do everything with nothing “

Slide 9

Slide 9 text

https://www.flickr.com/photos/chandramarsono/4324373384

Slide 10

Slide 10 text

https://www.flickr.com/photos/krawcowicz/4153762400

Slide 11

Slide 11 text

limited by site https://www.flickr.com/photos/40132991@N07/3715292940

Slide 12

Slide 12 text

https://www.flickr.com/photos/avlxyz/4999120709

Slide 13

Slide 13 text

Easiest scaling ever Simplest Deployment Process @weaverryan

Slide 14

Slide 14 text

Do More, With Less

Slide 15

Slide 15 text

Less is not about size

Slide 16

Slide 16 text

Less …
 …effort
 …drain on my patience …drain on my energy …design on this slide

Slide 17

Slide 17 text

UX @weaverryan

Slide 18

Slide 18 text

Do more with less Ephemeralization for Development

Slide 19

Slide 19 text

Less is not (necessarily) about code written

Slide 20

Slide 20 text

Less… …Dev Time …Learning Curve …Complexity

Slide 21

Slide 21 text

DX

Slide 22

Slide 22 text

A Path to DX in 6 Steps

Slide 23

Slide 23 text

1. Architecture First (Simple) @weaverryan

Slide 24

Slide 24 text

Complexity: Consisting of many different and connected parts

Slide 25

Slide 25 text

Simple vs. Easy @weaverryan

Slide 26

Slide 26 text

Architecture First: Don’t Sacrifice for DX @weaverryan

Slide 27

Slide 27 text

No content

Slide 28

Slide 28 text

1. mammoth class
 2. Expects a “signed request” on either $_REQUEST or $_COOKIE
 3. Sends a curl request to exchange the OAuth code for the access_token
 4. Send another curl request to fetch user data

Slide 29

Slide 29 text

Perceived Affordances @weaverryan

Slide 30

Slide 30 text

Nope! Possibilities are easily Perceivable

Slide 31

Slide 31 text

Yep! Possibilities are easily Perceivable

Slide 32

Slide 32 text

Nope!

Slide 33

Slide 33 text

Yep!

Slide 34

Slide 34 text

Design Principles @weaverryan

Slide 35

Slide 35 text

Use Private Methods Nope!

Slide 36

Slide 36 text

Use Private Methods Yep!

Slide 37

Slide 37 text

Limit Mutability Nope!

Slide 38

Slide 38 text

Limit Mutability Yep!

Slide 39

Slide 39 text

Callbacks instead of Interfaces Nope!

Slide 40

Slide 40 text

Yep! Callbacks instead of Interfaces

Slide 41

Slide 41 text

Expressive Naming Nope!

Slide 42

Slide 42 text

RUN! Expressive Naming

Slide 43

Slide 43 text

On My Side? or In My Way? @weaverryan

Slide 44

Slide 44 text

@weaverryan 2. Easy

Slide 45

Slide 45 text

@weaverryan Feature-Driven (personae) Think about the problems that need to be solved

Slide 46

Slide 46 text

@weaverryan Add Layers

Slide 47

Slide 47 text

@weaverryan Nope!

Slide 48

Slide 48 text

@weaverryan Yep!

Slide 49

Slide 49 text

@weaverryan Yep! Accessible to Beginners

Slide 50

Slide 50 text

@weaverryan Yep! … clear path for noob -> expert

Slide 51

Slide 51 text

@weaverryan 3. The 5 Minute Experience

Slide 52

Slide 52 text

@weaverryan Yep! Instant Gratification

Slide 53

Slide 53 text

Nope!

Slide 54

Slide 54 text

Nope!

Slide 55

Slide 55 text

Nope!

Slide 56

Slide 56 text

Nope!

Slide 57

Slide 57 text

A real app can evolve from this @weaverryan

Slide 58

Slide 58 text

@weaverryan 4. Big Giant Exception Messages with Links (because, why not?)

Slide 59

Slide 59 text

Users can avoid the docs before getting the first-use pay-off @weaverryan

Slide 60

Slide 60 text

@weaverryan Going that direction is unwise. Nope!

Slide 61

Slide 61 text

@weaverryan THERE ARE RAPTORS IN THE TALL GRASS! STAY OUT OF THE TALL GRASS! Yep!

Slide 62

Slide 62 text

@weaverryan Could not load type "enitity" Nope!

Slide 63

Slide 63 text

@weaverryan Unknown field type “enitity” when creating your form. Did you mean “entity”? Yep!

Slide 64

Slide 64 text

@weaverryan Credentials Error. Nope!

Slide 65

Slide 65 text

@weaverryan Error retrieving credentials from the instance profile metadata server. When you are not running inside of Amazon EC2, you must provide your AWS access key ID and secret access key in the "key" and "secret" options when creating a client or provide an instantiated Aws\Common \Credentials\CredentialsInterface object. Yep!

Slide 66

Slide 66 text

@weaverryan 5. Documentation

Slide 67

Slide 67 text

Quick Navigation: 2 Clicks @weaverryan Nope!

Slide 68

Slide 68 text

Quick Navigation: 2 Clicks @weaverryan Yep!

Slide 69

Slide 69 text

@weaverryan One Page per Topic OK

Slide 70

Slide 70 text

@weaverryan Yep! One Page per Topic

Slide 71

Slide 71 text

@weaverryan Tutorial-Style … with code examples Nope!

Slide 72

Slide 72 text

Tutorial-Style … with code examples Yep! + API Docs

Slide 73

Slide 73 text

@weaverryan Simple Homepage Yep!

Slide 74

Slide 74 text

@weaverryan Yep! Editable

Slide 75

Slide 75 text

Comments? Online Playground? Where can I get help? @weaverryan

Slide 76

Slide 76 text

@weaverryan 6. Backwards Compatibility

Slide 77

Slide 77 text

Thanks for Learning and Using my Library @weaverryan

Slide 78

Slide 78 text

@weaverryan Also, screw you!

Slide 79

Slide 79 text

A Call to DX @weaverryan

Slide 80

Slide 80 text

You say: “this kinda sucks” First @weaverryan

Slide 81

Slide 81 text

No content

Slide 82

Slide 82 text

We (all) work to fix it Second @weaverryan

Slide 83

Slide 83 text

Hi! I can improve that for you!

Slide 84

Slide 84 text

Celebrate! Third

Slide 85

Slide 85 text

No content

Slide 86

Slide 86 text

No content

Slide 87

Slide 87 text

Repeat Finally @weaverryan

Slide 88

Slide 88 text

You drive DX… @weaverryan

Slide 89

Slide 89 text

…and move us towards Ephemeralization @weaverryan

Slide 90

Slide 90 text

… so we can accomplish so much more with less @weaverryan

Slide 91

Slide 91 text

@weaverryan PHP & Symfony Video Tutorials KnpUniversity.com Thank You! https://joind.in/13433

Slide 92

Slide 92 text

Thanks to… http://developerexperience.org/ http://softwareas.com/patterns-of-developer-experience/ http://blog.oshineye.com/2011/05/what-is-devexp.html http://blog.pamelafox.org/ @mtdowling @crell https://joind.in/13433

Slide 93

Slide 93 text

@weaverryan Open Symfony Training knplabs.com/training in Nashville, TN March 4, 5 & 6 https://joind.in/13433