My career-related content is now open-source on GitHub.
If you look at my DEV profile, or meet me in person at a Meetup, I am sometimes the kind of guy that can't shut up about the fact that Rust-empowers-you-to-use-computer-memory-safely-but-with-zero-overhead. But in my case about how I enjoy Kotlin on anything that doesn't start with "And" and ends with "roid", and in particular on the backend side of things.
The darker side of the story
It's my time to be honest and reveal that there is a darker side to this story.
Actually I already wrote about this three years ago, because it's a reccuring irony of my life.
But I'm job hunting right now, and it is hitting me. Again. Just because there is Kotlin on my CV, the LinkedIn beast is assuming once again that I am an Android enthusiast and overwhelm me accordingly.
You are probably asking yourself:
But why don't your clarify things by putting as first line of your LinkedIn profile? "Hey, I speak Kotlin but I'm not an Android developer, I'm a Backend developer".
Dear sweetie: you vastly underestimate just how dumb LinkedIn is.
When you do that, you reliably get not less but more Android stuff.
And I take a deep breath and I get real high
And I scream at the top of my lungs
What's going on ?
What's going on?
The simplest explanation would be that there are lots of Android jobs but few backend jobs. But only the first half is true.
Truth is that there is a big imbalance in the Kotlin world:
JetBrains is doing the bulk of the engineering
Google is doing the bulk of the marketing, Android related.
If you are deep in the Kotlin world you can point out good counter examples.
But you are not my audience.
Is there an equivalent of Spring for Kotlin?
I was discussing in a Discord with a relatively mid level to senior backend developer. He asked me how I backend stuff, so I started not shutting up about how Kotlin. He was polite but also skeptical. Clearly not the first time he had heard about Kotlin, but he was not convinced. But still interested enough.
And then, he asked me this:
Is there an equivalent of Spring Boot for Kotlin?
I was struck by the simplicity of that question.
So I took a deep breath, didn't get real high, and without screaming, I replied simply:
Absolutely: the equivalent of the Spring Boot for Kotlin is.... Spring Boot itself.
Now it was his turn to be struck by the simplicity of my answer. So I went on.
Spring with Kotlin works the same than Spring Java. And mostly it's a no brainer. You can google Sébastien Deleuze kotlin spring, this guy from the Spring team has been working like a greek hero for a very long time: fixing issues small and big, creating libraries, producing sample projects, writing articles, giving talks, ...
At that point, everything clicked for him, and he was in mode "oh my god, I didn't realize that, I'm going to try it, like very soon". Days later he told me he did. That I was not lying :)
Kotlin's Biggest Problem?
A second fun discussion with a simple question and answer happened recently on Slack.
This time it was with an IT professional trainer. He gives training on all sort of things, including Java and Kotlin. Obviously, I asked how that went but he replied.
- Kotlin training is kind of boring to be honest. If the audience already know Java, it's mostly the same concepts under new clothes. Right, a few new concepts here and there, but you can cover that quickly and be done.
- Well you are right, probably not great for a 2 days workshop. For us on the other hand, it's a good thing that you can take an existing Spring/Java developer, take her real expertise (backend programming) and help her learn Kotlin quickly.
- Fair enough. But now hear me on this: do you know what Kotlin's biggest problem on the backend is?
I've had this discussion before, so I could easily imagine some bad and a few good answers to this question.
But I sure wasn't expecting this one:
Kotlin's biggest problem is its name.
Different Languages, the same Java Ecosystem
Before 1763, the same version of French was spoken in Québec and Paris. That same year, "New France" stopped to exist and the people living there became a francophone island inside the mighty British Empire. For a very long time, the two versions of French were isolated and started to diverge.
My mother tongue is the variant from Paris. I went to Québec when I was 20, and my first day and I couldn't understand half of what people said to me. It was confusing and frustrating as hell. Story doesn't end here though. Soon after I recognized the pattern between our differences, could understand have normal conversations, even started to like it, and for the rest, strange words like tabernacle, I just used Stackoverflow.
You know where I'm leading with this analogy: Java/JVM and Kotlin/JVM are not like Portuguese and Chinese, they are like French/France and French/Québec.
Different languages but the same Java ecosystem.
We share most of the same language concepts, the same JVM, the same IntelliJ IDEA, the same Gradle biuld tool, the same libraries (huge deal), many good practices, we interoperate seamlessly, and to take this example, we have Spring in common.
So Why Didn't JetBrains use a Name Closer to Java?
When I'm job hunting, I wish indeed that Kotlin was called something much closer to Java.
Which name? It couldn't be Java 2.0 because Java itself is improving (version 20 now) and that's a good thing that the whole ecosystem goes forward.
Maybe Java++? When Bjarne Stroustrup called its language C++, he found probably the most effective way to both claim the legacy of C, the big master of the day, and that he wanted to offer something better.
Now the issue is that C++ is a strict superset of C, so everything that works in C needs to work in C++. That makes for a super smooth transition: there is this story that I choose to be true, that many of the early C++ developers were C developers who only wanted to use one-line comments. That also brings a long term huge technical debt, because everything bad that exists in C is still in C++ by definition.
Kotlin is not like that, it is more a refactoring of Java. JetBrains took what I would say is the hard path, they didn't want to only add good thing, they also wanted to remove the parts that they found didn't work well in practice. Like the billion dollar mistake or checked exceptions.
JavaScript would have been a pretty good name too, but it was already taken by a famously successful language that has famously nothing to do with Java. Would have been nice if Netscape called their language TypeScript. This would have required to postpone the language for Netscape 2.0 and get it right. Which would have been awesome. Alas, we don't have a time machine AFAIK.
The names Java and Kotlin are in fact linked
Many people know the origin story of the name "Java", but it became such a huge success that I would guess that many many more don't know it. In fact, while researching for this article, I realized that Java's origin story is more complex and mysterious than I thought.
Here is my simplistic version:
Java engineers were struggling with the names they had like Oak or WebRunner so they went to brainstorm. They were drinking their favorite foreign coffee from the foreign island of Java, Indonesia.
Now Kotlin's origin story sounds familiar
Kotlin engineers were at JetBrains office in Saint Petersburg looking for a good name. They remembered the beautiful foreign island of Kotlin just outside.
So in case you missed it, there always was a link, and lots of water, between Java and Kotlin.
If you knew it already, doesn't matter: LinkedIn will always assume that we are Android enthusiasts.
🙏🏻Thanks for reading
Please send the article to a friend that needs it.
Hi, I’m Jean-Michel Fayard. On my website, you can ask me a question or see some cool programming memes.