"Kotlin does for Java and the JVM what Spring did to J2EE”
— Spring creator at SpringRod
I have noticed that Android and Kotlin are increasingly becoming synonyms, especially in the minds of IT recruiters.
It's a very understandable error. They are doing a different job and a good recruiter is not required to know everything that we know, he needs to do his own job well.
But it is wrong:
As you can see on this schema, Kotlin has a larger share of usage in Android than on the JVM. But since the JVM is a bigger platform, the number of Kotlin developers that do Android or something else is roughly similar.
The background on this is that the Android world is becoming fast Kotlin first.
Also there is a very tempting parallel with the Apple/iOS world where Swift is replacing Objective C.
Apple is pushing Swift.
It seems that Google is pushing Kotlin in the exact same way.
Some early articles even used this parallel explicitly:
... but it's not so simple
Kotlin was created by JetBrains, not for Android but for Java and the JVM.
That's a big difference with Swift/iOS.
The programmers interested in Swift and in iOS/macOS are basically the same.
On the other hand, while Android is a big platform, Java and the JVM is an even huger platform.
This explains neatly that while Kotlin is a big hit on Android, there are still as many or more Kotlin developers that are not programming for Kotlin.
So why was Kotlin a big success on Android if it was not designed for it?
Simple, it's a classic example of product-market fit.
JetBrains did not target Android developers.
Android developers world realized themselves quite clearly years ago that programming for Android was broken and needed to change.
I wrote about it here
So Android developers were actively seeking new solutions, trying out everything until they found something that sticks. And one of those things was Kotlin.
That's the context of what you have read
Google is now pushing Android as an official language on Android
It was not in fact like Swift which was invented and pushed by Apple for iOS developers.
Instead Kotlin was intended to replace Java, the Android developers discovered and used it first.
Then the Android Framework team decided to follow them.
I am certainly glad they did.
It does open new hopes for making developing for Android less painful.
And also it made the signaling much easier.
This is why dear recruiters you have heard the message that it was OK to use Kotlin in Android.
But in fact it was totally OK even before this was announced.
Today it's perfectly OK to use Kotlin on the JVM.
It's just that as an IT recruiter you may not be told explicitly to recruit for Kotlin backend developers.
I propose this rule of thumbs:
if Java is a good solution to a given problem,
then Kotlin is a great solution to the same problem
In particular Kotlin is a great choice for backend developers.
It has its own very interesting native frameworks.
And also it is pushed by the Big Guys from Spring and Spring Boot
Kotlin coroutines are changing the game because you don't have to choose between simple code and non-blocking code anymore. Why not both?
- There is a lag between when developers start using a technology and when recruiters are told to hire for that technology
- Android is becoming Kotlin first and 50% of Kotlin developers do Android
- The Kotlin+Android devs are highly visible and hard to find. If I were looking for an Android developer, I would focus on good Android developers that are currently using Java. Those can be more easily to learn Kotlin. Learning Android on the other hand is hard.
- Keep in mind that 50% of Kotlin developers do something else than Android. Those people gets a lot of job offers for doing Android and are getting annoyed by it. So if your company is Kotlin-first on the backend, you may want to do more marketing about it.
As software gets more and more integrated into our lives, the industrialization of its crafting process becomes inevitable. But the over-generalization of software engineering can be crushing the creative side of programming.