Native Android as your first development platform
Selecting their first programming language for new developers is always a fuss.
Usually, developers go after the language they prefer and their choice is mostly influenced by the newest trends.
Which is the coolest language ever?
Well, you have to answer that by yourself.
For those out there who like to start off with Android Native development here are a few tips to boost your learning curve.
Step one: Java
If you have no experience in development or your knowledge over Statically Typed Languages is vague, Java is probably the best starting point.
Android native apps are built in Java. Actually, this is not true since Google announced (at Google I/O 2017) Kotlin to as another first-class language for writing Android apps and there is also support for writing C and C++ code in Android apps.
But Java is definitely the way to start your development. It's a great language to chose as a first language and the first milestone into proficient Android development.
Step two: XML
If you are past Java or you have enough knowledge in development to skip the fist step your next milestone is XML.
For those who have any web development experience or know basic HTML, this shouldn't be a big problem.
XML is important for building layouts and declaring UI elements. Anyway, learning XML is not a great obstacle.
You can always learn it as you go and the more apps develop more efficient you will get.
Step three: Dedication
Building your first app requires a lot of dedication and hard working. To be honest developing in Android is a bit time-consuming, but anyway, this is my personal opinion.
Step Four: Android building blocks
It's always a good thing to know all the twists and turns of a development platform and Android is no different.
Start getting used to the concepts like Activity, View, Intent, Fragment, AndroidManifest, AndroidManifest, Broadcast Receiver, Content Provider, Material Design, Android Virtual Device (AVD), etc.
Step Five: Android lifecycle
Once you have a good knowledge of the components of the platform get to know the lifecycle of things.
Everything in Android evolves around lifecycles.
Get to know the Activity's lifecycle, Fragment's lifecycle, Service's lifecycle, etc. This will make your life easier as you go.
Step Six: Asynchronicity
There are a few things that need to be handled asynchronously in Android, among which networking is the most important. So take a look at AsyncTasks, Services, background Threads.
Step Seven: Listing elements
There are a few ways to display lists or grids of elements, but the best one is RecyclerView. It's important to keep your app performance even in low-end devices and RecyclerView is built with resource management in mind. So take your time learning all the twists and turns of the RecyclerView, its adapters, view holders, etc.
Step Eright: Networking
Networking is the core thing of most apps, so it takes a lot of care and hard work to manage all the network calls and responses. However no one does networking in the old standard way, there are many libraries that can do your job perfectly. Take a look at OkHttp, Retrofit or Volley.
Step Nine: Material Design
Android apps UI is built using Material Design. So take your time learning all the small details to make your apps awesome.
Step Ten: Get used to a lot of problems
In every stage of knowledge you are, eventually, you will end up with bugs and problems you can't fix. But don't worry, turn to Stack Overflow, there are probably a lot of developers with the same problem or you can ask your questions.
I hope this ten steps into Android help give a proper insight on what to expect on your development path in this platform. Of course, there are a lot of other stuff that are as important as the ones presented here, but this, I think is a good starting point.