Uno de los mayores quebraderos de cabeza que tenemos en el desarrollo hoy en día son las varias plataformas que hay que tener en cuenta para llevar la funcionalidad al usuario. Normalmente debemos tener tres en cuenta (al menos): la web, la app Android y la de iOS. Curiosamente parece que el hacer aplicaciones nativas para windows 10 no suele entrar en estos cálculos.

A lo largo de estos años se han hecho varios intentos para reducir el tiempo del desarrollo y poder poner en producción lo antes posible las aplicaciones en todas las plataformas. Para hacer esto lo más obvio es pensar en evitar la duplicación del trabajo. ¿Se puede hacer el trabajo sólo una vez y reaprovecharlo para no tener que hacerlo en el resto de plataformas?.

En este sentido, me parece especialmente interesante el ejercicio que ha hecho Hootsuite. Si no lo conoces, es una herramienta para gestionar Twitter y otras redes sociales cuya base de usuarios son principalmente empresas.

hootsuite-1

Si te gusta el desarrollo de apps seguro que te puedes entretener y mucho con este artículo. Y lo curioso es que la forma de mejorar el desarrollo de aplicaciones, digamos de frontal, ha sido… mejorar el desarrollo de servicios web, con los conceptos de SOA de toda la vida y el nuevo sabor, el serverless.

Y como muchas veces, se aprende más estudiando lo que ha fracasado con otros, más que con lo que han triunfado. Me llama mucho la atención en este artículo, la relación de intentos fallidos o no tan exitosos con varias tecnologías:

  • Empezaron compartiendo web views en todas las plataformas. Sin embargo, su falta de rendimiento, en comparación con las vistas nativas, provocaban una degradación de la experiencia de usuario.
    Además, este código era difícil de mantener. Por otra parte, este código web no tenía integración con las capacidades nativas del sistema operativo sobre el  que se ejecuta.
  • Luego lo intentaron con aplicaciones híbridas para Cordova/Phonegap, que permite el acceso a estas capacidades locales como la cámara y el bluetooth.
    Según afirman, con la necesaria optimización, el rendimiento llegó a parecerse mucho al nativo.
  • También probaron React Native, que proporciona interfaces nativas controladas mediante javascript. Aunque consiguieron unos interfaces indistinguibles de los nativos el trabajo que había que invertir era demasiado. Al final se sintieron como si “estuvieran nadando río arriba” y lo abandonaron si publicarlo siquiera.
  • También miraron Xamarin, para poder escribir una sola vez y desplegar la app en Android e iOS. Sin embargo, el trago que tuvieron que pasar los programadores de web, Android e iOS para usar C# y la plataforma de desarrollo de Xamarin no fue muy agradable y también abandonaron esta línea.

Así pues, después de dar muchas vueltas, hicieron otro experimento. ¿Y si para mejorar el desarrollo multiplataforma lo que tuvieran que hacer es mejorar la parte servidora?. Parece que ese fue al final el camino.

Resulta curioso como la “parte servidora”, es decir los servicios, son los grandes olvidados en el desarrollo de apps móviles. Hace ya algún tiempo hablé de esto precisamente en el blog, pero visto lo visto, podríamos resumirlo parafraseando la famosa cita de “si quieres la paz, prepárate para la guerra” por la más incruenta…

si quieres apps prepárate para los servicios 😉

Anuncios