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

TSConf 2019: Just Use Any - How to Win Colleagues and Influence Your Boss

Lauren Tan
October 11, 2019

TSConf 2019: Just Use Any - How to Win Colleagues and Influence Your Boss

https://www.youtube.com/watch?v=p5Hwb1YbNMY

TypeScript has won the hearts and minds of programmers all around the world. Unfortunately, your deadlines are due yesterday, your boss is unconvinced, and your team remains skeptical. What's a TypeScript enthusiast to do? Join me on a journey of self-discovery: we'll learn what it means to lead by influence and level up our effectiveness as engineers. Then, an exploration of the value to engineering and business brought about by type systems (with some math to prove it). To tie it all together, we'll explore this through the lens of real world stories from Netflix, where we use TypeScript to modernize filmmaking.

Lauren Tan

October 11, 2019
Tweet

More Decks by Lauren Tan

Other Decks in Programming

Transcript

  1. 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
  2. sugarpirate_ poteto Just Use Any: How to Win Colleagues and

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

    Influence Your Boss TSConf 2019, Seattle WA Who cares about "influence"?
  4. 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.
  5. 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.
  6. 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.
  7. sugarpirate_ poteto Just Use Any: How to Win Colleagues and

    Influence Your Boss TSConf 2019, Seattle WA These were not problems that needed solving.
  8. 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.
  9. 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.
  10. 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.
  11. sugarpirate_ poteto Just Use Any: How to Win Colleagues and

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

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

    Influence Your Boss TSConf 2019, Seattle WA Studio UI.
  14. 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
  15. sugarpirate_ poteto Just Use Any: How to Win Colleagues and

    Influence Your Boss TSConf 2019, Seattle WA TypeScript. GraphQL. gRPC. JVM.
  16. 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.
  17. 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.
  18. 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.
  19. 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.
  20. 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
  21. 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.
  22. 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.
  23. 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.
  24. sugarpirate_ poteto Just Use Any: How to Win Colleagues and

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

    Influence Your Boss TSConf 2019, Seattle WA
  26. 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
  27. sugarpirate_ poteto Just Use Any: How to Win Colleagues and

    Influence Your Boss TSConf 2019, Seattle WA
  28. 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.
  29. sugarpirate_ poteto Just Use Any: How to Win Colleagues and

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

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

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

    Influence Your Boss TSConf 2019, Seattle WA Hold your horses
  33. 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
  34. sugarpirate_ poteto Just Use Any: How to Win Colleagues and

    Influence Your Boss TSConf 2019, Seattle WA What problem are you trying to solve?
  35. 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.
  36. sugarpirate_ poteto Just Use Any: How to Win Colleagues and

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

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

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

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

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

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

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

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

    Influence Your Boss TSConf 2019, Seattle WA Context.
  45. 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.
  46. 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.
  47. 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.
  48. sugarpirate_ poteto Just Use Any: How to Win Colleagues and

    Influence Your Boss TSConf 2019, Seattle WA Context. Connecting the dots. Choice. Connection. Credibility*
  49. 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.
  50. 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.
  51. 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.
  52. sugarpirate_ poteto Just Use Any: How to Win Colleagues and

    Influence Your Boss TSConf 2019, Seattle WA Context. Connecting the dots. Choice. Connection. Credibility*
  53. 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.
  54. 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.
  55. 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.
  56. sugarpirate_ poteto Just Use Any: How to Win Colleagues and

    Influence Your Boss TSConf 2019, Seattle WA Context. Connecting the dots. Choice. Connection. Credibility*
  57. 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.
  58. 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.
  59. sugarpirate_ poteto Just Use Any: How to Win Colleagues and

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

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

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

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

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

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

    Influence Your Boss TSConf 2019, Seattle WA Why should I care about type systems?
  66. 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
  67. sugarpirate_ poteto Just Use Any: How to Win Colleagues and

    Influence Your Boss TSConf 2019, Seattle WA Most languages are typechecked.
  68. 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.
  69. sugarpirate_ poteto Just Use Any: How to Win Colleagues and

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

    Influence Your Boss TSConf 2019, Seattle WA What are types anyway?
  71. 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.
  72. 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' '✌'
  73. 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
  74. 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
  75. 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
  76. 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'
  77. sugarpirate_ poteto Just Use Any: How to Win Colleagues and

    Influence Your Boss TSConf 2019, Seattle WA number type Option<A> = None | Some<A> Cardinality: 2 None Some<Person> https://github.com/gcanti/fp-ts
  78. 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
  79. 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
  80. 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
  81. 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.
  82. sugarpirate_ poteto Just Use Any: How to Win Colleagues and

    Influence Your Boss TSConf 2019, Seattle WA function toString<T>(x: T): string { return x.toString(); } toString(undefined); toString(null); function toString<undefined>(x: undefined): string function toString<null>(x: null): string
  83. 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<T>(x: T): string
  84. sugarpirate_ poteto Just Use Any: How to Win Colleagues and

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

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

    Influence Your Boss TSConf 2019, Seattle WA function toString<T>(x: NonNullable<T>): 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'.
  87. 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<T>(x: NonNullable<T>): string
  88. sugarpirate_ poteto Just Use Any: How to Win Colleagues and

    Influence Your Boss TSConf 2019, Seattle WA function toString<T>(x: NonNullable<T> & { 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'.
  89. 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
  90. sugarpirate_ poteto Just Use Any: How to Win Colleagues and

    Influence Your Boss TSConf 2019, Seattle WA string number object symbol array NonNullable<T> 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
  91. sugarpirate_ poteto Just Use Any: How to Win Colleagues and

    Influence Your Boss TSConf 2019, Seattle WA https://youtu.be/cj07Fwzamy0
  92. 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
  93. sugarpirate_ poteto Just Use Any: How to Win Colleagues and

    Influence Your Boss TSConf 2019, Seattle WA
  94. 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
  95. sugarpirate_ poteto Just Use Any: How to Win Colleagues and

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

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

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

    Influence Your Boss TSConf 2019, Seattle WA What problem are you trying to solve?
  99. 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.
  100. sugarpirate_ poteto Just Use Any: How to Win Colleagues and

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

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

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

    Influence Your Boss TSConf 2019, Seattle WA Context. Connecting the dots. Choice. Connection. Credibility.