Desarrollo híbrido. ¿Si o no? Es una cuestión que muchos de nuestros clientes nos plantean al comenzar a desarrollar sus proyectos con nosotros. Pese a que se ha escrito un montón sobre cómo escoger la plataforma móvil más adecuada para tu producto o servicio, aun hay veces en las que no hay una respuesta segura.
Después de todo, la decisión a tomar no es fácil. Cada plataforma tiene sus ventajas y sus inconvenientes, y dependiendo de tus requisitos así como de los objetivos de tu negocio, los beneficios de programar para una plataforma en particular pueden cambiar las tornas en relación a no hacerlo.
Procederemos a explicar en un breve resumen lo que significa desarrollo híbrido y multiplataforma para poder obtener una lista de pros y contras y plantearemos algunas preguntas adicionales para ayudarte a decidir si el desarrollo híbrido tiene sentido en tu negocio.
¿Qué es el desarrollo híbrido multiplataforma?
El desarrollo híbrido en móviles se refiere a la capacidad de desarrollar una app para diferentes plataformas / sistemas operativos (en este caso Android e iOS) mediante un único código fuente. Utilizando herramientas de desarrollo multiplataforma e híbridas, un único y mismo código se compila tanto para Android como para iOS a la vez. Esto difiere del desarrollo nativo, donde se emplea código específico para cada plataforma.

