La decisión adecuada: ¿Qué tecnologías de desarrollo móvil escoger?
31 May 2021
En un post anterior a éste hablábamos sobre el impacto de las tecnologías de desarrollo móvil en las compañías y adelantábamos ya algunas pinceladas sobre los factores que podían influir en la toma de decisiones alrededor de este tema. Por ello, hoy profundizaremos un poco más en los aspectos que nos llevarán a tomar la decisión más adecuada para nuestra compañía. En VASS llevamos años acumulando experiencias mientras proporcionamos soluciones a compañías globales punteras en todos los sectores, soluciones abordadas a través de varios paradigmas de desarrollo móvil: nativo (directamente con Android y iOS), multiplataforma (con Xamarin y React native), híbrido (principalmente con Ionic) y mixto (combinando nativo y web responsive). Gracias a esta multi-especialización, hemos conseguido adoptar una posición agnóstica ante la tecnología que nos permite relegar el ámbito tecnológico a una segunda instancia, para primar los objetivos de negocio en el asesoramiento de nuestros clientes, ajustando así, el enfoque tecnológico que más se adecúa a sus necesidades.
Así pues, nuestro asesoramiento se basa en el análisis y contraste de 3 ámbitos fundamentales: el producto, la compañía y la tecnología, que solemos analizar en este mismo orden.
El producto: tipo de App, público, entorno…
En lo que respecta al producto se deben de diferenciar varios aspectos:
- Si la App se construye para resolver una necesidad puntual o perdurará en el tiempo, lo que nos permitirá apostar por Frameworks más disruptivos, o bien buscaremos un grado de madurez en la solución que nos garantice una evolución de la tecnología más controlada.
- El público al que van dirigidas las Apps: empleados, segmentación de edad del público principal…
- El Time-to-Market, cuando hay un coste de oportunidad, algún requerimiento o limitación en el producto o en el contexto de la empresa que requiere llegar cuanto antes al consumidor.
- La necesidad de tener que mostrar un diseño visual específico (Píxel Perfect). La posibilidad de que la propuesta de diseño innove sobre las tendencias actuales (Material design y Cupertino design) o si bien es acorde a estas.
- Si será necesario hacer un uso intensivo del hardware y sensórica del dispositivo.
- El requerimiento de integración de librerías de terceros existentes: para la comunicación con hardware externo, para reutilizar lógica de negocio de otras plataformas, para la explotación de otras herramientas…
- El entorno donde la App desarrollará sus funciones: comercial, industrializado o personal, sector bancario…
- Si se requerirá un funcionamiento offline y/o asíncrono.
- El objetivo de negocio y capacidad de inversión del cliente en este producto.
- Las plataformas destino a través de las cuales se quiera distribuir (Android, iOS, Smarwatch, Web, etc.).
A estos factores pueden añadirse muchas otras características inherentes a la casuística del cliente, pero estos son algunos de los más comunes que solemos tener en cuenta.
Contexto de la compañía
Debemos de tener presente el contexto de tecnologías de la información que ya tienen implantados en las compañías, pues con frecuencia disponen de otros productos software ya construidos en ciertos ecosistemas tecnológicos que podrían generar sinergias en la construcción y mantenimiento de las Apps móviles.
Por ejemplo, algunas corporaciones realizan una fuerte apuesta por tecnologías Microsoft o diferentes tecnologías como React (la propuesta de Facebook). En ocasiones nuestros clientes ya disponen de Apps móviles desarrolladas en ciertos Framework. En otros casos, el uso de librerías desarrolladas en algunos lenguajes pueden ser un acelerador o bien los lenguajes de programación usados en el desarrollo de los frontales Web pueden extenderse al mundo de las Apps. Este tipo de aspectos, puede ayudar a decantar la balanza hacia una u otra tecnología.

