Bueno, yo hablo desde mi total inexperiencia en apps móviles, y un año trabajando con Xamarin.
Al principio quise aprender directamente con Android Studio (bueno, usando eclipse :P), pero en cuanto la primera y segunda lección que hice usaban lenguaje de marcas, tipo XML, abandoné.
En el trabajo usamos Xamarin, y la verdad es que lo veo bastante cómodo. Estoy acostumbrado a Java, y C# no me supone ningún problema. Es cierto que me tengo que pelear con XAML, que es otro lenguaje tipo XML, para hacer los formularios de pantalla, pero ya no me peleo tanto con él, y una vez te acostumbras a eso y al MVVM (Modelo-Vista-VistaModelo), es bastante fácil y rápido hacer programas de escritorio. Y hay addons para casi todo.
Sí, te entierras con Microsoft, pero ahora tienen esa licencia "comunity" que es gratis mientras no cobres ciertas cantidades de pasta.
No sé si es código nativo o no, pero sí te puedo decir que hay dos formas de programar: usando sólo las librerías multiplataformas, por lo que pasar de un dispositivo a otro es coser y cantar, o añadiendo código específico para cada plataforma, y así usar al 100% las posibilidades de cada máquina (hay cosas que puedes hacer en Android que en iOS o en multiplataforma no, por ejemplo, cambiar el color del control "selector" (o como se llame, que no me viene a la cabeza)... a menos que descargues la última beta, o te crees un "custom renderer").
Ya meterme en OpenGL, juegos y demás, ya no lo sé, sólo hacemos aplicaciones de formularios y comunicación con una WebApi en un servidor con SAP. Pero la última app para firmar documentos la he hecho en dos semanas, incluyendo la creación del PDF y guardarlo en SAP.
Eso sí, yo empecé usando un proyecto Demo CRM, cambiándole los colores y añadiendo algunas cosas. Contiene mucha información y varias maneras de hacer lo mismo... lo cual ayuda y te lía al mismo tiempo ^^U
Marcadores