I am a Kotlin enthusiast because it's in the Venn diagram of well-designed languages that are also a good choice in practice because of its pragmatism and its tooling.
Kotlin is mostly known right now for backend programming and Android. But early adopters are building interesting things in lots of other areas as well, like improving Gradle with Kotlin, Data Science, sharing code between iOS and Android, using Kotlin on the frontend most notably JetBrains Space, command-line tools with Kotlin/Native, ...
But first things first.
If you are interested in any of this, the first question is:
What is the most efficient way for you to learn Kotlin?
I met Sebastian Aigner at KotlinConf 2019 which gave a great overview of the available options, so I figured out I would interview him here.
Sebastian, can you tell a bit about you?
Who are you as a person and what makes you tick?
Hi, and thanks so much for reaching out! I’m Sebastian, and I work as Developer Advocate at JetBrains.
My main focus at work are the topics of Kotlin and Education.
You work on the JetBrains Educational Products.
Can you simply explain what is the goal behind it?
While I don’t stricly work on the Educational Tools myself, I help collect feedback, plan features, and help both educators and learners get started with our products.
Our mission is to make the lives of everyone who wants to learn or teach programming easier.
We mainly do by providing valuable tools for everyone – for learners, we want to make it intuitive to complete courses from within the same environment they would use in their day job – a full-fledged, professional-grade IDE.
For educators, we want to help them create rich and interactive learning experience that closely mimic tasks that software engineers encounter in their daily lives.
Let's imagine I am pretty new for programming and want to learn Kotlin first.
How could I get started?
We believe that Kotlin is a great language to get started out with. The go-to resource for learning programming from scratch using Kotlin is the book Atomic Kotlin from Bruce Eckel and Svetlana Isakova. It does not assume any kind of previous knowledge about programming. You can find out more about the book at https://www.atomickotlin.com/
Especially if you’re struggling with motivating yourself to get started, we have a second approach currently brewing.
Hyperskill by JetBrains Academy is our effort for teaching folks how to program in a project-based environment. This means that instead of listening to lectures without knowing why you’re learning a topic, you’ll always know the reason for a lesson.
We do this by tailoring your curriculum around a catalog of projects from which you can pick.
We announced the Kotlin track on Hyperskill on KotlinConf 2019. You can get started for free while the project is in EAP at https://hyperskill.org/.
Now let's imagine I have Java experiences and want to learn the Kotlin specific stuff. Where should I go?
If you’re into books, a good start is probably Kotlin in Action by my colleagues Svetlana Isakova and Dmitry Jemerov.
It focuses on people who are already familiar with developing in Java and want to get started with Kotlin. You can find out more about the book at https://www.manning.com/books/kotlin-in-action.
If you would like to get hands-on directly, I can always recommend the Kotlin Koans that are available on the Kotlin Website.
They are essentially a list of small exercises that each target some special idiom or Kotlin syntax.
You can work on them from the browser directly on the website, or choose to do them from your IDE.
You can find out more about Kotlin Koans at https://play.kotlinlang.org/koans/.
And then there’s also our course called Kotlin for Java Developers which you can audit for free on Coursera. It features Andrey Breslav, the Kotlin team lead, as well as Svetlana Isakova (for a third time!), so you know that as a Kotlin beginner, you’ll be in great hands. You can find out more about it at https://www.coursera.org/learn/kotlin-for-java-developers.
Now let's imagine I am savvy enough to have my computer setup with JetBrains IntelliJ or Android Studio and I would like to go one step further and learn Kotlin by using it from the IDE as professional devs do. How could I do this?
Easy! The folks from the Education team have neatly bundled up all the functionality for learning into the EduTools plugin.
It’s available for all of our most popular development environments. Once you’ve installed it, you can simply select from a set of courses, and begin to learn.
By default, it for example ships with the Kotlin Koans I’ve mentioned before. But it also allows you to log in to online learning platforms like Coursera or Hyperskill, and work on assignments from the courses you have enrolled in.
You can learn more and get started with the EduTools plugin at https://plugins.jetbrains.com/plugin/10081-edutools.
Now I am thinking about library authors around there.
They also need to help people learn their API.
Can they re-use the infrstructure you built to make learning their own API easier?
Just like professors who want people to grasp the basics of programming, library authors or people in charge of onboarding new engineers to a complex platforms have to act as educators.
The EduTools plugin which I mentioned before has a specific mode, the Course Creator Mode, which makes it easy to create your own courses – with placeholders, task descriptions, automated tests, and even multiple choice questions right within the IDE!
At the root of the courses are Gradle projects, so it is easy to add dependencies to your own libraries for example, and demonstrate topics that are specifically relevant to your own target audience – no matter if it’s first year university students, folks wanting to try out your library, or junior software engineers just joining your company.
We have extensive guides on how to approach this at https://www.jetbrains.com/help/education/educator-start-guide.html.
Where can people reach you if they want to know more?
The fastest and most casual way to reach me is via my Twitter account @TrueSebi.
Alternatively, you can find me on https://github.com/SebastianAigner
Or you can shoot me an email at sebastian dot aigner at jetbrains dot com.
I’m always excited to chat with people about all things Kotlin, and help them realize how what we do at JetBrains can help them realize their full potential – whether they’ve been a Software Engineer for 20 years, or have just started out learning their first “Hello, Kotlin” program.
When you see me at conferences, come say hi, and we can have a chat about all these topics as well!