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

The State of Kotlin

The State of Kotlin

State of the Kotlin Ecosystem

117c1e7c12a469a052f1361b6599af31?s=128

Zan Markan

March 29, 2018
Tweet

Transcript

  1. The State of KOTLIN ZAN MARKAN DEVELOPER EVANGELIST @ PUSHER

  2. The State of KOTLIN ZAN MARKAN DEVELOPER EVANGELIST @ PUSHER

  3. KOTLIN @ PUSHER Used for all new SDK development for

    Android ▸ Chatkit ▸ Push Notifications ▸ Feeds © @zmarkan 2018 | @pusher
  4. SURVEY GOALS ▸ Learning ▸ Promote Kotlin usage ▸ Give

    back to the community ▸ Hoping for 1000 responses © @zmarkan 2018 | @pusher
  5. DOING THE SURVEY ▸ December - Jan -> Questions ▸

    Jan - March -> Survey running ▸ prize -> Nikola Curilovic © @zmarkan 2018 | @pusher
  6. 2744 RESPONSES © @zmarkan 2018 | @pusher

  7. 33% COMPLETION RATE © @zmarkan 2018 | @pusher

  8. 13M14S AVG TIME TO COMPLETE © @zmarkan 2018 | @pusher

  9. CATEGORIES SURVEYED ▸ Usage ▸ Learning ▸ Features ▸ Zeitgeist

    ▸ Demographics © @zmarkan 2018 | @pusher
  10. STATE OF KOTLIN © @zmarkan 2018 | @pusher

  11. KOTLIN USAGE © @zmarkan 2018 | @pusher

  12. 58% CURRENTLY USE KOTLIN ON A PROJECT © @zmarkan 2018

    | @pusher
  13. HAVE YOU EVER USED KOTLIN? © @zmarkan 2018 | @pusher

  14. ON WHAT KIND OF PROJECTS? © @zmarkan 2018 | @pusher

  15. 80% OF PEOPLE USE IT FOR ANDROID APPS © @zmarkan

    2018 | @pusher
  16. WORK PROJECTS © @zmarkan 2018 | @pusher

  17. OTHER PROJECTS ▸ Games ▸ Scripting ▸ Experiments ▸ Learning

    & Koans ▸ Data Science © @zmarkan 2018 | @pusher
  18. 55% vs 25% KOTLIN-ONLY PROJECTS © @zmarkan 2018 | @pusher

  19. KOTLIN IN WORK PROJECTS © @zmarkan 2018 | @pusher

  20. KOTLIN IN SIDE PROJECTS © @zmarkan 2018 | @pusher

  21. Other programming languages OF KOTLIN COMMUNITY © @zmarkan 2018 |

    @pusher
  22. JAVA, SWIFT, JS, NODE, PYTHON, ... © @zmarkan 2018 |

    @pusher
  23. MIGRATIONS FROM JAVA TO KOTLIN (and back again) © @zmarkan

    2018 | @pusher
  24. 87% MIGRATED JAVA TO KOTLIN © @zmarkan 2018 | @pusher

  25. HOW HAVE YOU DONE THE MIGRATION? © @zmarkan 2018 |

    @pusher
  26. 25% REVERTED MIGRATION © @zmarkan 2018 | @pusher

  27. None
  28. REASONS ▸ Reflection, dependencies - Dagger, GreenDAO, Realm & Data

    classes ▸ Early days: Spring DI and JaxRS ▸ Organisational reasons © @zmarkan 2018 | @pusher
  29. "Made to do it due to organizational rules" !

  30. "Another team took the code and didn’t want Kotlin" !

  31. "Migration tri!ered a number of changes in the Java code"

    !
  32. "Migration doesn't provide idiomatic kotlin and puts lot of nu!

    assertions" !
  33. LEARNING KOTLIN © @zmarkan 2018 | @pusher

  34. WHEN DID YOU PICK UP KOTLIN? © @zmarkan 2018 |

    @pusher
  35. WHY? ▸ Google, JetBrains support ▸ Tooling support ▸ Community

    folk: Jake Wharton, Christina Lee, Antonio Leiva ▸ JB folk: Hadi Hariri, Svetlana Isakova, Andrey Breslav © @zmarkan 2018 | @pusher
  36. "The popularity of Kotlin in a short period of time"

    !
  37. "Java was very verbose and Kotlin is just "

  38. "It's like Java++"

  39. TOP LEARNING RESOURCES © @zmarkan 2018 | @pusher

  40. DEVELOPER BACKGROUNDS © @zmarkan 2018 | @pusher

  41. FAVOURITE FEATURES © @zmarkan 2018 | @pusher

  42. FAVOURITE FEATURES © @zmarkan 2018 | @pusher

  43. Other FAVOURITE FEATURES ▸ when ▸ reified ▸ sealed classes

    ▸ lambdas © @zmarkan 2018 | @pusher
  44. FIRST ORDER FUNCTIONS? © @zmarkan 2018 | @pusher

  45. 77% HAVE USED EXTENSION FUNCTIONS © @zmarkan 2018 | @pusher

  46. WHAT FOR? ▸ Reducing Android boilerplate ▸ Replacing Util classes

    ▸ “nicer” FP ▸ Conversions → strings, etc… ▸ DSLs © @zmarkan 2018 | @pusher
  47. "We felt like going overboard with them Now trying to

    find a happy medium" !
  48. "The most important use case is lambda parameters for DSL-

    style builders." !
  49. "For clean code mostly They make the code more readable"

    !
  50. 29% HAVE USED COROUTINES © @zmarkan 2018 | @pusher

  51. WHAT FOR? ▸ Threading, I/O, UI ▸ Replacement for RxJava

    ▸ Lazy generators ▸ Serverside - with Ktor ▸ C# "expats" © @zmarkan 2018 | @pusher
  52. "I've used it with the library Arrow" !

  53. "Stopped using it because it’s experimental" ⚗

  54. "Fu!y in production for a fintech solution" !

  55. "They provide a very funny API when used to wrap

    JS promises" !
  56. 26% USED NON-JVM FEATURES © @zmarkan 2018 | @pusher

  57. NON-JVM FEATURES © @zmarkan 2018 | @pusher

  58. BUILD TOOLS © @zmarkan 2018 | @pusher

  59. 41% HAVE USED A DSL © @zmarkan 2018 | @pusher

  60. DSL USAGE © @zmarkan 2018 | @pusher

  61. 24% HAVE DEVELOPED A DSL THEMSELVES © @zmarkan 2018 |

    @pusher
  62. WHAT FOR? ▸ ML & AI ▸ Jake Wharton's Testing

    Robots ▸ UI Declarations (Android & Java) ▸ Configurations, tooling ▸ Custom Data Structures - typed JSON © @zmarkan 2018 | @pusher
  63. REPLACING C WITH K? © @zmarkan 2018 | @pusher

  64. © @zmarkan 2018 | @pusher

  65. KOTLIN ZEITGEIST © @zmarkan 2018 | @pusher

  66. 29% ARE MISSING THINGS IN KOTLIN © @zmarkan 2018 |

    @pusher
  67. MOST MISSED ▸ Ternary operator ▸ SAM for Kotlin classes

    ▸ Pattern matching ▸ More syntax sugar ▸ LINQ © @zmarkan 2018 | @pusher
  68. MORE MISSED... ▸ Literal bitwise operations ▸ Custom operations ▸

    Single multiplatform IDE ▸ VueJS support ▸ Swift’s guard © @zmarkan 2018 | @pusher
  69. 21% DISLIKE FEATURES... © @zmarkan 2018 | @pusher

  70. MOST HATED ▸ Companion objects / statics ▸ Too many

    "exotic" keywords ▸ Public by default ▸ No package-local modifier ▸ Not a dynamic language © @zmarkan 2018 | @pusher
  71. WHAT DO YOU LIKE THE MOST? ▸ Features ▸ moden

    programming language, similar to Swift, NOT Java ▸ Syntactic sugar, stdlib, easy to learn ▸ It's fun ▸ Platform independent © @zmarkan 2018 | @pusher
  72. None
  73. "It can be read like a story" !

  74. "I smile again when writing code" !

  75. "The language doesn't get in the way of getting the

    job done" !
  76. "Mortal Kombat: The Programming Language" !

  77. DEMOGRAPHICS © @zmarkan 2018 | @pusher

  78. KOTLINERS ARE EVERYWHERE ! " © @zmarkan 2018 | @pusher

  79. EMPLOYMENT © @zmarkan 2018 | @pusher

  80. YEARS WORKING AS DEVELOPER OR SWE © @zmarkan 2018 |

    @pusher
  81. NUMBER OF PEOPLE YOUR ORG © @zmarkan 2018 | @pusher

  82. KOTLIN DEVS IN YOUR ORG © @zmarkan 2018 | @pusher

  83. SECTORS AND INDUSTRY © @zmarkan 2018 | @pusher

  84. FUTURE OF STATE OF KOTLIN? WHAT WOULD YOU LIKE TO

    ASK? © @zmarkan 2018 | @pusher
  85. Zan Markan zan@pusher.com @zmarkan © @zmarkan 2018 | @pusher

  86. REFERENCES ▸ JW's whitepaper from Square: docs.google.com/document/d/ 1ReS3ep-hjxWA8kZi0YqDbEhCqTt29hG8P44aA9W0DM8 ▸ Kotlin

    Future Features survey: blog.jetbrains.com/kotlin/2017/06/ kotlin-future-features-survey-results ▸ StackOvervlow Survey: insights.stackoverflow.com/survey/2018 © @zmarkan 2018 | @pusher