¿Merece la pena usar Xamarin?

¿Merece la pena usar Xamarin?

Mi respuesta corta es que sí, sin duda.

Mi reflexión mas larga viene con el target que creo que tiene Xamarin, enterprise apps. Apps para empresas en las que el móvil es una parte mas de su negocio, una parte siempre importante ahora pero no la única.

Esto viene de algunos de los pros y contras de Xamarin, aquí solo indico los que son de aplicación para el post.

Pros:

  • Reutilización de código
  • Mismas herramientas para todas las plataformas

Cons:

  • Menos librerías de terceros para utilizar
  • Mayor complejidad, a los bugs y novedades de cada plataforma tienes que añadirle los de Xamarin
  • Menos desarrolladores

Una de las principales ventajas de Xamarin es la reutilización de código, tienes por ejemplo una capa de lógica de negocio que podrás usar en la versión para iOS y Android. Hay opiniones que dicen que es un avance pero no suficiente, porque el backend de las apps vive en la nube a través de api's y que la mayoría del código de una app es propia de la plataforma para manejar la UI.
Y ahí es donde digo que tú debes evaluar el target de tu app. Si la mayoría de tu código está en la plataforma porque tienes increíbles transiciones y animaciones, y no tienes que preocuparte de nada más, Xamarin no es tu opción porque efectivamente no te aporta nada.

Pero lo normal en una app es que tenga una buena UI, pero también hay que preocuparse de muchos mas factores y que son comunes en todas las apps: hay que manejar las llamadas a las api's, hay que cachear datos, hay que validar las entradas del usuario, gestionar modos offline/online etc etc. Y eso es mucho código, código que hay que después mantener y testar.

Y ahí si que Xamarin tiene mucho que decir. Tienes ya librerías que te abstraen del manejo de la red para ambas plataformas, lo mismo para el cacheado o manejo de almacenamiento en local.

En linea con lo anterior creo que Xamarin es ideal para empresas con equipos pequeños que quieren manejar ambas plataformas. Puedes tener programadores que gestionen ambos desarrollos (con toda la productividad que supone), mientras que para la mayoría de empresas tener un equipo por plataforma es inviable.
Creo que es muy difícil encontrar programadores excelentes que puedan trabajar tanto en iOS & Android, pero en cambio con Xamarin si es mas sencillo que un solo programador sea bueno, quizás no excelente, en ambas plataformas. Yo conozco a mas de uno en ese caso.

Lo que si es importante conocer es que c# y .Net es una parte ínfima en lo que necesitas saber para ser programador de apps móviles. Es totalmente imprescindible aprender las api's de Android & iOS y esto es lo que lleva mas tiempo y energía. Repito, totalmente imprescindible.