# How have or would you sell Kotlin to your team?

**URL:** <https://discuss.kotlinlang.org/t/how-have-or-would-you-sell-kotlin-to-your-team/2125>\
**Category:** Uncategorized\
**Created:** [December 1, 2016, 1:31am UTC](https://discuss.kotlinlang.org/t/how-have-or-would-you-sell-kotlin-to-your-team/2125 "2016-12-01T01:31:49Z")\
**Posts on this page:** 1\
**Showing post:** 17

<div class="post-metadata">

**Author:** ![skovtunenko](https://avatars.discourse-cdn.com/v4/letter/s/e47c2d/32.png) [@skovtunenko](https://discuss.kotlinlang.org/u/skovtunenko)\
**Post date:** [March 5, 2017, 11:50am UTC](https://discuss.kotlinlang.org/t/how-have-or-would-you-sell-kotlin-to-your-team/2125/17 "2017-03-05T11:50:13Z")

</div>

@brandonlamb, thanks, great list of features.

But I think that the best `selling points` to Java devteam are:

- **Greatest thing:** Java codebase will benefit from Kotlin code/libraries because of inserted `@Nullable` and `@NotNull` annotations visible from Java call site.
- Those annotations generated by Kotlin compiler will indirectly reduce NPE issues in Java.
- This handled well in IDE’s (check [IntelliJ IDEA 2016.3 Help :: @Nullable and @NotNull Annotations](https://www.jetbrains.com/help/idea/2016.3/nullable-and-notnull-annotations.html))
- Language fixed lots of annoying **Java design flaws** , like:
- concise POJO declaration (solved by `data` classes)
- singleton design pattern (solved by `object` classes)
- static methods - not OOP concept (solved by `extension functions` and `companion objects`)
- missing core immutable collections (solved by Kotlin standard library, 100% compatible with JCF)
- verbose generics (solved by Kotlin Generics)
- many Java puzzlers targeted (more details here: [Kotlin vs Java puzzlers - Svetlana Isakova on Vimeo](https://vimeo.com/105758307))
- hard-to-develop DSL’s (solved by `extention functions` and `extension functions with receivers`)
- operator overloading and check for equality, not identity (solved by `==` operator, etc.)
- declarations redundancy (solved by `var`, `val`, `primary constructor`, etc.)
- Java language concept of checked exception (all exceptions are unchecked)
- Java method overloading maintainability (solved by `default method parameters`)
- No need to wait for a new project, Kotlin can be easily integrated into existing Java project.
- No “black magic” under the hood: every Kotlin language feature can be easily explained to Java guy.
- Kotlin classes/annotations/enums/objects/companions/interfaces looks pretty convenient from Java side.
- Almost all NPE/KNPE exception stacktraces leads to the place, where the non-null object becomes null, thanks to inserted `precondition checks` by Kotlin compiler.

IMO, this is the most important improvements that can help java devteam to produce more stable code in less time.

---

_[View the full topic](https://discuss.kotlinlang.org/t/how-have-or-would-you-sell-kotlin-to-your-team/2125)._
