DEV Community

Cover image for How to learn Kotlin: browser vs IDE, books vs tutorials, for newbies and Java devs
Jean-Michel 🕵🏻‍♂️ Fayard
Jean-Michel 🕵🏻‍♂️ Fayard

Posted on • Updated on

How to learn Kotlin: browser vs IDE, books vs tutorials, for newbies and Java devs

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.

Interview with Sebastian Aigner [JetBrains]

Who are you?

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.

The former topics focuses on how we bring Kotlin to the web world through its JavaScript target. The latter focuses on how we can empower educators and learners through tool support.

What are JetBrains Educational Products?

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.

If I'm new to programming...

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/.

Screen Shot 2019-12-15 at 11 06 31 AM

If I'm a Java developer...

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.

Jemerov-Kotlin-HI

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/.

Screen Shot 2019-12-15 at 5 01 35 PM

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.

Screen Shot 2019-12-15 at 11 10 06 AM

If I want to learn from inside the IDE...

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.

Screen Shot 2019-12-15 at 11 11 25 AM

If I'm a professor or a library author

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.

How to contact you?

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!

Latest comments (9)

Collapse
 
josealonso profile image
José Ramón (JR)

I would add Functional Programming in Kotlin, although it's not for beginners.

Collapse
 
jmfayard profile image
Jean-Michel 🕵🏻‍♂️ Fayard

Link ?

Collapse
 
josealonso profile image
José Ramón (JR)
Collapse
 
andevr profile image
drew

Thank you for the great article. I've been looking for resources to learn from, so this is great. I just picked up the book Kotlin Programming: the Big Nerd Ranch Guide Jetbrains recommended on their site, but the project based stuff sounds fun.

Collapse
 
fallenstedt profile image
Alex Fallenstedt

I just started learning kotlin for a new job. Thank you for this!

Collapse
 
jmfayard profile image
Jean-Michel 🕵🏻‍♂️ Fayard

I'm glad I could help @fallenstedt !
If you have feedback on what you find most useful, don't hesitate to write it down here!

Collapse
 
corentinleffy profile image
Corentin Leffy

Thanks for your nice article, Jean-Michel !

I discovered Exercism.io. This website aims to provide opportunity for people of all backgrounds by helping them develop their programming skills through practice and mentorship. This is 100% free, open source and relies on the contributions of thousands of volunteers. Actually, the Kotlin community is totally awesome ! I learned a lot from theirs mentors !

Collapse
 
jmfayard profile image
Jean-Michel 🕵🏻‍♂️ Fayard

Thanks for the nice words Corentin!
I didn't know about Exercism but I always tell people to find mentors first, because you learn much faster when you have someone showing you all the dumb mistakes where you can be stuck. So that's good if they provide this!

Collapse
 
thorstenhirsch profile image
Thorsten Hirsch

Kotlin is also used to create Corda, which is a DLT/blockchain framework (to be more precise: it's not really a blockchain, but it has smart contracts). You might not have heard about it, yet, because it doesn't have a built-in cryptocurrency and focuses on B2B applications and business platforms. There are several "CordApps" (Corda based applications) that are right about to go live in 2020, so you'll probably see rising demand for developers with expertise in Corda in the next months.