Slide 1

Slide 1 text

sugarpirate_ poteto Just Use Any: How to Win Colleagues and Influence Your Boss TSConf 2019, Seattle WA Just Use Any How to Win Colleagues and Influence Your Boss Lauren Tan (she/her) PRESENTED BY unknown

Slide 2

Slide 2 text

sugarpirate_ poteto Just Use Any: How to Win Colleagues and Influence Your Boss TSConf 2019, Seattle WA type Spiderman SKIP INTRO

Slide 3

Slide 3 text

sugarpirate_ poteto Just Use Any: How to Win Colleagues and Influence Your Boss TSConf 2019, Seattle WA Who cares about "influence"?

Slide 4

Slide 4 text

sugarpirate_ poteto Just Use Any: How to Win Colleagues and Influence Your Boss TSConf 2019, Seattle WA I used to struggle with communicating my ideas.

Slide 5

Slide 5 text

sugarpirate_ poteto Just Use Any: How to Win Colleagues and Influence Your Boss TSConf 2019, Seattle WA Everything looked like a nail, and all I had was a hammer.

Slide 6

Slide 6 text

sugarpirate_ poteto Just Use Any: How to Win Colleagues and Influence Your Boss TSConf 2019, Seattle WA I tried to sell all the wrong things. My manager didn't care for it.

Slide 7

Slide 7 text

sugarpirate_ poteto Just Use Any: How to Win Colleagues and Influence Your Boss TSConf 2019, Seattle WA These were not problems that needed solving.

Slide 8

Slide 8 text

sugarpirate_ poteto Just Use Any: How to Win Colleagues and Influence Your Boss TSConf 2019, Seattle WA My job is to solve problems, not (just) write code.

Slide 9

Slide 9 text

sugarpirate_ poteto Just Use Any: How to Win Colleagues and Influence Your Boss TSConf 2019, Seattle WA I was being held back by my inability to influence. Something had to change.

Slide 10

Slide 10 text

sugarpirate_ poteto Just Use Any: How to Win Colleagues and Influence Your Boss TSConf 2019, Seattle WA them, but someone who makes others A 10x engineer isn't someone KATE HEDDLESTON who is 10x better than those around around them 10x better.

Slide 11

Slide 11 text

sugarpirate_ poteto Just Use Any: How to Win Colleagues and Influence Your Boss TSConf 2019, Seattle WA Type systems at ${work}.

Slide 12

Slide 12 text

sugarpirate_ poteto Just Use Any: How to Win Colleagues and Influence Your Boss TSConf 2019, Seattle WA https://jobs.netflix.com/

Slide 13

Slide 13 text

sugarpirate_ poteto Just Use Any: How to Win Colleagues and Influence Your Boss TSConf 2019, Seattle WA Studio UI.

Slide 14

Slide 14 text

sugarpirate_ poteto Just Use Any: How to Win Colleagues and Influence Your Boss TSConf 2019, Seattle WA Studio UI Foundations. react redux* Apollo GraphQL TypeScript gatsby lerna yarn ??? Top secret stuff Designed by Sophinie Som https://jobs.netflix.com/jobs/870589

Slide 15

Slide 15 text

sugarpirate_ poteto Just Use Any: How to Win Colleagues and Influence Your Boss TSConf 2019, Seattle WA TypeScript. GraphQL. gRPC. JVM.

Slide 16

Slide 16 text

sugarpirate_ poteto Just Use Any: How to Win Colleagues and Influence Your Boss TSConf 2019, Seattle WA Making the case for typed JavaScript at Netflix.

Slide 17

Slide 17 text

sugarpirate_ poteto Just Use Any: How to Win Colleagues and Influence Your Boss TSConf 2019, Seattle WA Improve developer productivity. Making the case for typed JavaScript at Netflix.

Slide 18

Slide 18 text

sugarpirate_ poteto Just Use Any: How to Win Colleagues and Influence Your Boss TSConf 2019, Seattle WA Reduce bugs. Making the case for typed JavaScript at Netflix.

Slide 19

Slide 19 text

