@elizarov I've thought about how can I sell the Kotlin to my company (big b2c enterprise, spring backend, lots of microservices) but I can't really find a way: I did not attempt for real, because I don't think it's cool to advertise the tool just because it's trending or simplifies things just for me or passionate few.
I've talked with several senior developers (not hardcore Java fans, have expertise in Haskell, Go and Lisp), and some of them do not like the idea of Kotlin because it introduces unnecessary complexity to the projects. Java bugs/problems are known (for decades) and Kotlin is young, has no really strict code culture, allows too much -- so it's an additional overhead, you need to control code quality more, keep up with updates et cetera. Lombok covers most of the easy-to-sell features, and even without them projects can be managed in simple trusted manner.
Teams consist of professionals with many years of experience, so selling e.g. co-routines like "you can write async code like sync" doesn't really mean much on the scale, because most of the code is reactive anyway, it's reviewed, and QE/perf testing will highlight edge cases (or you'll get feedback from Lx support). Also it's not really the core issue in the enterprise, Kotlin will not solve communication/requirement mess, which eats team time the most.
I think we might try Kotlin for some projects or some non-critical parts, but I'm not really sure about company-wide acceptance. Also you can't bring some features (e.g channels, actors) just because you want, it must be accepted by solution architect and management. Also you need to train people how to use new stuff (a lot of people).
I've tried to google arguments, but there is nothing besides some beginner-level stuff like already-in-lombok features and "look how we can simplify 8 java lines to 3 kotlin lines". I can't see killer features for the company's projects. I'll be grateful if you can give some insight.
PS: I'm thinking about building my argument with nullable types and how it's applicable for e.g. model packages, highlight some probable bugs and missed nullability checks. From my point of view it's simple enough for any Java developer (no complex kotlin features), free nullable annotations interop with Java (IDE support) and SpotBugs integration.