Adicionalmente, mantener una estrategia tecnológica homogénea de desarrollo móvil en una compañía permitirá generar sinergias entre todas las Apps de esta, no solo a nivel de mantenimiento, sino de reutilización, permitiendo el aprovechamiento de piezas de software entre distintas Apps. Este es uno de los mayores puntos de mejora que detectamos en la estrategia de movilidad de las corporaciones donde, en ocasiones, distintas áreas funcionales de una misma empresa operan como silos tecnológicos independientes que invierten recursos en paralelo y por duplicado en resolver los mismos requerimientos.
Nuestra labor también pasa por profundizar en las estrategias de gobierno que permiten operar a las corporaciones como una única entidad. Además, nos centramos en las actividades de establecimiento de arquitectura del software para estandarizar las prácticas de movilidad, catapultando a los clientes hacia la creación de su propio marco de trabajo que acelere el desarrollo de Apps móviles, con independencia de la tecnología que utilicen.
La tecnología: ¿Desarrollo nativo o acelerado?
Actualmente contamos con numerosas soluciones de desarrollo móvil que pueden distribuirse en 3 paradigmas principales, según la cercanía a realizar un uso más directo del API del fabricante diferenciamos el desarrollo nativo, multiplataforma e híbrido. En esta ocasión no vamos a entrar en el detalle de cada uno de ellos, pero sí diferenciaremos entre el desarrollo nativo y el desarrollo acelerado.
Desarrollo nativo de aplicaciones móviles
El desarrollo nativo es aquel que utiliza directamente la propuesta de entornos de desarrollo y lenguajes oficiales del fabricante de la plataforma para codificar las aplicaciones móviles. Esto permite aprovechar al máximo las capacidades del dispositivo móvil, ya que se accede directamente al Framework del fabricante. Por tanto, se obtiene la mejor experiencia de usuario posible, pero es necesario codificar por duplicado las aplicaciones (para cada sistema operativo: Android y iOS).
Aún así, debemos considerar que construir una App no implica solo codificar: hay muchas actividades adicionales que deben de realizarse entre las que encontramos:
- Gestión del proyecto.
- Análisis funcional.
- Definición de la arquitectura de la solución.
- Definición de interfaces y coordinación de las integraciones con el BackEnd.
- Generación de mocks de los servicios.
- Definición de UX.
- Creación de la propuesta de UI y generación de recursos gráficos, estilos y textos.
- Creación de la documentación.
- Definición de pruebas.
Todo esto implica un esfuerzo relevante para el desarrollo de cualquier proyecto, pero hay que tener en cuenta que tan solo se realizará una vez, independientemente de en cuantas plataformas vaya a distribuirse la aplicación.
Por otro lado, tenemos la ejecución de las pruebas, que con independencia de que el Framework elegido permita ser compilado a varias plataformas desde el código procedente de una misma fuente, deberán probarse todas las funcionalidades en cada plataforma individualmente. Del mismo modo la publicación en los Stores o la aplicación de técnicas de ASO (app store optimization), también deberán realizarse en cada plataforma.
Tras analizar las anteriores actividades, resulta sencillo romper el mito de que ninguna solución de desarrollo acelerado reducirá a la mitad la inversión en desarrollo de Apps móviles, principalmente porque “no solo de código viven las Apps” 🙂.
Desarrollo acelerado de Apps
Entendemos por desarrollo acelerado todo aquel basado en el uso de Frameworks que se integran con las herramientas del desarrollo nativo y que nos permiten reducir la dedicación necesaria para disponer de la misma App en dos o más plataformas.
En estos casos, el hecho de emplear menos esfuerzo en la fase de desarrollo podrá dar lugar a beneficios y/o peajes, de mayor o menor importancia según la situación de la organización y las expectativas que se tengan sobre el producto. De cualquier forma, las ventajas son claras: no se necesita codificar (al menos) la lógica de la aplicación y el acceso a datos en cada plataforma móvil destino.

Ahora, si dejamos de lado las actividades complementarias al desarrollo y nos centramos en la codificación, podemos decir que, aunque teóricamente codificar en un lenguaje y compilar (o transpilar) a varias plataformas supone un ahorro de costes, lo cierto es que en la práctica no se trata de un 2×1 (no alcanzaremos siquiera un 60-80% de reutilización entre Android y iOS). Pero, ¿por qué? Por que en lo que respecta a la codificación, algunas de las actividades más relevantes de desarrollo de Apps deben de realizarse en cada plataforma:
- La integración de notificaciones Push con la plataforma correspondiente.
- La generación e integración de certificados.
- Las validaciones de calidad.
- Los accesos específicos al hardware.
- La compilación, publicación y el control de versiones.
- La generación de los distintos pipelines de CI/CD (si corresponde).
- Las correcciones necesarias para suplir las carencias procedentes de la fragmentación de versiones de cada sistema operativo.
- La gestión de permisos diferente entre varias plataformas.
- Los ajustes de visualización que deben de corregirse para que la interfaz se ajuste correctamente a ciertos teléfonos.
Teniendo en cuenta esto, también podemos destruir el falso mito de que en un desarrollo acelerado no sean necesarios los conocimientos específicos de cada plataforma nativa. Es más, en ocasiones, la capa de abstracción que permite compilar a varias plataformas puede convertirse en un hándicap más que debe de analizarse y parchearse para que la App se comporte de la forma deseada.
Desarrollo móvil basado en la experiencia
Hoy en día podemos decir, sin duda, que en VASS hemos alcanzado una gran experiencia codificando, manteniendo, evolucionando (e incluso migrando) Apps en distintos Frameworks. Hemos sido cómplices y partícipes de primera línea en la evolución de la tecnología, los cambios de paradigmas de los lenguajes y en cómo las distintas propuestas se han ido abriendo camino en el mercado, desde ser soluciones de nicho hasta convertirse en propuestas líderes.
Esta experiencia es la que nos permite asesorar a nuestros clientes, con la garantía de haber experimentado desde nuestros propios equipos numerosos aspectos:
- El grado de madurez, la trayectoria y el dinamismo de los distintos Frameworks y sus lenguajes de codificación.
- La evolución de sus arquitecturas, el respaldo y las intenciones de los fabricantes, las comunidades oficiales y extraoficiales.
- Los costes de construcción y mantenimiento de las distintas alternativas de desarrollo móvil.
- La dificultad para la captación y retención del talento en los perfiles de desarrollo.
- El feedback de nuestros clientes.
Este tipo de experiencias se convierten en variables que ponderamos de forma acorde a los intereses de cada uno de nuestros clientes, con el objetivo de acompañarlos en la selección de la propuesta tecnológica que optimice su inversión y les permita alcanzar sus objetivos.
Esta es, sin duda, nuestra misión principal.