sugarpirate_ poteto Just Use Any: How to Win Colleagues and Influence Your Boss TSConf 2019, Seattle WA Performance*. Making the case for typed JavaScript at Netflix.

Slide 20

Slide 20 text

sugarpirate_ poteto Just Use Any: How to Win Colleagues and Influence Your Boss TSConf 2019, Seattle WA https://mrale.ph/blog/2015/01/11/whats-up-with-monomorphism.html

Slide 21

Slide 21 text

sugarpirate_ poteto Just Use Any: How to Win Colleagues and Influence Your Boss TSConf 2019, Seattle WA End to end type safety. Making the case for typed JavaScript at Netflix.

Slide 22

Slide 22 text

sugarpirate_ poteto Just Use Any: How to Win Colleagues and Influence Your Boss TSConf 2019, Seattle WA We also considered the risks of adopting typed JavaScript. Making the case for typed JavaScript at Netflix.

Slide 23

Slide 23 text

sugarpirate_ poteto Just Use Any: How to Win Colleagues and Influence Your Boss TSConf 2019, Seattle WA TypeScript checked most of those boxes. Making the case for typed JavaScript at Netflix.

Slide 24

Slide 24 text

sugarpirate_ poteto Just Use Any: How to Win Colleagues and Influence Your Boss TSConf 2019, Seattle WA Building a community.

Slide 25

Slide 25 text

sugarpirate_ poteto Just Use Any: How to Win Colleagues and Influence Your Boss TSConf 2019, Seattle WA

Slide 26

Slide 26 text

sugarpirate_ poteto Just Use Any: How to Win Colleagues and Influence Your Boss TSConf 2019, Seattle WA MY CODEBASE AFTER 3.7 LANDS yay!?.optional!?.chaining

Slide 27

Slide 27 text

sugarpirate_ poteto Just Use Any: How to Win Colleagues and Influence Your Boss TSConf 2019, Seattle WA

Slide 28

Slide 28 text

sugarpirate_ poteto Just Use Any: How to Win Colleagues and Influence Your Boss TSConf 2019, Seattle WA • Matt Greer - Type Widening • Ryan Anklam - TVUI's Experience with TypeScript
 Tim Branyen - Experience Using TypeScript in AppDirectory • Jordan Gensler - How To Type Everything • Danny Cochran - TypeScript with Maple • Randy Wenas - TS at Employee Apps • Emily Dobervich - TypeScript is just JavaScript • Young Min Kim - Using TypeScript Today Passionate TypeScript users at Netflix. Building a community.

Slide 29

Slide 29 text

sugarpirate_ poteto Just Use Any: How to Win Colleagues and Influence Your Boss TSConf 2019, Seattle WA "Prefer statically typed [!!...] for better developer productivity"

Slide 30

Slide 30 text

sugarpirate_ poteto Just Use Any: How to Win Colleagues and Influence Your Boss TSConf 2019, Seattle WA TypeScript. GraphQL. gRPC. JVM.

Slide 31

Slide 31 text

sugarpirate_ poteto Just Use Any: How to Win Colleagues and Influence Your Boss TSConf 2019, Seattle WA First things first.

Slide 32

Slide 32 text

sugarpirate_ poteto Just Use Any: How to Win Colleagues and Influence Your Boss TSConf 2019, Seattle WA Hold your horses

Slide 33

Slide 33 text

sugarpirate_ poteto Just Use Any: How to Win Colleagues and Influence Your Boss TSConf 2019, Seattle WA me: *returns from TSConf* nobody: me: everything is now strict: true

Slide 34

Slide 34 text

sugarpirate_ poteto Just Use Any: How to Win Colleagues and Influence Your Boss TSConf 2019, Seattle WA What problem are you trying to solve?

Slide 35

Slide 35 text

sugarpirate_ poteto Just Use Any: How to Win Colleagues and Influence Your Boss TSConf 2019, Seattle WA Accept that there may be many solutions to the problem.

Slide 36

Slide 36 text

sugarpirate_ poteto Just Use Any: How to Win Colleagues and Influence Your Boss TSConf 2019, Seattle WA Don't make this about the language.

