The Most Helpful Resources From My First Year in Android
Learning Android development in 2021? Start building your new Android skill set here & save yourself a few errant Google searches
November 30, 2020
It’s that time of year where thoughts turn to new years resolutions. Where do you want your career to go in 2021? What new project are you looking to work on on the side? What new skills do you want to look into? If you’re intrigued by the idea of learning Android development or using Kotlin, then you’ve come to the right place! While there are a plethora of online resources and articles available for Android development, it can be difficult for new learners to figure out which ones will help them the most. Since starting my professional career at Capital One, I've gotten the wonderful opportunity to work on one of our mobile teams as an Android developer. This team fully committed to using Kotlin as their primary programming language and had been building commercial products in Kotlin for a few years now. Prior to Capital One, I had very limited exposure to Android and the Kotlin programming language, so there were a ton of things I had to learn along the way as I delved into the world of mobile development. I’ve collected some of my favorite blog posts, articles and resources and am sharing them with people who are interested in learning more about Kotlin and Android development in 2021!
I still find myself coming back to these resources every once in a while to reaffirm the things I learned, and pick up new nuggets of information along the way. If you want to learn more about Android development and Kotlin online, I’ll save you a few Google searches and recommend a few places to start! If you are interested in using Java to do Android development, I’ve included a few resources that use Java rather than Kotlin, but this article is biased towards Kotlin. Even if you’re going to use Java to write your Android apps, keep reading to learn about what Kotlin offers as a programming language and maybe I can convince you to try it out!
Learning the Basics of Android Development
Everyone has to start somewhere! If you’ve just downloaded Android Studio and are looking to get started on your first Android project here are a few places that I used to get the basics down. These resources are completely free are packed with great information:
- Android Kotlin Fundamentals - In my opinion, an experienced programmer looking to dive deep into Android very quickly should start here. Not only are you introduced to the fundamentals of Android development, but you’re also introduced to all the modern Google libraries and tools as well. The course material is broken down into easily consumable modules, which makes it really easy to pick up and learn! There are also new codelabs that cover Android Compose, the new UI toolkit for Android that is quickly approaching a stable release and will be adapted very soon.
- Android Basics on Udacity - If you’re on the newer side of programming, or just like going at a slower and more deliberate pace, consider this course! Note that this course is in Java whereas most of the other resources will be in Kotlin.
- Capital One Software Engineering Summit Android Workshop - I helped my coworker Nick Capurso run his Android workshop for the Capital One Software Engineering Summit, and it's a great, simple hands-on introduction to Android! The instructions for the hands-on workshop are fully detailed in the Github repo and a great way to try out Android. This project is also in Java.
Learning to Write Kotlin
Kotlin is an awesome programming language with tons of interesting features and advantages. While Kotlin has been used primarily for Android development, people are starting to use Kotlin outside of Android as well! These articles highlight some of Kotlin’s interesting nuances. Also, the official Kotlin documentation is very well-written and covers all the important topics needed to get you started.
- Koans - Kotlin Koans a simple way to start getting familiar with Kotlin syntax and language features! Koans are interactive exercises and allow you to practice writing Kotlin directly in the browser.
- Using let, apply, run, and with - Kotlin’s support of high-order functions introduces a few great Kotlin library functions that let you write cleaner code. It’s one of those features in Kotlin that you start to miss when you go back to programming in a different language.
- Safe calls vs null checks - Null safety is a primary feature of Kotlin. With some practice and the right tools, Kotlin lets you write null-safe code quite easily.
- Higher-order functions - When I was first reading Kotlin code, I found the usage of higher-order functions and lambda expressions difficult to parse and understand. But they’re incredibly useful and worth learning! It definitely takes some practice, but taking advantage of higher-order functions in Kotlin can help you write code that is robust but still concise.
Learning Asynchronous Programming in Kotlin
To me, Kotlin’s most interesting features revolve around structured concurrency. There are some amazing resources available that explain coroutines, channels, and Flow in a way that is easily consumable. Managing concurrency will save you tons of headaches down the road, and structured concurrency adds a layer of abstraction to your code that will make it easier to manage.
- Diving Into Coroutines and Channels - This might be my favorite article in this list, it does a great job introducing the basics of coroutines and channels using a coffee shop example.
- Kotlin Concurrency with Actors - A great introduction to actors and how they can be used to support concurrency.
- No Drama Concurrency with Kotlin Actors - Also a great introduction to actors that covers similar material to the last article (written by Sam Edwards, who also is a part of the Capital One mobile team) . It also includes a video presentation as well!
- Asynchronous Data Streams with Kotlin Flow Presented by one of the Kotlin tech leads at KotlinConf 2019, this video does a great job explaining how Flow improves the previous methods of sending data.
Android Architecture Patterns
Architecture patterns make app development easier by providing consistent patterns designed to solve common problems in development. When I was first learning Android, I found some common architectural patterns for mobile to be a little difficult to wrap my head around, especially as someone who was still getting used to reactive programming. A few of these articles help make sense of these, with practical examples!
- MVWTF: Demystifying Architecture Patterns - This article provides a quick overview of multiple modern Android frameworks, showing the advantages and disadvantages of of each one
- Android MVI: Getting Started - A thorough explanation of the MVI architecture pattern that is very easily consumable
- MVI with Coroutine and Flow - A simple explanation of how we can use what we learned about coroutines and Flow within the MVI architecture.
Other Resources That Are Helpful and Worth Reading
There is so much more to Android development than the things I mentioned above. These articles don’t quite fit any of the categories above, but I found them to be valuable and worth reading!
- Android Accessibility Tutorial - Developing for accessibility was something I wasn't exposed to very much during my studies, but I’ve really grown to appreciate the effort some development teams put into making sure their apps can be used by everyone. Accessibility is incredibly important and shouldn’t be ignored by anyone learning Android for the first time.
- Wrapping Mock Objects - If there’s anything I learned in my first year in the industry, it’s that writing effective tests takes time, effort, and can be a huge undertaking. However, subtle changes to our approach can make tests much easier to write and manage.
- Replacing Mocks - Writing great tests is truly an art form, and there’s multiple ways to do it. This article offers an alternative solution to organizing mocks by eliminating them all together.
- Android Networking with Kotlin - A long, in-depth look at effective networking in Kotlin using the Retrofit library.
- Follow the DC/Nova Dev Community - If you are based in Washington DC or Northern Virginia, consider following the Dev Community! The Dev Community is made up of a family of tech Meetup groups that span a wide variety of areas in tech, including Android and other topics related to mobile development. They provide great opportunities to learn something new and to network with other great engineers in the area!
Putting it All Together
To the new developers looking to make the leap into Android development, there’s nothing to be intimidated by! The Android and Kotlin communities are strong and proactive, and there are so many active contributors who can help you learn and grow in this space. Happy learning and a happy 2021!