Comparte este artículo

Hace unos meses, mi compañero Rafa Saura escribía un post sobre la programación para móviles y tablets. Siguiendo en dicha línea me gustaría seguir en esta entrada reflexionando sobre los temas allí expuestos.
El crecimiento exponencial en el uso de dispositivos móviles es imparable. A la expansión de los smartphones, se está uniendo en el último año el de las Tablets. Al monopolio total que ha ejercido Microsoft con Windows en los últimos 25 años, se han sumado dos nuevos actores: Apple con IOS, y Google con Android. Apple que siempre ha estado en la sombra, encabezando la fama de fabricante para gente “distinguida” y diseñadores profesionales, ha sabido transformar su imagen, y hacer de lo extraordinario algo normal, llevando sus productos al consumo masivo, aunque los precios no acompañen al descenso progresivo que sí ha experimentado el mundo del PC, en los últimos años. Y por otra parte, está Android, el sistema operativo basado en Java, impulsado por Google y siendo en estos momentos el más extendido entre el colectivo smartphone por ser mucho más accesible para cualquier consumidor.
Hace unos 12 años Microsoft supo revolucionar el mundo de los dispositivos móviles con su Windows CE, posteriormente evolucionando en Windows Mobile. Consiguió trasladar la informática del PC al de la movilidad. Surgieron las PDAs que principalmente triunfaron en el mundo profesional e industrial. Los programadores vimos oportunidades importantes y nos lanzamos al desarrollo de aplicaciones para todo tipo de sectores: preventa, restauración, logística, fabricación, etc. Supuso un gran avance y una ventaja competitiva muy importante para aquellos clientes que adoptaron esta tecnología.
Aún así, no ha llegado tener todo el éxito esperado. En este momento, Windows Mobile y los dispositivos que lo soportan han pasado al reino de la obsolescencia. ¿ Cuáles han sido los motivos ? Me aventuro a decir:

• Recursos muy limitados por parte de los dispositivos, y gestión poco eficiente a nivel de software de dichos recursos. El resultado, sistemas lentos y poco estables.

Pobre experiencia de usuario. El traslado directo del PC al móvil trae como consecuencia una usabilidad y accesibilidad en general pobre. Era difícil conseguir resultados espectaculares con las herramientas de desarrollo existentes, sin quitar por ello mérito a Microsoft Visual Studio 2005 y posteriores.

Con la llegada de las tablets se mejoran los recursos hardware, y sobre todo se consigue una rica y potente experiencia de usuario. Y en dicho escenario han tomado la delantera claramente los dispositivos Android de múltiples fabricante, e IOS con el Ipad de Apple. En breve (presumiblemente otoño de este año), Windows lanzará su Windows 8, un sistema operativo diseñado para funcionar tanto en PC como en dispositivos móviles (ver artículo “Windows 8, ¿ Qué podemos esperar ?” de Samuel Parra en el blog de Clavei). Microsoft se sumará por tanto a las opciones posibles de utilización parte de millones de usuario en todo el mundo, con las aplicaciones de tipo “Metro”. Una buena comparativa en la experiencia de usuario entre el Ipad y Windows8 se puede encontrar en ese artículo: “Design Case Study: IPad to Metro Style App”.
Y ante este escenario tan diverso los equipos de desarrollo tiene ante sí un panorama muy complejo. El desarrollo de aplicaciones nativas para los sistemas anteriormente mencionados implica la programación en diferentes lenguajes de programación:

• Objective-C para IOS.

• Java para Android.

• .Net para Windows 8. No obstante, en este sentido, Microsoft ha abierto el abanico de facilidades para los programadores, incluyendo en Visual Studio 2011 el soporte nativo para la programación en HTML5 y Javascript.

Ante un mercado tan aparentemente fraccionado como el que se vislumbra en las tendencias de los consumidores de dispositivos móviles, resulta difícil especializarse por completo en alguna de las anteriores tecnologías sin perder oportunidades e incluso clientes fieles a nuestra empresa. Técnicamente hablando es como hacer autopistas en las que sólo pudieran circular vehículos de una determinada marca, y al final tuviéramos que hacer tantas autopistas como marcas diferentes de vehículos: al final si queremos dar soporte a la mayor parte del mercado multiplicamos los recursos necesarios para la creación y mantenimiento.
Pienso firmemente que la solución pasa por la creación de aplicaciones multiplataformas que posibiliten el esfuerzo de realizar un único desarrollo que podamos desplegar en cualquier dispositivo independientemente del sistema operativo. Actualmente ya existen alternativas para este cometido:

• Para programadores .Net tenemos Monodroid y Monotouch . El primero nos posibilita el desarrollo de aplicaciones para Android, y el segundo para IOS. Básicamente, estas herramientas nos permiten reutilizar nuestra lógica de negocio en .Net en ambas plataformas, y utilizar posteriormente las herramientas propias de cada una de ellas para el desarrollo de la interfaz de usuario. Minimizamos el esfuerzo de desarrollo y mantenemos totalmente intacta la experiencia de usuario. Como desventajas principales, podríamos citar que son herramientas todavía poco maduras, y que siguen necesitando conocimientos profundos de los entornos y lenguajes de programación de las plataformas nativas.

• La creación de aplicaciones del tipo WebApp, desarrolladas en HTML5 y Javascript, apoyándose en frameworks como JQuery Mobile o Sencha Touch . Dichos frameworks nos permiten la creación de aplicaciones cuyo aspecto imita el de las aplicaciones nativas. Y digo bien, “imita”, porque efectivamente en la actualidad no se llega a conseguir la experiencia de usuario lograda con dichas aplicaciones, pero los resultados son más que aceptables. Para el despliegue de este tipo de aplicaciones en los diferentes dispositivos necesitamos de herramientas como PhoneGap , o Titanium , entre otras.

 Javascript, un lenguaje que no causa muchas simpatías entre el mundo más ortodoxo de la programación y que tantos dolores de cabeza le ha ocasionado a los programadores web, se puede convertir en poco tiempo en el lenguaje de moda. Están surgiendo proyectos como el de CoffeeScript que pretenden facilitar la labor de los programadores introduciendo mejoras sintácticas en la escritura del código.

El debate está abierto, y en la red encontramos múltiples entradas de defensores y detractores de unas tecnologías frente a otras. Lo cierto, es que al final será necesario conocerlas todas aunque sea mínimamente, porque la interacción total con los dispositivos, hoy por hoy, únicamente se puede conseguir utilizando el lenguaje nativo de cada plataforma.
Recomiendo la lectura del interesante artículo “Using HTML5 to Create Mobile Experiences” de Brandon Satrom en MSDN Magazine de Mayo de 2012, para obtener un poco de luz al respecto.
Se vislumbra un futuro totalmente lleno de oportunidades para las empresas desarrolladores, pero surcado de difíciles y arriesgadas decisiones, en un momento en el que la velocidad es fundamental.
imagen: Héctor Amarrosa


Comparte este artículo