¿Cómo puedo decirle que mi jefe trabajando con Xamarin no lo hará más rápido

Soy el único desarrollador mobile en mi trabajo. Antes de ser contratado, mi jefe actual estaba pensando en usar Xamarin, ya que su comercialización dice las palabras código compartido y nativo . Me considero un desarrollador avanzado de Android ya que he desarrollado grandes sistemas de información. En este momento estoy trabajando en aplicaciones sencillas que podría terminar en una semana, pero Xamarin me está dando dolor de cabeza ya que es demasiado cochambroso, y el código reutilizable es aproximadamente el 10% que podría copyrse / pegarse fácilmente en iOS , y a pesar del hecho de que puedes compartir ese código del 10%, a veces todavía tienes que usar las directivas de compilation #if / #endif .

Quiero decir, realmente no hay ninguna ventaja para mí, ya que ya conozco los lenguajes Java y Objective-C . Ya tengo un vasto conocimiento de SQLite y almacenamiento de datos con Core Data en iOS y Android SDK para que aprender Xamarin lo haga más lento.

Ya he intentado convencerlos para que no se decidan por Xamarin, ya que es solo un pequeño código que puede compartir, pero no parecen entenderlo.

Necesito un buen argumento para convencerlos de que no lo compren, por lo que puedo hacer mi trabajo de una manera más productiva y más rápida. Gracias de antemano.

Algunos buenos puntos del blog de Lee Whitney: Por qué no recomiendo a Xamarin para el desarrollo mobile :

Sobrecarga de la aplicación

Las aplicaciones basadas en Xamarin tienen una sobrecarga incorporada que las hace más grandes en promedio. Esto afecta el time de descarga y el almacenamiento utilizado en un dispositivo. El tamaño adicional mínimo suele ser unos pocos megabytes y puede crecer proporcionalmente, ya que el código utiliza más API. Esto se debe a la forma en que el código de los ensamblados .NET está estáticamente vinculado (como código nativo) en aplicaciones a las que se hace reference en los ensamblados. En Android también hay un retraso de inicio adicional para las aplicaciones por razones específicas del sistema operativo. Para el crédito de Xamarin, esta sobrecarga solía ser mucho mayor y la compañía ha logrado grandes avances para networkingucirla. Sin embargo, el impacto en los usuarios de la aplicación aún es mensurable.

Intercambio limitado del código UI en iOS y Android

El desarrollo de la interfaz de usuario no es portátil entre iOS y Android.
Esto significa que las API, la lógica de events, los widgets y los diseñadores deben usarse y codificarse de forma diferente para cada plataforma. Hay algunas excepciones a esto para las operaciones comunes de bajo nivel.

Xamarin argumentaría que intentar abstraer las API de interfaz de usuario en plataforms muy diferentes puede crear una complejidad innecesaria o conducir a una experiencia de usuario deficiente con un layout de LCD (denominador común más bajo). Tienen un punto aquí. Titanium intenta hacer esto parcialmente, y el resultado ha hecho que muchos desarrolladores no estén satisfechos con los resultados inconsistentes o impnetworkingecibles. Las aplicaciones HTML5 son más exitosas para eliminar esta abstracción de interfaz de usuario sin forzar un layout LCD, pero no tienen el performance nativo de Xamarin.

Los problemas de la interfaz de usuario pueden ser algunos de los aspectos que más time consumen al desarrollar aplicaciones mobilees. A pesar de tener una buena justificación, lo importante es que para muchos problemas de UI mobile, Xamarin no ahorrará time a los desarrolladores o diseñadores.

Compartición limitada del código fuera de Xamarin

Xamarin no permite la creación de componentes o modules reutilizables fuera de su propio entorno. Por ejemplo, el código escrito en Xamarin no se puede usar en aplicaciones nativas o HTML5. Esto significa que cualquier código desarrollado por un equipo que usa Xamarin no se puede compartir ni reutilizar con equipos que usen otras herramientas para iOS y Android. Cuánto importe esto depende de la situación, pero el problema con el desarrollo es que no podemos pnetworkingecir todas nuestras situaciones. Entonces, es una limitación incómoda salir de la puerta.

Ecosistema y comunidad

Esto es algo que no es realmente culpa de Xamarin. ¿Qué empresa tiene un ecosistema mobile que coincida con Apple, Google o HTML5? Sin embargo, importa. Cuando los desarrolladores tienen 10 veces más probabilidades de encontrar resultados al search en la web sobre un problema, esto afecta directamente la productividad. El ecosistema de soporte disponible, services y componentes de terceros y herramientas relacionadas es, y seguirá siendo, significativamente más pequeño que para aplicaciones nativas o basadas en HTML5.

La tercera curva de aprendizaje

Algunos conceptos y técnicas requieren un conocimiento especial específico para el entorno de Xamarin. Esto agrega efectivamente una tercera curva de aprendizaje para los desarrolladores más allá del lenguaje de progtwigción y las API nativas. Por ejemplo, los desarrolladores tienen que comprender el recuento de references de iOS para evitar problemas con la recolección de basura de Xamarin ( ¿Esto es un error en MonoTouch GC? ). Otro ejemplo son las estructuras de datos y los generics que funcionan de forms sutilmente diferentes ( http://docs.xamarin.com/guides/ios/advanced_topics/limitations ). Estos son los types de problemas que son difíciles de ver antes de adoptar una nueva plataforma, por lo que merecen consideración especial.

Más partes mobilees

Xamarin presenta su propio set de errores que afectan la calidad del producto y la productividad del desarrollador. El problema no es que Xamarin tenga un producto defectuoso, pero agregar un sistema grande o complejo a la cadena de herramientas de la aplicación viene con problemas y errores que no existen en las aplicaciones nativas.

El logging histórico de estos errores puede revisarse utilizando el rastreador de errores de Xamarin ( https://bugzilla.xamarin.com ).

Sí, todo el software tiene errores. El punto es cuando mides la ventaja de agregar nuevas herramientas; se debe tener en count la desventaja de los nuevos problemas.

Resumen

Al final, tenemos que tratar de cuantificar los beneficios de una abstracción de desarrollo como Xamarin sobre otras abstracciones, o sobre el desarrollo nativo. ¿C # es mejor que Objective-C? Sí, de lejos, en mi opinión, pero eso es solo un factor. Cuando agrega todo, inclina las escalas lejos de Xamarin en favor de otros enfoques para el desarrollo mobile. A partir de 2013 (esto puede cambiar rápidamente), tiendo a elegir una solución de código nativo o una solución HTML5 / Cordova. Me gustan los dos por diferentes motivos e intentaré explicar algunos de los factores de decisión en otro artículo.