How Kotlin Is Going To Fix Your Pains in 2023
This year, we ran the first Kotlin Developer Survey. We designed the survey to help us identify and prioritize the pain points that most significantly affect Kotlin users’ satisfaction. The collected data will be used to refine and prioritize the Kotlin team’s plans. Today, we would like to share the first survey’s key findings, our plans to address the most popular issues, and some tips on what you can do about them right now.
To measure user satisfaction, we devised and calculated the Customer Satisfaction Score. We asked you to rate your satisfaction with Kotlin in general, and with its different subsystems on a linear scale. Customer Satisfaction Score (CSAT) is the percentage of all the survey responses that are positive (”Very satisfied” + “Satisfied”):
CSAT (%) = (No. positive responses / Total no. responses) * 100.
According to the first survey, the current Kotlin Customer Satisfaction Score is 86%.
The first round of research confirmed that the main pain points for Kotlin users are currently IDE and build performance. The build setup was also among the top problems. According to the survey, these factors have the strongest impact on Kotlin Multiplatform Gradle users.
Build Tools Satisfaction
Based on the data from the first Kotlin Developer Survey, the current Kotlin Build Tools Customer Satisfaction Score is 62%, which means more than a third of users are not satisfied with it.
To properly prioritize the build tool issues, we asked the users who gave an “Unsatisfied” or “Very unsatisfied” score to identify up to three subsystems they were most unsatisfied with, and build performance was the biggest issue:
Improving build performance
The Kotlin team has already started improving build performance, with further steps planned:
- ✅ Kotlin 1.7.0 introduces performance improvements for the Kotlin/JVM compiler. According to our benchmarks, compilation time has been reduced by 10% on average compared to Kotlin 1.6.0.
- ✅ In Kotlin 1.7.0 we announced improved incremental compilation, which is currently experimental and supports only the JVM backend in the Gradle build system. The new scheme decreases the number of necessary full-module and file recompilations, making the overall compilation time faster. We expect users will see the most significant improvements from the new approach if they use the Gradle build cache or frequently make changes in non-Kotlin Gradle modules. We plan to make the new incremental compilation stable for Gradle and add support for Maven and other build systems in the future.
- ✅ Since Kotlin 1.7.0, users have been able to create build reports for Kotlin compiler tasks, allowing them to find and fix performance problems.
- ▶️ We’re also continuing to improve our performance metrics. Recently, we started collecting and analyzing compilation speed metrics from production, including the K2 compiler.
The Kotlin team has already made a lot of effort to improve the build performance and almost reached the limits of improvements possible with the current Kotlin compiler. Our main efforts will now be on stabilizing the new Kotlin K2 compiler, which is now in Alpha and is focused on performance improvements.
If you want to help us with the K2 compiler stabilization and experience the performance boost it already brings, enable the Kotlin K2 compiler in your project:
Kotlin IDE Satisfaction
In general, Kotlin users are very satisfied with the completeness, quality, and usability of the language support in the IDEs (Android Studio and IntelliJ IDEA). However, the IDE performance clearly doesn’t provide the best experience while using Kotlin – the Customer Satisfaction Score is just 56%.
Improving the IDE performance
To determine which problems to address first, we asked the users who gave an “Unsatisfied” or “Very unsatisfied” rating to identify up to three subsystems that they were most unsatisfied with.
Projects import, references search operations, and syntax highlighting performance rarely cause problems. The main dissatisfaction with IDE performance is related to IDE freezes and indexing — more than 40% of Kotlin users included them in their list.
As with the build tools, the Kotlin team has already taken many steps to fix IDE freezes and improve IDE indexes, and more are planned:
- ✅ The most recent steps we’ve taken to optimize indexes in IntelliJ IDEA 2022.1 and 2022.2 has positively impacted the IDE’s speed and performance for code highlighting, code completion, and Find Usages.
- ✅ Performance analytics show that, in the latest versions of IntelliJ IDEA, the speed of indexing, highlighting, and code completion in Kotlin projects is almost the same as in JAVA.
- ✅ ▶️ There were many fixes to reduce freezes in the latest IntelliJ IDEA releases (2022.1 and 2022.2). More improvements are planned for 2022.3. We will keep an eye on these changes and try to measure the effect of these improvements.
- ▶️ We have carefully looked into the backlog of problems related to IDE freezes and plan to fix the most common ones.
To feel the effect of improvements that have already been made, we strongly recommend you use the latest versions of IntelliJ IDEA and Kotlin. You can benefit from these improvements even before the Stable release by trying Kotlin Beta versions. It also helps the Kotlin team to gather necessary feedback to stabilize a new language version, so each time you try Kotin Beta, you make a valuable contribution to Kotin development!
Kotlin Libraries Satisfaction
We were excited to see how our efforts in developing core Kotlin libraries are helping boost user enjoyment of developing with Kotlin. kotlinx-coroutines and kotlinx-serialization are satisfying the needs of more than 80% of users, and Kotlin Standard Library is an ultimate winner with a 90% Customer Satisfaction Rate.
Kotlin Libraries subsystems customer satisfaction score
Check out the Kotlin Library Safary Youtube Series and see if you are using the full power Kotlin gives you right out of the box.
The first stable release of kotlinx-datetime was warmly welcomed, especially in the Kotlin Multiplatform community. However, as a young library, it has more areas for growth. Check out the Improve `kotlinx-datetime` library Kotlin Roadmap ticket for details.
We would like to thank all of the First Kotlin Developer Survey participants. The data we collected is invaluable for helping the Kotlin team make the language and tools even better and more convenient to use.
We will gradually improve this survey and conduct it on a regular basis. Subscribe to the Kotlin Blog and social media (Twitter, Youtube) to make sure you don’t miss the future surveys and other important announcements.
- How to enable Kotlin K2 Compiler
- How to update to a new Kotlin Release
- How to try Kotlin Beta and RC versions
- Kotlin Roadmap