Taro Logo
21

Android (Kotlin) vs. React Native

Profile picture
Data Engineer at Financial Company10 months ago

I've read enough answers on this platform to know that Alex and Rahul are huge fans of learning Android, both because it's a well-established area of tech (bigger than web) and because you can see how well your apps do. They always mention learning Android, but from my limited understanding, React Native gets you iOS and web as well, and is similar to regular web-dev (could totally be off here).

Isn't it more bang-for-your-buck to learn React Native and perhaps a better use of time?

885
2

Discussion

(2 comments)
  • 24
    Profile picture
    Tech Lead @ Robinhood, Meta, Course Hero
    10 months ago

    It really depends on what your goals are: Both approaches have a lot of value.

    The Case For Native Mobile (Kotlin/Swift)

    • You want to work for Big Tech and FAANG-level companies that care a lot about scalability and maximizing performance (e.g. Robinhood was always purely native for iOS/Android as the founders deeply care about quality and craft).
      • Side note: We immediately rejected an Android candidate who did React Native/Flutter as the cross-platform style doesn't really transfer to native.
    • There's far more resources online to help you learn since the native ecosystems are heavily pushed by the FAANG titans behind them (Google for Android and Apple for iOS).
    • You don't have to fight the developer ecosystem as much (generating binaries, publishing apps, etc) since you're following Google's/Apple's core intended path.

    The Case For React Native

    • You want to work for tiny startups that usually don't have the resources to hire 2 separate native mobile engineers.
    • You are already good in JavaScript or want to become good at it. JavaScript is arguably the most versatile programming language as it has massive mainstream frameworks for both back-end (Node.js) and front-end (React and React Native).
    • You want to ship a side project (or your own startup) across all surfaces.
      • Side note: I don't think React Native's web port is very good as I see very few companies using it.

    ...Alex and Rahul are huge fans of learning Android, both because it's a well-established area of tech (bigger than web)...

    Web is much bigger than mobile as it's more established and was the first front-end platform. Mobile is just hotter due to being more modern and the paradigm shift towards it, but I'm confident there are more web developer positions than mobile ones when you account for all companies, not just trendy ones where many are mobile-first startups.

    All this being said, there's far more to an app than just the code - You need to maintain each product and slog through their release cycle as well. Let's ignore web and just consider the fact that React Native also gives you iOS "for free" on top of Android. It's very much not free as now you have to:

    • Pay Apple $99/year to publish your app and maintain it
    • Get a high-end Macbook as Xcode only runs on Mac and takes a billion GB of space and RAM on your computer. You still need Xcode to generate the binary and upload it to the App Store (this iOS process is very much a closed protocol that Apple wants to maintain complete control over)
    • Constantly context switch between helping Android users and iOS users as they report bugs and feedback, ideally getting some test devices for both
      • Side note: The iOS simulator is great but weirdly quite limited with some things it can't test - I highly recommend buying a physical iPhone if you're doing iOS development and don't have one.
    • Every time you write code, you need to QA it twice as it's naive to assume that it will automatically work on both platforms. Each OS and device type has its own annoying quirks where some stuff randomly breaks
  • 22
    Profile picture
    Tech Lead @ Robinhood, Meta, Course Hero
    10 months ago

    My Advice For Aspiring Mobile Developers

    In 90% of cases, I recommend the following path: Do native development in the platform you use personally.

    You're an iPhone person? Download Xcode, learn Swift, and publish iOS apps.

    You're an Android person? Download Android Studio, learn Kotlin, and publish Android apps.

    Passion is such an important factor in side project success as the #1 cause of death for side projects is not finishing them or iterating on them enough due to lack of energy and motivation. When you build apps that you yourself can use, play around with, and share, your excitement level is naturally 10x higher.

    The reason I was able to get into Android development back in college 10 years ago (and eventually turn it into a massively successful career) is because I had so much fun and fulfillment just deploying my janky Android apps to my Samsung S3 and being able to see them work (or break hilariously). My roommates were also Android users, so I could share the apps with them as well - It was good times.

    And of course, 80% of software engineers want to break into Big Tech someday and native development is 100x better for that. Even though Meta literally invented React Native, 90%+ of its mobile engineers do native development.

    If you're interested in learning Android, here's a great thread about it with links to learning resources: "How can I get really good at Android?"

    Lastly, here's the masterclasses I gave around building effective side projects: