Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
The State of KOTLIN ZAN MARKAN DEVELOPER EVANGELIST @ PUSHER
Slide 2
Slide 2 text
The State of KOTLIN ZAN MARKAN DEVELOPER EVANGELIST @ PUSHER
Slide 3
Slide 3 text
KOTLIN @ PUSHER Used for all new SDK development for Android ▸ Chatkit ▸ Push Notifications ▸ Feeds © @zmarkan 2018 | @pusher
Slide 4
Slide 4 text
SURVEY GOALS ▸ Learning ▸ Promote Kotlin usage ▸ Give back to the community ▸ Hoping for 1000 responses © @zmarkan 2018 | @pusher
Slide 5
Slide 5 text
DOING THE SURVEY ▸ December - Jan -> Questions ▸ Jan - March -> Survey running ▸ prize -> Nikola Curilovic © @zmarkan 2018 | @pusher
Slide 6
Slide 6 text
2744 RESPONSES © @zmarkan 2018 | @pusher
Slide 7
Slide 7 text
33% COMPLETION RATE © @zmarkan 2018 | @pusher
Slide 8
Slide 8 text
13M14S AVG TIME TO COMPLETE © @zmarkan 2018 | @pusher
Slide 9
Slide 9 text
CATEGORIES SURVEYED ▸ Usage ▸ Learning ▸ Features ▸ Zeitgeist ▸ Demographics © @zmarkan 2018 | @pusher
Slide 10
Slide 10 text
STATE OF KOTLIN © @zmarkan 2018 | @pusher
Slide 11
Slide 11 text
KOTLIN USAGE © @zmarkan 2018 | @pusher
Slide 12
Slide 12 text
58% CURRENTLY USE KOTLIN ON A PROJECT © @zmarkan 2018 | @pusher
Slide 13
Slide 13 text
HAVE YOU EVER USED KOTLIN? © @zmarkan 2018 | @pusher
Slide 14
Slide 14 text
ON WHAT KIND OF PROJECTS? © @zmarkan 2018 | @pusher
Slide 15
Slide 15 text
80% OF PEOPLE USE IT FOR ANDROID APPS © @zmarkan 2018 | @pusher
Slide 16
Slide 16 text
WORK PROJECTS © @zmarkan 2018 | @pusher
Slide 17
Slide 17 text
OTHER PROJECTS ▸ Games ▸ Scripting ▸ Experiments ▸ Learning & Koans ▸ Data Science © @zmarkan 2018 | @pusher
Slide 18
Slide 18 text
55% vs 25% KOTLIN-ONLY PROJECTS © @zmarkan 2018 | @pusher
Slide 19
Slide 19 text
KOTLIN IN WORK PROJECTS © @zmarkan 2018 | @pusher
Slide 20
Slide 20 text
KOTLIN IN SIDE PROJECTS © @zmarkan 2018 | @pusher
Slide 21
Slide 21 text
Other programming languages OF KOTLIN COMMUNITY © @zmarkan 2018 | @pusher
Slide 22
Slide 22 text
JAVA, SWIFT, JS, NODE, PYTHON, ... © @zmarkan 2018 | @pusher
Slide 23
Slide 23 text
MIGRATIONS FROM JAVA TO KOTLIN (and back again) © @zmarkan 2018 | @pusher
Slide 24
Slide 24 text
87% MIGRATED JAVA TO KOTLIN © @zmarkan 2018 | @pusher
Slide 25
Slide 25 text
HOW HAVE YOU DONE THE MIGRATION? © @zmarkan 2018 | @pusher
Slide 26
Slide 26 text
25% REVERTED MIGRATION © @zmarkan 2018 | @pusher
Slide 27
Slide 27 text
No content
Slide 28
Slide 28 text
REASONS ▸ Reflection, dependencies - Dagger, GreenDAO, Realm & Data classes ▸ Early days: Spring DI and JaxRS ▸ Organisational reasons © @zmarkan 2018 | @pusher
Slide 29
Slide 29 text
"Made to do it due to organizational rules" !
Slide 30
Slide 30 text
"Another team took the code and didn’t want Kotlin" !
Slide 31
Slide 31 text
"Migration tri!ered a number of changes in the Java code" !
Slide 32
Slide 32 text
"Migration doesn't provide idiomatic kotlin and puts lot of nu! assertions" !
Slide 33
Slide 33 text
LEARNING KOTLIN © @zmarkan 2018 | @pusher
Slide 34
Slide 34 text
WHEN DID YOU PICK UP KOTLIN? © @zmarkan 2018 | @pusher
Slide 35
Slide 35 text
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
Slide 36
Slide 36 text
"The popularity of Kotlin in a short period of time" !
Slide 37
Slide 37 text
"Java was very verbose and Kotlin is just "
Slide 38
Slide 38 text
"It's like Java++"
Slide 39
Slide 39 text
TOP LEARNING RESOURCES © @zmarkan 2018 | @pusher
Slide 40
Slide 40 text
DEVELOPER BACKGROUNDS © @zmarkan 2018 | @pusher
Slide 41
Slide 41 text
FAVOURITE FEATURES © @zmarkan 2018 | @pusher
Slide 42
Slide 42 text
FAVOURITE FEATURES © @zmarkan 2018 | @pusher
Slide 43
Slide 43 text
Other FAVOURITE FEATURES ▸ when ▸ reified ▸ sealed classes ▸ lambdas © @zmarkan 2018 | @pusher
Slide 44
Slide 44 text
FIRST ORDER FUNCTIONS? © @zmarkan 2018 | @pusher
Slide 45
Slide 45 text
77% HAVE USED EXTENSION FUNCTIONS © @zmarkan 2018 | @pusher
Slide 46
Slide 46 text
WHAT FOR? ▸ Reducing Android boilerplate ▸ Replacing Util classes ▸ “nicer” FP ▸ Conversions → strings, etc… ▸ DSLs © @zmarkan 2018 | @pusher
Slide 47
Slide 47 text
"We felt like going overboard with them Now trying to find a happy medium" !
Slide 48
Slide 48 text
"The most important use case is lambda parameters for DSL- style builders." !
Slide 49
Slide 49 text
"For clean code mostly They make the code more readable" !
Slide 50
Slide 50 text
29% HAVE USED COROUTINES © @zmarkan 2018 | @pusher
Slide 51
Slide 51 text
WHAT FOR? ▸ Threading, I/O, UI ▸ Replacement for RxJava ▸ Lazy generators ▸ Serverside - with Ktor ▸ C# "expats" © @zmarkan 2018 | @pusher
Slide 52
Slide 52 text
"I've used it with the library Arrow" !
Slide 53
Slide 53 text
"Stopped using it because it’s experimental" ⚗
Slide 54
Slide 54 text
"Fu!y in production for a fintech solution" !
Slide 55
Slide 55 text
"They provide a very funny API when used to wrap JS promises" !
Slide 56
Slide 56 text
26% USED NON-JVM FEATURES © @zmarkan 2018 | @pusher
Slide 57
Slide 57 text
NON-JVM FEATURES © @zmarkan 2018 | @pusher
Slide 58
Slide 58 text
BUILD TOOLS © @zmarkan 2018 | @pusher
Slide 59
Slide 59 text
41% HAVE USED A DSL © @zmarkan 2018 | @pusher
Slide 60
Slide 60 text
DSL USAGE © @zmarkan 2018 | @pusher
Slide 61
Slide 61 text
24% HAVE DEVELOPED A DSL THEMSELVES © @zmarkan 2018 | @pusher
Slide 62
Slide 62 text
WHAT FOR? ▸ ML & AI ▸ Jake Wharton's Testing Robots ▸ UI Declarations (Android & Java) ▸ Configurations, tooling ▸ Custom Data Structures - typed JSON © @zmarkan 2018 | @pusher
Slide 63
Slide 63 text
REPLACING C WITH K? © @zmarkan 2018 | @pusher
Slide 64
Slide 64 text
© @zmarkan 2018 | @pusher
Slide 65
Slide 65 text
KOTLIN ZEITGEIST © @zmarkan 2018 | @pusher
Slide 66
Slide 66 text
29% ARE MISSING THINGS IN KOTLIN © @zmarkan 2018 | @pusher
Slide 67
Slide 67 text
MOST MISSED ▸ Ternary operator ▸ SAM for Kotlin classes ▸ Pattern matching ▸ More syntax sugar ▸ LINQ © @zmarkan 2018 | @pusher
Slide 68
Slide 68 text
MORE MISSED... ▸ Literal bitwise operations ▸ Custom operations ▸ Single multiplatform IDE ▸ VueJS support ▸ Swift’s guard © @zmarkan 2018 | @pusher
Slide 69
Slide 69 text
21% DISLIKE FEATURES... © @zmarkan 2018 | @pusher
Slide 70
Slide 70 text
MOST HATED ▸ Companion objects / statics ▸ Too many "exotic" keywords ▸ Public by default ▸ No package-local modifier ▸ Not a dynamic language © @zmarkan 2018 | @pusher
Slide 71
Slide 71 text
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
Slide 72
Slide 72 text
No content
Slide 73
Slide 73 text
"It can be read like a story" !
Slide 74
Slide 74 text
"I smile again when writing code" !
Slide 75
Slide 75 text
"The language doesn't get in the way of getting the job done" !
Slide 76
Slide 76 text
"Mortal Kombat: The Programming Language" !
Slide 77
Slide 77 text
DEMOGRAPHICS © @zmarkan 2018 | @pusher
Slide 78
Slide 78 text
KOTLINERS ARE EVERYWHERE ! " © @zmarkan 2018 | @pusher
Slide 79
Slide 79 text
EMPLOYMENT © @zmarkan 2018 | @pusher
Slide 80
Slide 80 text
YEARS WORKING AS DEVELOPER OR SWE © @zmarkan 2018 | @pusher
Slide 81
Slide 81 text
NUMBER OF PEOPLE YOUR ORG © @zmarkan 2018 | @pusher
Slide 82
Slide 82 text
KOTLIN DEVS IN YOUR ORG © @zmarkan 2018 | @pusher
Slide 83
Slide 83 text
SECTORS AND INDUSTRY © @zmarkan 2018 | @pusher
Slide 84
Slide 84 text
FUTURE OF STATE OF KOTLIN? WHAT WOULD YOU LIKE TO ASK? © @zmarkan 2018 | @pusher
Slide 85
Slide 85 text
Zan Markan
[email protected]
@zmarkan © @zmarkan 2018 | @pusher
Slide 86
Slide 86 text
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