Slide 37

Slide 37 text

sugarpirate_ poteto Just Use Any: How to Win Colleagues and Influence Your Boss TSConf 2019, Seattle WA Make it about the organization.

Slide 38

Slide 38 text

sugarpirate_ poteto Just Use Any: How to Win Colleagues and Influence Your Boss TSConf 2019, Seattle WA What is the impact of the change?

Slide 39

Slide 39 text

sugarpirate_ poteto Just Use Any: How to Win Colleagues and Influence Your Boss TSConf 2019, Seattle WA What's the sustainability of the language?

Slide 40

Slide 40 text

sugarpirate_ poteto Just Use Any: How to Win Colleagues and Influence Your Boss TSConf 2019, Seattle WA Influence is...

Slide 41

Slide 41 text

sugarpirate_ poteto Just Use Any: How to Win Colleagues and Influence Your Boss TSConf 2019, Seattle WA Context. Connecting the dots. Choice. Connection. Credibility*

Slide 42

Slide 42 text

sugarpirate_ poteto Just Use Any: How to Win Colleagues and Influence Your Boss TSConf 2019, Seattle WA Context. Connecting the dots. Choice. Connection. Credibility*

Slide 43

Slide 43 text

sugarpirate_ poteto Just Use Any: How to Win Colleagues and Influence Your Boss TSConf 2019, Seattle WA Context.

Slide 44

Slide 44 text

sugarpirate_ poteto Just Use Any: How to Win Colleagues and Influence Your Boss TSConf 2019, Seattle WA Context.

Slide 45

Slide 45 text

sugarpirate_ poteto Just Use Any: How to Win Colleagues and Influence Your Boss TSConf 2019, Seattle WA Know your context. Know your environment. Know your audience. What frustrates them? What motivates them? Context.

Slide 46

Slide 46 text

sugarpirate_ poteto Just Use Any: How to Win Colleagues and Influence Your Boss TSConf 2019, Seattle WA Your peers might be frustrated by bugs, fear of refactoring. Your boss might be frustrated about a lack of velocity, or poor user satisfaction. Context.

Slide 47

Slide 47 text

sugarpirate_ poteto Just Use Any: How to Win Colleagues and Influence Your Boss TSConf 2019, Seattle WA Your peers might be motivated by better productivity, confidence about code changes. Your boss might be motivated by being able to hire, meeting KPIs/ OKRs, improving velocity. Context.

Slide 48

Slide 48 text

sugarpirate_ poteto Just Use Any: How to Win Colleagues and Influence Your Boss TSConf 2019, Seattle WA Context. Connecting the dots. Choice. Connection. Credibility*

Slide 49

Slide 49 text

sugarpirate_ poteto Just Use Any: How to Win Colleagues and Influence Your Boss TSConf 2019, Seattle WA What is the bigger story? What is the common ground? Connecting the dots.

Slide 50

Slide 50 text

sugarpirate_ poteto Just Use Any: How to Win Colleagues and Influence Your Boss TSConf 2019, Seattle WA Are there other teams using TypeScript? What other typed technologies are in use? What are you unlocking for the wider org? Connecting the dots.

Slide 51

Slide 51 text

sugarpirate_ poteto Just Use Any: How to Win Colleagues and Influence Your Boss TSConf 2019, Seattle WA How does my company make money? What's getting in the way of that? What could we do to improve our ability to do so? Connecting the dots.

Slide 52

Slide 52 text

sugarpirate_ poteto Just Use Any: How to Win Colleagues and Influence Your Boss TSConf 2019, Seattle WA Context. Connecting the dots. Choice. Connection. Credibility*

Slide 53

Slide 53 text

sugarpirate_ poteto Just Use Any: How to Win Colleagues and Influence Your Boss TSConf 2019, Seattle WA The essence of strategy MICHAEL PORTER is knowing what not to do.

Slide 54

Slide 54 text

sugarpirate_ poteto Just Use Any: How to Win Colleagues and Influence Your Boss TSConf 2019, Seattle WA Be narrowly focused on just a few things. Choice.

