BGAD-20_1.0: Beginner's guide to Android Development in 2020
Before we continue, I would like you to take a moment to appreciate the convoluted acronym for this series. Mmm... Ok. Moving on.
Being a regular lurker on the AndroidDev subreddit, I've noticed that developer fatigue among (junior) Android developers is a recurring topic. The mobile landscape is moving so fast, that by the time you catch up with the latest architecture/tech stack/libraries/... , the next big thing is lurking around the corner.
To provide some comfort & guidance, I've decided to write up some articles in an 'ELI5' model and hold your hand throughout the process. But in a less creepy way than the description plays out.
Concept vs Implementation
One of the things you might have noticed in the current Android landscape, is the vast array of libraries that seem to do the same thing, but differently. Currently it probably seems like a hassle or a pain as it's difficult to choose the 'correct' library, but in time I hope to show you that this differentiation is a good thing as it reveals different ways to solve a core issue.
Those core issues are what we're going to focus on here, and for every one those I'm going to make a choice based on: ease-of-use, community support & industry adoption. Here's an overview of the concepts or core issues we will tackle:
Language (Java vs Kotlin)
Dependency Injection (KOIN)
Architecture (MVVM + Android Jetpack Lifecycle ViewModel & -LiveData)
Networking + Serialization (OkHttp/Retrofit + Moshi)
Random Useful Tidbits
Write less, achieve more
Now I realize you might've recoiled reading the list above thinking:
I need to know all of that to even start?
In short, no. Pretty much any app you can think of can be made without the use of external libraries, using nothing more than what the platform offers you.
But most of the problems you will encounter during the development of that app have already been solved by other (and I like to believe "more knowledgeable") people. So why would you waste time creating a (possibly sub-optimal) solution for a problem while you can use those delicious pre-made solutions and just focus on the actual business logic of your app?
Truth is, if you're planning on becoming a professional developer you'll have to get acquainted with most of those concepts & libraries anyway. Most companies aren't too fond of spending money developing alternatives for existing solutions served on a silver platter.
Well unless you're Google and just can't seem to satisfy your urge of developing libraries for the sole purpose of deprecating them.
Alright, now let me grab you by your bootstraps and let's dive straight into BGAD20_1.1!