Algunas de las ventajas son bastante evidentes, mientras que otras son un poco más sutiles y cuestan de ver.
Para empezar, los costes de desarrollo disminuyen y se tarda menos tiempo... mucho menos tiempo.
En serio, esto no puedo dejar de enfatizarlo, como desarrollador profesional me he dedicado muchos años al desarrollo de software y puedo decir que el trabajo que permite ahorrar el desarrollo híbrido a la hora de lanzar una app al mercado es enorme. Mediante este método, se crea un único código fuente, por lo que la complejidad de tener que desarrollar nuevas funcionalidades para tu app o plataforma disminuye enormemente.
A mi me sorprendió la facilidad y la agilidad que permitian este tipo de metodologías de desarrollo y formas de programar ahorrar costes en tiempo de desarrollo. No solamente necesitarás menos personal manteniendo tu app, sino que además tendrás más facilidad para publiar una app con el mismo número de desarrolladores.
Además, por si fuera poco, con este tipo de metodologías se es capaz de reutilizar más del 75% del codigo fuente original en otras funcionalidades, por lo que por lo general, se reduce enormemente el tiempo que se tarda en desarrollar tu app.
Mayor base de usuarios
Sobra decir que siendo capaz de compilar programas tanto para Android como para iOS con el mismo código implica que además, tus interfaces son consistentes e iguales sin importar la plataforma que se esté utilizando, además de aumentar el número de usuarios que pueden descargar y utilizar tu app. Cuanta más gente pueda descargar tu app por que su celular es compatible con tu plataforma, mayor serán tus probabilidades de éxito con tu app o proyecto.
El análisis de calidad es más rápido.
Debido a que se emplea un único código fuente, solamente hay que revisar un mismo código fuente para comprobar que la experiencia de usuario final es correcta y que todas las funcionalidades de tu app funcionan correctamente. Además, detectar bugs críticos es más sencillo.
ENCONTRAR NUEvoS DESARROLLADORES ES MÁS SENCILLO
También a menudo se plantea la necesidad de encontrar a alguien o contratar a alguien que sea capaz de realizar trabajo para tu app. Dado que este tipo de tecnologías utilizan lenguajes de programación tan comunes en el desarrollo de apps webs, es muy fácil encontrar a programadores que desarrollen en este tipo de tecnologías, o que estén dispuestos a aprender a utilizarla en para tu proyecto.
El futuro avanza hacia este patrón de diseño y programación
Este tipo de tecnologías de desarrollo están gozando de enorme empuje y crecimiento en el mundo emprendedor. Las ventajas superan con creces los inconvenientes que pueden surgir a lo largo del camino del desarrollo. No solo ahorra costes y tiempo sino que además permite a los equipos de desarrollo y de negocio ser mucho más ágiles a la hora de detectar posibles fallos o mejoras en la interfaz de usuario o poder aplicarlas en menos tiempo.
Un código para gobernarlos a todos.
Recuerdo cuando empece a programar , mis andanzas en la universidad me llevaron a descubrir un montón de lenguajes de programación completamente diferentes. Cada uno tenía sus pros y sus contras y era dificil habituarte a cual querías escoger o cual era el mejor para desarrollar según que interfaces. Recuerdo haber utilizado PHP para el backend de proyectos, GLUT para interfaces JAVA sin ningún tipo de estandarización de diseño que se conectaban de forma asimetrica a backends en JSP.
Ahora - mediante por ejemplo con IONIC FRAMEWORK - uno es capaz de desarrollar Backend y Frontend únicamente utilizando Javascript. La facilidad con la que aprendí este tipo de tecnologías me sorprendió enormemente.
Las desventajas hacen que valga la pena.
No todo es oro lo que reluce, y en este tipo de desarrollo no todo podía ser bueno. Desarrollar de forma económica una app tiene una serie de ventajas , pero también tiene sus inconvenientes.
Incongruencias de interfaz de usuario.
Debido a que cada plataforma tiene sus propios elementos de interfaz de usuario, puede ser algo complicado cumplir los requisitos específicos de interfaz para cada plataforma, sobretodo si se utiliza un código compartido para multiples plataformas.
Por ejemplo, Apple es muy conocida por tener unas políticas de diseño de interfaces muy estrictas y tienen tendencia a rechazar apps en la App Store que no cumplan sus requisitos de interfaz específicos (esto es, la app debe de utilizarse siempre de una manera similar, con los botones siempre dispuestos de una forma similar a través de la pantalla y que toda la interfaz de usuario sera y congenie con el teléfono móvil.
Lentitud a la hora de implementar nuevas funcionalidades de hardware.
El mundo tecnológico está lleno de avances en los teléfonos móviles. Utilizando este tipo de tecnología, se pierde la capacidad de programar las interfaces para nuevas funcionalidades de tu celular sin esperar un tiempo necesario para que estas plataformas adapten sus funcionalidades y capacidades a las nuevas funcionalidades de tu terminal.
Por ejemplo, cuando salieron los primeros teléfonos móviles con lectores de huellas digitales, aquellas apps que habían sido desarrolladas con código nativo pudieron fácilmente adaptar sus interfaces de usuario a esta nueva funcionalidad porque tanto Android como Apple las sacaron de serie en sus terminales al desarrollar estas tecnologías.
No obstante, las apps desarrolladas bajo código híbrido debieron esperar un poco más a que primero sus plataformas tecnológicas (como Microsoft o la propia Google) sacasen los plugins y componentes necesarios para poder trabajar este tipo de tecnología.
En general no suele ser un enorme inconveniente, pero si que es cierto que no se puede aprovechar este tipo de ventajas en I+D, y si tienes un público que disfruta de este tipo de funcionalidades en tu app, utilizar código híbrido puede plantearte problemas.
Otros inconveniente, tamaño de las apps.
El desarrollo híbrido generalmente implica utilizar y ejecutar más lineas de código sobre cada una de las plataformas para las que se desarrolla (aunque el código sea compartido). Debido a esto, las apps desarrolladas en ionic o Xamarin (por ejemplo) suelen ocupar mucho más que aquellas desarrolladas con tecnología nativa. Así pues, por ejemplo una app que en Objective C (para Apple) ocupaba unos 172 kb, utilizando Xamarin el tamaño de esta app era de 3 megabytes.
Puede sonar a poco, pero el tamaño va escalando y si tu app es muy grande y tiene muchas funcionalidades, también crecerá su código fuente. Esto puede dificultar la instalación de tu software en terminales de gama baja o aquellos más antiguos donde el usuario apenas tiene espacio para seguir instalando apps. No obstante, con el aumento de la memoria en los teléfonos móviles a pasos tan agigantados, debo decir que pienso que ya no es un impedimento tan grande como solía serlo.
¿Necesita tu negocio desarrollo híbrido multiplataforma?
Para contestar a esta pregunta, planteemos una serie de preguntas sobre la forma en la que vas a lanzar tu producto al mercado.

¿Tienes prevista una fecha de lanzamiento?
¿De cuánto tiempo dispones para lanzar tu app al mercado? En mi humilde experiencia, el 65% de los desarrollos suelen tardar más de tres meses de desarrollar (sin importar lo que te cuenten los demás equipos de desarrollo).
Lo primero que debes de hacer es planear un esquema temporal de sobre que fechas planeas empezar a trabajar y de que manera. De esta manera tendrás una idea más clara sobre que método es el más adecuado para ti.
Por ejemplo, si tenías pensado lanzar primero una versión para iOS en un breve periodo de tiempo, y lanzar después la versión para android, quizás te compense más utilizar desarrollo nativo en vez de desarrollo híbrido. Swift - el lenguaje de programación desarrollado por apple - es uno de los más modernos que existen y se ha diseñado para ser extremadamente fácil de usar y de entender. Los desarrolladores pueden ver fácilmente que cosas están desarrollando y de que manera porque utilizan frases como "añadir" y "remover" en la programación , por lo que el desarrollo es muy intuitivo.
¿DE QUE PRESUPUESTO DISPONES?
Cuando te planteas desarrollar para varias plataformas, tienes que tener en mente los costes fijos inmediatos y pensar en su lugar en el coste total del proyecto en el tiempo.
Tendrás también que analizar que tipo de requisitos tienen que poder hacerse a través de tu app. Por ejemplo, si tienes planeado añadir nuevas funcionalidades de forma continuada a tu proyecto que no tengan que ver con el dispositivo, el desarrollo híbrido es una opción más adecuada por que solamente tienes que programar 1 único código fuente.
¿Qué funcionalidades tiene que tener tu app?
Otro de los inconvenientes que tiene el desarrollo multiplataforma es que en general, el código fuente se ejecuta de forma más lenta en el terminal. Si tu app se trata de una app de interfaz de usuario que no va a explotar nuevas funcionalidades que vayan a salir para los teléfonos móviles, entonces utilizar este tipo de tecnología no va a suponer un problema para tu app. No obstante, si tu app va a necesitar de acceder o conectarse a las partes más punteras de un terminal móvil , quizás el desarrollo nativo te ofrezca mejor rendimiento y mayor facilidad a la hora de que tu app funcione.
Algunas compañias que han transformado sus apps de desarrollo híbrido a nativo incluyen por ejemplo Facebook y LinkedIn. Facebook tenía el problema de que su app lo tenía complicado para que el scroll en la pantalla principal fuese muy fluido, así como lentitud en los tiempos de carga de imágen una App Caché que no funcionaba del todo bien. Linkedin por contra, quería resolver problemas como por ejemplo la falta de espacio en memoria para sus usuarios así como algunos problemas de animación. Claro que esto ocurrió en 2015, y en estos últimos tres años han mejorado muchísimo el rendimiento de este tipo de plataformas.
¿Quiénes son tu público objetivo? ¿Hacia quién va dirigida la app?
Si tu audiencia utiliza teléfonos tanto Android como iOS, entonces el desarrollo híbrido probablemente sea tu mejor opción.
Por ejemplo, trabajé una vez en el desarrollo de un proyecto que empezó una versión beta de su app para Android. La app permitia a un empleado leer un código QR y actualizar información de stock e inventario de productos. Tras empezar el testeo, los trabajadores de la empresa se dieron cuenta de que era bastante tedioso tener que utilizar un terminal Android. Muchos estaban acostumbrados a utilizar sus celulares iOS y la compañia tenía que invertir dinero en adquirir nuevos celulares y terminales Android. En vez de eso, descubrieron que les salía más rentable rediseñar la app en formato híbrido para que funcionase correctamente tanto terminales iOS como Android.