Slide 55

Slide 55 text

sugarpirate_ poteto Just Use Any: How to Win Colleagues and Influence Your Boss TSConf 2019, Seattle WA Don't try to force everyone to change. Don't expand scope beyond what is necessary. Be clear on what you're not doing. Choice.

Slide 56

Slide 56 text

sugarpirate_ poteto Just Use Any: How to Win Colleagues and Influence Your Boss TSConf 2019, Seattle WA Context. Connecting the dots. Choice. Connection. Credibility*

Slide 57

Slide 57 text

sugarpirate_ poteto Just Use Any: How to Win Colleagues and Influence Your Boss TSConf 2019, Seattle WA Cultivate empathy. Build credibility. Build trust. Be genuine. Be OK with "no". Connection.

Slide 58

Slide 58 text

sugarpirate_ poteto Just Use Any: How to Win Colleagues and Influence Your Boss TSConf 2019, Seattle WA Be transparent about your motivations. It's OK if it's purely engineering driven. Why should others care about the problem you're trying to solve? Connection.

Slide 59

Slide 59 text

sugarpirate_ poteto Just Use Any: How to Win Colleagues and Influence Your Boss TSConf 2019, Seattle WA Context. Connecting the dots. Choice. Connection. Credibility*

Slide 60

Slide 60 text

sugarpirate_ poteto Just Use Any: How to Win Colleagues and Influence Your Boss TSConf 2019, Seattle WA Context. Connecting the dots. Choice. Connection. Credibility*

Slide 61

Slide 61 text

sugarpirate_ poteto Just Use Any: How to Win Colleagues and Influence Your Boss TSConf 2019, Seattle WA Context. Connecting the dots. Choice. Connection. Credibility*

Slide 62

Slide 62 text

sugarpirate_ poteto Just Use Any: How to Win Colleagues and Influence Your Boss TSConf 2019, Seattle WA Context. Connecting the dots. Choice. Connection. Credibility*

Slide 63

Slide 63 text

sugarpirate_ poteto Just Use Any: How to Win Colleagues and Influence Your Boss TSConf 2019, Seattle WA Context. Connecting the dots. Choice. Connection. Credibility*

Slide 64

Slide 64 text

sugarpirate_ poteto Just Use Any: How to Win Colleagues and Influence Your Boss TSConf 2019, Seattle WA Context. Connecting the dots. Choice. Connection. Credibility*

Slide 65

Slide 65 text

sugarpirate_ poteto Just Use Any: How to Win Colleagues and Influence Your Boss TSConf 2019, Seattle WA Why should I care about type systems?

Slide 66

Slide 66 text

sugarpirate_ poteto Just Use Any: How to Win Colleagues and Influence Your Boss TSConf 2019, Seattle WA It's better to find the errors ANDERS HEJLSBERG before the space shuttle flies. https://youtu.be/wYgSiFaYSSo

Slide 67

Slide 67 text

sugarpirate_ poteto Just Use Any: How to Win Colleagues and Influence Your Boss TSConf 2019, Seattle WA Most languages are typechecked.

Slide 68

Slide 68 text

sugarpirate_ poteto Just Use Any: How to Win Colleagues and Influence Your Boss TSConf 2019, Seattle WA Some of us only get to typecheck in production.

Slide 69

Slide 69 text

sugarpirate_ poteto Just Use Any: How to Win Colleagues and Influence Your Boss TSConf 2019, Seattle WA Using TypeScript effectively.

Slide 70

Slide 70 text

sugarpirate_ poteto Just Use Any: How to Win Colleagues and Influence Your Boss TSConf 2019, Seattle WA What are types anyway?

Slide 71

Slide 71 text

sugarpirate_ poteto Just Use Any: How to Win Colleagues and Influence Your Boss TSConf 2019, Seattle WA A type is the set of possible values for a term.

Slide 72

Slide 72 text

sugarpirate_ poteto Just Use Any: How to Win Colleagues and Influence Your Boss TSConf 2019, Seattle WA string type T1 = string 'தจ' 'español' '೔ຊޠ' 'tsconf' '2019' '✌'

