DEV Community

Nitya Narasimhan, Ph.D
Nitya Narasimhan, Ph.D

Posted on • Updated on

Kotlin: Learning Resources For Beginners

Last Updated: Aug 4, 2020
I made a resolution to kick off #30days of learning on Aug 1, 2020. I focused on a new programming language:Kotlin! Here's a quick intro.

Want to kickstart your own Kotlin journey?
Three things you can do:

  • 🔖 Bookmark (👈🏽) this page | Be notified of updates!
  • ✅ Follow #kotlinfyi and #kotlin tags | Find relevant people!
  • 📚 Read my Kotlin FYI series | Start your #30Days Journey

About This Article

In Jun 2018, I was into my learning journey into Flutter when I created the following post to help share my learnings and connect with other enthusiasts:

Two years later, I still hear from folks who find it valuable. So as I start this journey, I hope this post does the same for Kotlin!

Bookmark this post to get updates as I add new resources! And drop me a comment if you have recommendations or insights!


What is Kotlin?

According to the Kotlin website, it is an open-source modern programming language that can be used for mobile cross-platform apps, server-side development, web development, data science and native experiences! For the latter, current support includes Windows, Linux, MacOS, Android, iOS, WebAssembly and more.

As of 2019, it is also Google's preferred language for Android development just 2 years after first being officially supported - a remarkable journey!

Over the next #30Days I'll start unpacking the buzzwords and diving into the why and how of software development with Kotlin in a series of posts covering concepts and code.

Follow the kotlinfyi tag for my article updates, or post your own!


Why explore Kotlin?

There are many reasons to do this and it helps to have the right goals and motivation. Here are mine:

It's a popular language, and likely to be in demand.

Kotlin has been the fastest growing language in the past two years with 2M+ devs, and growing.

The TIOBE Index has it at #27 in July 2020 (a small move up the rankings) while the 2019 Octoverse report listed it at #4 in the fastest-growing languages that year. Even the IEEE Computer Society Trends Section ranked Kotlin at #2 in popularity, only second to Python. And in the recent 2020 StackOverflow Survey (of 65K devs), it ranked #4 in the most-loved languages category. In summary, it can't hurt to learn it - and it might even help!

It's the preferred language for Android development

Despite COVID challenges, data shows that Android still dominates the global smartphone market. With Kotlin being the preferred language for Android app development, it's likely the better bet for mobile devs.

Added incentive? The Microsoft Surface Duo is a unique foldable Android device and I can't wait to start playing with the dual-screen SDK and samples

I want to learn in public and reclaim the term 'beginner'

I recently wrote this post on why I felt we needed to reclaim the term beginner and make it something that empowers people instead of undermining their confidence and contribution.

With this journey, I want to walk the talk and learn in public, sharing my successes and failures in a way that destigmatizes the learner journey and revels in the joy of creating value, gaining and sharing knowledge.


Where do I start?

That is exactly what this post is for. Bookmark it to be notified of updates. Over the next #30Days I will be adding resources to it daily as I start navigating, learning and sharing my own journey through the Kotlin universe!

Join me!


Documentation (❶ start here)

  1. Kotlinlang.org - official docs for the language!
  2. Develop Android Apps With Kotlin - Kotlin for Android dev.

Courses & Codelabs (❷ skill up)

  1. Google Android Codelabs
  2. Kotlin Bootcamp for Programmers - Udacity, 2020
  3. Developing Android Apps With Kotlin - Udacity, 2020
  4. Advanced Apps in Kotlin - Udacity, 2020

Books, Podcasts & Streams (❸ read, listen & learn)

  1. Talking Kotlin 🎙
  2. Fragmented: Learning Kotlin 🎙
  3. [Kotlin Cookbook] 📚(https://www.oreilly.com/library/view/kotlin-cookbook/9781492046660/) by Ken Kousen. With code repo!

People (❹ connect & grow)

Scan the Google Developer Experts Directory to find global practioners!
Follow the #kotlin tag to find others in this community!

  1. Huyen Tue Dao| @queencodemonkey ➡️ see her talks
  2. Annyce Davis | @brwngrldev ➡ take her courses!
    1. Hadi Hariri | @hhariri ➡ Developer Advocacy Lead (JetBrains), Hosts Talking Kotlin (Podcast)

Top comments (3)

Collapse
 
shaijut profile image
Shaiju T

I think a website or PWA is better than a native app. Because how many apps I have to install for different needs, it will slowly drain battery and life of mobile. So better a chrome browser app and visit any website and get the task done.

Collapse
 
nitya profile image
Nitya Narasimhan, Ph.D • Edited

Hey @shaijut -

I am a huge fan of PWA myself (ran PWACamp in 2017 and did some talks on PWA development and performance auditing. And as a consultant, I used to advocate for PWA first (over native mobile) for smaller businesses who had strict budgets and small (or non-existent) dev teams to maintain software. So I hear you on this.

That said, I want to stress two separate things:

  1. The purpose of this page is to provide a permanent and evolving document listing relevant resources for someone who wants to learn Kotlin. Like Javascript, Java and Python, this is a programming language that can be put to use in different domains (i.e., it is more than just mobile or native) so the focus is on seeing this as a language first. So regardless of what your preferred language or framework for app development is, I hope learning Kotlin gives you one more tool in your toolbelt for a future day when it might come in handy.

2.
The purpose of learning in public is to engage in exactly this kind of discussion so I am super glad you posted a comment! Your perspective on making sure apps "don't drain battery on mobile" is worthwhile. And in fact, it is equally a concern for mobile web apps (or any app on mobile) that targets emerging markets as I found out in a discussion I moderated recently.

I think every app development decision presents a new set of tradeoffs and we might need to make a decision based on the current context. So saying "PWA is better than native app" should be qualified by adding "because I want to build an app that does X, Y, Z and PWA has richer development support or lower costs or better user experience in that context. I wouldn't want someone new to mobile or web to make a blanket decision that one was better than the other.

The reason is - we don't always control all the parameters for the decision.

I might have to do native apps because I am being paid to do them. Or because I want to increase user awareness and access to my app on the Play Store (the challenge to discovering PWA to install them is still real). Or because native mobile devices provide some new custom hardware or feature that has not yet made it into the web platform interface (note that almost all the hardware APIs I worked with including camera, location, video, audio etc. invariably were supported in native frameworks first before the web browser platform was able to standardize and adopt relevant hooks).

I hope that helps. And I hope you keep posting comments and asking questions and sharing insights because this is really helpful not just to me, but to every other person who comes here to learn about this new learning path :-)

Collapse
 
shaijut profile image
Shaiju T

Nice 😄, Thanks for detailed explanation. Appreciate. It's good to learn new programming language.

In college days I choose Java for internship project because it has Job openings. But then I got Job as C#.NET developer.

Since then I sticked to C#.NET world, but recenlty that changed and now I am planning to learn languages like Go , Python , Ruby.

Curious to know how many programming language you have learned as a polyglot ? Did you get any benefit out of it ? Have you used it any projects or just learned ?