Learning Android development with Kotlin (for iOS developers).

April 26, 20197 min read#android, #kotlin

TL;DR:

What is all about?

  • I’m learning Android development with Kotlin.
  • I’m sharing my learning method and resources.
  • This method is suitable for those who already have some basic programming knowledge, and want to learn Android development in a fast and furious way :)
  • You will not master Android & Kotlin with this method, but you’ll learn enough so that you can feel comfortable to create a MVP version of your apps, promise! 😋

Github repositories:


🚀 A “fast and furious” learning method

It is COVID-19 time, and many of us have to stay home.

As a positive thinking person, I’d rather take the chance to use my time as useful as possible. I am learning Android development with Kotlin.

As a self-taught developer in my whole career, I have developed a learning method to learn new technologies and I want to share this method with you.

This method is summarized like following:

  • Focus on the first 20-40 learning hours when exploring new technology.
  • Always learning by doing. Bring your ideas and implement them, start from simple, and go slowly to more advanced ideas.
  • Do small steps, don’t try to implement something too complex early.
  • Google- and StackOverflow-driven, you want to see something running first before trying to understand how it works. This keeps you motivated.
  • Don’t optimize and don’t go deep into architecture too early. You want to understand how the new technology works first before optimizing your implementations.
  • Finally, always release something to the public at the end of your learning process. This is probably your main motivation why you want to learn a new technology: you want to build products that you can distribute to others, right?

This method has helped me a lot to grasp the basic concepts of any new programming languages or libraries I want to learn. After this learning process, I understand, in this case, Android development and Kotlin good enough so that I can create my apps running on my Android devices. This knowledge also becomes the foundation so that I feel comfortable to go deeper into the Android platform as well as the Kotlin language and master additional skills to create great Android apps using Kotlin in the future.

The main idea of this method is to focus on the first hours of the learning process to get something working and to get enough basic knowledge of the new learning topic. Afterward, you can start self-correcting and self-learning based on that foundation.

I’d recommend you spend 20 minutes to see this TED Talk. It reflects more or less what I said above in a general context.

❓ Why would an iOS developer like me learn Android and Kotlin?

  • I have been using Android continuously for many years, either as a primary or secondary device.
  • I have always wanted to learn Kotlin since I have heard that it is very similar to Swift.
  • I don’t currently have a MacBook. It is not possible to do anything iOS-related currently.
  • I’m going to move away from my family for some times. I have an idea of an app of my 3 years old son that I can send him a short video every day. One of the most important requirements that I need is that I can start the app in kiosk mode programmatically so that my son can’t switch to any other apps (you know, Youtube :)). This can not be done in iOS because of platform restrictions. That’s one of the main reasons why I’m learning Android now.

📖 How do I learn?

First and foremost, I am not a fan of programming textbooks because of many reasons:

  • Reading source codes without the context of the whole project ist very hard to understand.
  • I don’t need a step by step tutorial either because I already have the foundation of how to create apps for iOS and know the process of app development.
  • Textbooks try to teach you a lot of things at once. It is not how a software engineer works. Normally you will learn the basics of the language or platform you are interested in. Afterward, you will either use Google/Stack overflow or the official documentations to search for the specific solutions for your problem.

As a self-learning enthusiast, I’d prefer to learn the basic knowledge by reading some basic blog posts or tutorials, and then get my hands dirty by implementing some simple apps to apply the knowledge that I have learned. It is also extremely helpful if you can ask someone who already has extensive experience with Android and Kotlin. I’ve asked a former colleague about the best practice and useful 3rd party libraries when I start implementing the MVVM architecture.

📗 14-days courses:

I am sharing my learning resources on Github. Feedbacks and contributions are welcome:

I divide the topics into 2 levels: basic and advanced. Each day, I try to implement a simple app to try out different topics. Each level needs 14 days to finish (it’s Covid-19 time, so the period of 14 days was chosen with an intention that people can learn something during their quarantine time).

One important topic in app development is Architecture. There are different architectures to structure an app project, each of them is suitable for different kinds of projects. Since Google endorses MVVM Architecture explicitly with its Jetpack Architecture Component, I have separated this topic into a different course.

You will learn mostly by reading the source code. This is probably also what you do in your day to day work as a software developer, right?

The code will be documented as much as possible so that you don’t have to jump around between different hops to find out what the APIs are doing (you can surely still use context documentation feature of Android Studio to go directly to Java docs of the platform APIs). High-level discussions will be written in README.md of each project.

🔞 Disclaimer:

These courses are probably not for everyone. It is my attempt to share my learning method and resources. If you find it useful, follow it. If you find it bull****, keep on learning with whatever method that suits you.


Profile picture

Personal blog by An Tran. I'm focusing on creating useful mobile apps.
#Swift #Mobile #MachineLearning #Minimalist

© An Tran - 2021