HACKER Q&A
📣 flrnd

Learning Android development and I'd like some guideance


TL;DR Recently learned React, a bit of Flutter, but instead of learning React Native, I'm learning directly native Android Development after finishing my first app on Flutter. Doing this because I'm developing some apps for myself and also publishing them for free (no ads or any crap) on android only. Should I consider React Native instead since I already know React?

Long version: I'm a 43-year-old freelance designer art director who studied to be a sysadmin (this was before dinosaurs got extinct to be fair) but ended up working in advertising.

Past five years or so, my mother got sick (brain stroke) and I had a really hard time keeping up with my freelance business whilst I had to take care of the recovery, accompany to rehabilitation, doctors reviews, or help at home because I couldn't afford to hire a full-time nurse, so I've been mostly living from savings and a few sporadic jobs.

Nevertheless, the thing about this is that while I've been taking care of all this stuff, I've had some spare time, waiting in the hospital for hours or waiting between rehab sessions, you can have an idea. I took the opportunity to dedicate this time to re-ignite my nerd-self and started a web dev path with react and typescript. Also a few months ago published my first android app done in Flutter.

I have a friend with lots of experience who asked me Why I'm not learning React Native instead since I know already React and he pointed out like that would be the "correct" path.

So with all this, am I really making a bad call going with the android route or Should I consider React Native? Maybe because I don't have plenty of years of experience there is something I'm not foreseeing?

The intention of this is to gather some insights about the topic and sane debate, not start any holy war Native vs Not native. Many thanks!


  👤 muzani Accepted Answer ✓
I'm a native Android developer.

Native Android is a good choice if you're going deep. For example, our app does things like voice call interfaces, verifying that photos are legitimate, verifying that a selfie comes from an actual human and not a photo. These are use cases for native development. Most of the use cases here are Android-only or iOS-only and creating plugins for both are a nightmare.

The downside is you have frameworks like Jetpack and MVVM+repository architectures which take years to pick up and plenty more time to maintain and update. You probably won't be able to compete with someone like me who's been in it for 9 years or so.

If you're doing a CRUD-style app, Flutter is your best bet. It's fast, it's easy, and there's enough of a learning curve to be valuable. There's substantial demand for Flutter. It was developed purely for apps, unlike RN which seems to be somewhat hacked together for it.

React Native does not seem to have much advantage over Flutter, but some companies do it because it's easy to hire when everyone uses React for everything. It's not a great career path, but if you know React, it's lower cost.

Do not touch Cordova/Ionic. I did it for a year, and I'm strongly against it.

Salary and work experience wise: Android pays the highest at the top 10% range, I'd say because certain companies need specialist things done, or optimizations for low budget/large markets like India and Indonesia. However, as a median, Android seems to pay lowest out of the three.

Median-wise, React and React Native pay the highest, but Flutter is close. So if you're looking for a job soon, it's probably these two. React (Native) will probably unlock the most job opportunities, so it's great as a skill that pays the bills.