Android and mobile development as a whole is something I'm very interested in. For example, I see the Taro Android app, and it's pretty smooth and performant while being built quickly. What can I do to get to this level?
Lastly, here's some very tactical tips:
As a junior engineer, your goal is to learn the most basic and core concepts and get stuff to work. Android is a very mature framework at this point with many different APIs and frameworks, so be careful and avoid getting sucked into the very complex and modern material. Just build stuff.
Just build Android apps!
Android is literally one of the most accessible platforms in all of software, which is one of the reasons why I love it so much. It's just $25 to publish as many apps as you want, and you get all this incredible infra from Google Play for free. After doing iOS for a while now due to Taro, I can confidently say that the Android developer ecosystem is far superior.
You can read a book here and there and do a tutorial if you want, but when it comes to Android, heavily bias towards just building. That's how I started off my Android journey - I just wanted to deploy some fun apps onto my personal Android phone, so I just downloaded Android Studio, did the developer.android "Hello World" tutorial and from there, I just started Googling everything to build my first app: Borderlands 2 Soundboard (it got ~14,500 downloads before it got taken down).
Another thing that makes Android such an accessible platform is it's one of the most StackOverflow-friendly tech stacks. Google will deprecate things, but they won't rip it out and they go to great lengths to make sure old code doesn't break - If you find an Android Java code sample from 2011, it probably still works!
I talk in-depth about my experience publishing ~30 apps for fun with 3 million+ users combined here:
For folks looking for more structured resources, I recommend these excellent tutorials:
From the above tutorials, I don't think any more are needed - Doing more than these will put you in tutorial hell. They give you 80%+ of the core concepts; now it's up to you to play around with them and sharpen your understanding.
After the more curated learning, fill in your knowledge gaps with the following:
As a mobile engineer, I share a similar story to Alex's. I wanted to build something, and even today, Android boasts a superior ecosystem, making app publishing more affordable. I did spend a lot of time on learning unnecessary things, and if asked to start my software engineering (Android) career again, here is how I would approach it:
That's the quickest way to learn Android engineering. Hope this helps!
>Avoid navigation graphs - I simply don't get this abstraction and the value it adds. I have seen countless junior Android engineers try it and get completely lost, even failing interviews because of it.
What would be the ideal navigation design in your opinion if not navigation graphs? Can you please share your reasoning behind it?
I just boot up screen changes the old-fashioned way: With an intent. If I'm not starting a new activity, I'm swapping in a new fragment.
You don't need a formal graph to conceptualize how everything goes, especially if you're new and making apps with only a few screens. Just do things the base way to move faster and understand core concepts.
It's always better to start off with the vanilla kit and then introduce abstractions over time. This way you'll get why the abstractions exist and what value they add. For example, I started off Android networking with AsyncTask, which is absolute garbage (and the running joke of r/mAndroidDev). After doing things with AsyncTask, I learned about Retrofit and was able to fully appreciate its value because AsyncTask is so bad. I talk about this entire learning process in-depth here: https://www.jointaro.com/course/level-up-your-code-quality-as-a-software-engineer/embrace-the-pain/