Slide 73

Slide 73 text

sugarpirate_ poteto Just Use Any: How to Win Colleagues and Influence Your Boss TSConf 2019, Seattle WA number number type T2 = number 2019 NaN Infinity 123.45 0x11 123e-1

Slide 74

Slide 74 text

sugarpirate_ poteto Just Use Any: How to Win Colleagues and Influence Your Boss TSConf 2019, Seattle WA type T3 = string | number 'தจ' 'español' '೔ຊޠ' 'tsconf' '2019' '✌' 2019 NaN Infinity 123.45 0x11 123e-1 number string

Slide 75

Slide 75 text

sugarpirate_ poteto Just Use Any: How to Win Colleagues and Influence Your Boss TSConf 2019, Seattle WA Why should I care about the cardinality of a type? cardinality · number of elements of the set

Slide 76

Slide 76 text

sugarpirate_ poteto Just Use Any: How to Win Colleagues and Influence Your Boss TSConf 2019, Seattle WA number type T4 = 'TSConf' | 'dotJS' | 'React Rally' Cardinality: 3 'TSConf' 'dotJS' 'React Rally'

Slide 77

Slide 77 text

sugarpirate_ poteto Just Use Any: How to Win Colleagues and Influence Your Boss TSConf 2019, Seattle WA number type Option = None | Some Cardinality: 2 None Some https://github.com/gcanti/fp-ts

Slide 78

Slide 78 text

sugarpirate_ poteto Just Use Any: How to Win Colleagues and Influence Your Boss TSConf 2019, Seattle WA number Cardinality: Infinity undefined null number string symbol array object type T5 = unknown

Slide 79

Slide 79 text

sugarpirate_ poteto Just Use Any: How to Win Colleagues and Influence Your Boss TSConf 2019, Seattle WA type T5 = unknown *slaps roof of typescript* this bad type can fit so many types in it

Slide 80

Slide 80 text

sugarpirate_ poteto Just Use Any: How to Win Colleagues and Influence Your Boss TSConf 2019, Seattle WA When we restrict what we can do, RUNAR BJARNASON it's easier to understand what we can do. https://youtu.be/GqmsQeSzMdw

Slide 81

Slide 81 text

sugarpirate_ poteto Just Use Any: How to Win Colleagues and Influence Your Boss TSConf 2019, Seattle WA Precise types = Less bugs. Use unknown if you need it, just know what the tradeoffs are.

Slide 82

Slide 82 text

sugarpirate_ poteto Just Use Any: How to Win Colleagues and Influence Your Boss TSConf 2019, Seattle WA function toString(x: T): string { return x.toString(); } toString(undefined); toString(null); function toString(x: undefined): string function toString(x: null): string

Slide 83

Slide 83 text

sugarpirate_ poteto Just Use Any: How to Win Colleagues and Influence Your Boss TSConf 2019, Seattle WA string number object array symbol void string Uncaught TypeError Possible Domains Possible Codomains function toString(x: T): string

Slide 84

Slide 84 text

sugarpirate_ poteto Just Use Any: How to Win Colleagues and Influence Your Boss TSConf 2019, Seattle WA function toString(x: NonNullable): string { return x.toString(); } toString(undefined); toString(null);

Slide 85

Slide 85 text

sugarpirate_ poteto Just Use Any: How to Win Colleagues and Influence Your Boss TSConf 2019, Seattle WA function toString(x: NonNullable): string { return x.toString(); } toString(undefined); toString(null);

Slide 86

Slide 86 text

sugarpirate_ poteto Just Use Any: How to Win Colleagues and Influence Your Boss TSConf 2019, Seattle WA function toString(x: NonNullable): string { return x.toString(); } toString(undefined); toString(null); Argument of type 'undefined' is not assignable to parameter of type 'never'. Argument of type 'null' is not assignable to parameter of type 'never'.

Slide 87

Slide 87 text

