29

How can I get really good at Android?

Profile picture
Software Engineering Intern at Uber2 years ago

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?

1.7K
6

Discussion

(6 comments)
  • 32
    Profile picture
    Tech Lead @ Robinhood, Meta, Course Hero
    2 years ago

    Lastly, here's some very tactical tips:

    • Do native development - You don't get iOS "for free" from cross-platform frameworks like React Native and Flutter. While the 2 mobile platforms are very similar in a lot of ways, there's also many deep OS-specific concepts for each of them. If you're just starting out, you have it hard enough as is: Just focus on organic Android on its own. I talk about this decision in depth here: Android (Kotlin) vs. React Native
    • Use Kotlin instead of Java - It's much more concise and the industry is overwhelmingly shifting towards it. You should only use Java if you're the fastest Java programmer in the world or something.
    • You don't need ConstraintLayout all the time - From my experience, it's very hard to read and understand for beginners. It's also very verbose, requiring a lot of code to do simple layouts. Don't be afraid to use LinearLayout, FrameLayout, and even RelativeLayout.
      • Side note: Jetpack Compose is cool, but I recommend against it as it's not 100% stable yet (as of 2023) and the online resource suite behind it isn't as well-defined compared to XML. It will be harder for beginners especially to debug when things go wrong.
    • Don't respect every deprecation warning - Android is notorious for taking perfectly fine APIs and making them worse. Just because Android Studio says that something is deprecated doesn't meant that you should automatically upgrade to whatever it is suggesting. Evaluate the code yourself to see if it's truly better.
    • 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.
    • Don't be afraid to use Activities - View controllers in Android are split up across Activities and Fragments. The ideal architecture is single Activity with a bunch of fragments, but as a junior Android engineer, you don't need the ideal codebase. The problem is that Fragments are a mess and hard to use/debug. Use Fragments when you have to with APIs like ViewPager, but don't feel pressured to use a Fragment for everything.

    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.

  • 27
    Profile picture
    Tech Lead @ Robinhood, Meta, Course Hero
    2 years ago

    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:

  • 23
    Profile picture
    Tech Lead @ Robinhood, Meta, Course Hero
    2 years ago

    For folks looking for more structured resources, I recommend these excellent tutorials:

    • Building A Tip Calculator - This is a really great first app to build. This will make you familiar with very core Android concepts like building out the UI, reading inputs from it, and updating the layout accordingly. Honestly, building off of this knowledge is enough to build a nice utility app that gets 10,000+ users - Most of my early successful side projects were like this.
    • Creating A Yelp Clone - After doing the tip calculator, this is a good way to level up by learning more complex Android fundamentals that will almost certainly by used if you get hired as an Android engineer. They will also be useful helping you craft more complex side projects. These fundamentals include networking and more complex UI like loading an image from a URL.

    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:

  • 2
    Profile picture
    Mid-Level Software Engineer at Walmart
    8 months ago

    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:

    • Learn thoroughly about Object-Oriented Programming (OOP) in Java/Kotlin, along with basic data structures.
    • Download Android Studio and understand the IDE, including its shortcuts (it will save you a lot of time).
    • Try to pick the first step of your idea and learn while you build. Try to pull a string of your problem, solve it which eventually leads to several other strings. You keep solving them until you reach your goal of building a fully working Android app.
    • Publish the app and add it to your profile.

    That's the quickest way to learn Android engineering. Hope this helps!

  • 0
    Profile picture
    Thoughtful Tarodactyl
    Taro Community
    a month ago

    >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?

    • 0
      Profile picture
      Tech Lead @ Robinhood, Meta, Course Hero
      a month ago

      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/

Uber is an American mobility as a service provider, allowing users to book a car and driver to transport them in a way similar to a taxi. It is based in San Francisco with operations in approximately 72 countries and 10,500 cities in 2021. Its services include ride-hailing, food delivery (Uber Eats and Postmates), package delivery, couriers, freight transportation,[2] electric bicycle and motorized scooter rental.
Uber17 questions