First Native can mean a lot of things in Android Land. For instance you mention Xamarin and React Native. Both of those are generating actual native binaries (googles byte code version of Java byte code) or rather React Native for android will when it's actually a thing, it's not released yet but should be somewhat soon. They are both a way of writing Native code in another language (C#, Js) rather like Scalriod let's you write a native Android App in Scala. The are a fundamentally different approach than Ionic or PhoneGap which are HTML5/JS/CSS based webapps that are packaged to be app-like. Also in android development Native is sometimes used to refer to C++ ndk development. Go is also being used sometimes (go 1.5 needed to support it) for native (meaning cpu native binary instead of byte code) code.
If you plan on being a Mobile developer as your day job than I say absolutely. If I'm hiring a dedicated Android dev, I'd expect that they are an expert in Android Java. Bonus points for knowing C++ ndk or Go ndk development because then I'm not really restricted as to what I could ask them to do on the platform. Some things like converting video in real time or intense calculations will absolutely require ndk level of performance.
If your app is mostly using a rest api or collecting form data, then ndk is way overkill. Rather it's a native experience depends on your goal. If you want the latest in Android API's or features or you want the smoothest most native feeling app, then Java is really the only choice. If you are more concerned about sharing code with and iOS project then Xamarin or soon React Native are the best choices. Lastly if all you really care about is having an "app" for a SaaS or other webapp then PhoneGap or Ionic would be a valid choice. For me I'd never use them but I'd rather have a great app or no app at all. I would consider Xamarin or React Native though, I think the user experience is close enough to a standard sdk app on both platforms that if you aren't a mobile game or mobile app based startup that it is probably good enough. Games are exception in that, there are a ton of cross platform options that are awesome. Unreal, Unity, Cocos, even phonegap or ionic packaging up a html5 game engine like phaser are all very good choices.
Maybe we will have some day a cross platform toolkit without any serious downside, but right now native is still the way to go.
If you are building a small app with limited resources, something like Xamarin might be a good compromise.
However if your just building apps to display a few pictures, articles and minor social aspects probably not.
In my opinion it would be good to know native Android development instead of being at the mercy of frameworks. There will be a time when you meet some limitation but have no choice but to accept it or start writing native good which will delay your app significantly. At least with native Android you have more control.
Another point is that, with any 3rd party framework, you might eventually come across some limitation that will make you regret your decision of not going native from the beginning.
Just like a HN post one of these days about desktop apps still being relevant despite web apps
Interesting. Do you have a link to that post?Thanks
By the way, it would be great if HN had some sort of notification for when you get replies.