sugarpirate_ poteto Just Use Any: How to Win Colleagues and Influence Your Boss TSConf 2019, Seattle WA string number object array symbol void string Uncaught TypeError Possible Domains Possible Codomains function toString(x: NonNullable): string

Slide 88

Slide 88 text

sugarpirate_ poteto Just Use Any: How to Win Colleagues and Influence Your Boss TSConf 2019, Seattle WA function toString(x: NonNullable & { toString(): string }): string { return x.toString(); } class Foo { toString(): void {} }; class Bar {}; toString(new Foo()); toString(new Bar()); Argument of type 'Foo' is not assignable to parameter of type 'Foo & { toString(): string; }'. Type 'Foo' is not assignable to type '{ toString(): string; }'. The types returned by 'toString()' are incompatible between these types. Type 'void' is not assignable to type 'string'.

Slide 89

Slide 89 text

sugarpirate_ poteto Just Use Any: How to Win Colleagues and Influence Your Boss TSConf 2019, Seattle WA undefined null A: Set of nullable types B \ A: Set of non-nullable types B: Set of all types string number object symbol array

Slide 90

Slide 90 text

sugarpirate_ poteto Just Use Any: How to Win Colleagues and Influence Your Boss TSConf 2019, Seattle WA string number object symbol array NonNullable toString(): string A: Set of non-nullable types B: Set of types with toString(): string B & A: Set of non-nullable types with toString(): string Bar

Slide 91

Slide 91 text

sugarpirate_ poteto Just Use Any: How to Win Colleagues and Influence Your Boss TSConf 2019, Seattle WA https://youtu.be/cj07Fwzamy0

Slide 92

Slide 92 text

sugarpirate_ poteto Just Use Any: How to Win Colleagues and Influence Your Boss TSConf 2019, Seattle WA Types on every desk, in every home, for every JS developer. https://github.com/microsoft/TypeScript/issues/33118

Slide 93

Slide 93 text

sugarpirate_ poteto Just Use Any: How to Win Colleagues and Influence Your Boss TSConf 2019, Seattle WA

Slide 94

Slide 94 text

sugarpirate_ poteto Just Use Any: How to Win Colleagues and Influence Your Boss TSConf 2019, Seattle WA https://blog.johnnyreilly.com/2019/10/definitely-typed-movie.html

Slide 95

Slide 95 text

sugarpirate_ poteto Just Use Any: How to Win Colleagues and Influence Your Boss TSConf 2019, Seattle WA

Slide 96

Slide 96 text

sugarpirate_ poteto Just Use Any: How to Win Colleagues and Influence Your Boss TSConf 2019, Seattle WA

Slide 97

Slide 97 text

sugarpirate_ poteto Just Use Any: How to Win Colleagues and Influence Your Boss TSConf 2019, Seattle WA Make people around you 10x better.

Slide 98

Slide 98 text

sugarpirate_ poteto Just Use Any: How to Win Colleagues and Influence Your Boss TSConf 2019, Seattle WA What problem are you trying to solve?

Slide 99

Slide 99 text

sugarpirate_ poteto Just Use Any: How to Win Colleagues and Influence Your Boss TSConf 2019, Seattle WA Accept that there may be many solutions to the problem.

Slide 100

Slide 100 text

sugarpirate_ poteto Just Use Any: How to Win Colleagues and Influence Your Boss TSConf 2019, Seattle WA Make it about the organization.

Slide 101

Slide 101 text

sugarpirate_ poteto Just Use Any: How to Win Colleagues and Influence Your Boss TSConf 2019, Seattle WA What is the impact of the change?

Slide 102

Slide 102 text

sugarpirate_ poteto Just Use Any: How to Win Colleagues and Influence Your Boss TSConf 2019, Seattle WA What's the sustainability of the language?

Slide 103

Slide 103 text

sugarpirate_ poteto Just Use Any: How to Win Colleagues and Influence Your Boss TSConf 2019, Seattle WA Context. Connecting the dots. Choice. Connection. Credibility.

Slide 104

Slide 104 text

Thank you. sugarpirate_ poteto no.lol bit.ly/just-use-any