Hace un tiempo hice una presentación con base en la materia de computación móvil que vi en mi especialización en EAFIT acerca de las consideraciones para desarrollar aplicaciones móviles, tema que di como desconferencia en BarCamp Medellín en 2009 y en BarCamp Cúcuta en 2010, hay que ver como ha cambiado súbitamente el escenario de desarrollo de aplicaciones móviles para estos días en el panorama nacional, es probable que en otros paises para 2009 ya este escenario estuviese tomando muchos matices, pero evidentemente la popularización del uso de las tablets y smartphones ha puesto en boca de todas las personas lo que ya se evidenciaba como una tendencia en los mercados internacionales, la movilidad.
Y bien, probablemente no haya nada nuevo que decir, temas como estos son analizados técnicamente por muchos, y también desde otras perspectivas a las que no muchos prestamos atención cuando estamos aprendiendo alguna tecnología en particular.
Pues bien esas consideraciones y algunas otras a las que también me refería en mi post anterior son a las que me referiré ahora, sin embargo no entraré a considerar mis preferencias o lo que es mejor o no con respecto a ninguna tecnología, más bien les plantearé algunos escenarios y criterios para tomar diferentes decisiones, por que en esto del desarrollo para móvil hay más de una decisión que tomar.
Empecemos por aclarar el tema de los dispositivos móviles que para más de uno hasta hace poco no eran más que los celulares, ahora con las tablets a muchos les queda claro que se trata más que de tener gadgets, hablar de movilidad es tener la posibilidad de tener tus datos y aplicaciones en cualquier lugar, por eso hay desde dispositivos pequeños de uso personal, hasta algunos de gammas medias para uso personal o empresarial, y hasta notebooks (si señor considerados como dispositivos móviles) pero que obviamente tienen una serie de características que lo hacen un escenario robusto, pocos piensan en dispositivos como los rugged devices que son dispositivos móviles para el trabajo pesado, que soportan escenarios agrestes que se producen en diversos entornos empresariales u otros tan comunes y simples como las pantallas táctiles ubicadas en super mercados, y que también son consideradas dispositivos móviles. Es así como se reducen los esquemas mentales a pensar que el desarrollo móvil cubre aplicaciones únicamente de uso personal, escenario que si bien es muy popular no es el único y no enfrenta a muchas consideraciones que si lo hace el ámbito empresarial.
A la gran variedad de dispositivos móviles debemos adicionarle la gran cantidad de sistemas operativos disponibles para cada uno de esos dispositivos y por lo tanto la disponibilidad de tecnologías que además trabajen correctamente sobre esos sistemas operativos, es así como el campo de la movilidad se ha fragmentado terriblemente, y de pasar de convivir con 3 sistemas operativos comunes y unos cuántos lenguajes que se daban la guerra entre si, tenemos un escenario, de múltiples dispositivos, múltiples sistemas operativos y múltiples tecnologías de desarrollo.
Esta situación de mano con el crecimiento en la capacidad de los dispositivos y el hecho de que ahora tengamos a la mano equipos con la posibilidad de correr casi completamente cualquier aplicación web con navegadores que hasta hace poco solo podían ejecutarse en un PC de escritorio, ha producido en la industria del desarrollo más de un efecto, de por sí la mano de obra de profesionales capacitados en el área de sistemas ha estado en declive con los años, por razones que considerar no son ámbito de este post, pero que en conjunto con lo anteriormente descrito, ha hecho que más de un desarrollador web, y más de una empresa de marketing y publicidad ingrese a competir y ofrecer abiertamente a grandes compañias sus servicios de desarrollo de aplicaciones móviles que funcionan en cualquier dispositivo.
Bien, empecemos por ver que tiene eso de falso y de verdadero, en primer lugar, no por saber desarrollar para web, se sabe desarrollar para móvil, desarrollar para móvil nunca ha sido ni será hacer una aplicación miniatura, lo que habrá que considerar entonces es si la aplicación que necesitamos lo único que requiere es una mini-web y por otro lado si el futuro de esa aplicación no requiere características avanzadas para interactuar con los dispositivos.
Como sé que más de un programador llegará por aquí, aclaro que si se bien que existe la posibilidad de usar frameworks como Phone Gap para programar una sola vez y usar la misma app en diferentes plataformas, también llegue a programar con Mobile JSF y he escuchado acerca de los beneficios de JQueryMobile para web móvil, lo único que puedo decir a eso es que conociendo la cada vez más exigente solicitud de buena experiencia de usuario por parte de las personas que usan dispositivos móviles, una sola aplicación que use eficientemente las capacidades de todos los dispositivos usando un framework va a estar difícil, sin embargo es un escenario a evaluar que en algunos casos puede resultar válido, pero seguramente no en la mayoría, y dudosamente una empresa dedicada a publicacidad o marketing tendrá un gran área de desarrollo dedicada a fortalecer a su gente en mejores prácticas de desarrollo de software o el uso de herramientas de este tipo.
Por otro lado, cuando el tema se vuelve de tener una excelente experiencia de usuario, usar funciones avanzadas del teléfono y lo que se necesita es que nuestra aplicación esté disponible en las diferentes tiendas de aplicaciones, el problema se torna aún peor. Actualmente la forma como los principales proveedores de software que dominan el mercado de los sistemas operativos para móvil están trabajando, hace que un lenguaje como java que lideraba el mercado de desarrollo de aplicaciones móviles por tener la posibilidad de ser multiplataforma, se ubique al mismo nivel de los demás al ser un lenguaje que adopta algunas plataformas específicas y que en realidad ya no puede ofrecer dicha ventaja, por más de un tema de seguridad de las aplicaciones a las cuales no se les está permitiendo acceder a las capacidades de los dispositivos directamente si no a través de APIs de programación que provee el mismo Sistema Operativo.
Esta parte del escenario genera muchos más problemas de los que se pueden intuir, eso de mano con la escasa mano de obra profesional, lleva a que cada plataforma se luche a los entusiastas del desarrollo de aplicaciones para engancharlos al desarrollo de la suya en particular, mundos cada cual que pueden ser tan amplios que encontrar un programador que trabaje y que tenga experiencia real en desarrollo para diferentes plataformas, es una necesidad cada vez más común y más difícil de cubrir.
Usaré un ejemplo para llevarles un poco al escenario en el que están cayendo las organizaciones sin darse cuenta, algunos de nosotros pensamos que el lanzamiento de Windows Phone iba a ser el final de Windows Mobile, al escuchar la versión oficial de esta situación, nada tenia que ver con lo que pensabamos, la versión de Windows Mobile pasará a ser Windows Embedded, la razón es que los escenarios empresariales necesitan seguir avanzando, pero en el caso de Microsoft ellos han pasado además a querer competir mano a mano con plataformas como iPhone y Android que están más enfocadas actualmente al público masivo, que tipicamente usa sus dispositivos móviles para uso personal. Colocando esta situación en los escenarios anteriormente descritos, hay dos escenarios ahora para los que trabajamos tecnologías Microsoft, y la pregunta es ¿Las otras plataformas competirán en el ámbito empresarial? ¿Quien compite en ese ámbito si yo buscara una alternativa? Ahí lo dejo de tarea para ustedes y para mí.
Me apalanco en este último tema para presentarles una perspectiva un poco más profesional, continuando con eso de lo que deberían tener en consideración empresas o proyectos cuyas aplicaciones móviles deban ser pensadas no momentaneamente o como utilidad de uso personal y es los procesos y las metodologías de software, mi tema de siempre, si bien, podemos encontrar cantidad de entusiastas dedicados al desarrollo de aplicaciones para cada una de las plataformas disponibles, la pregunta es ¿nuestros escenarios empresariales pueden someterse a escenarios de este tipo? ¿donde quedan las mejores prácticas de metodologías de desarrollo de software ágiles o estructuradas? ¿Cuántos de estos entusiastas se preocuparán por la documentación, la seguridad, la usabilidad, las pruebas de software, el soporte, la arquitectura, el buen desempeño y la mantenibilidad de nuestras aplicaciones?
Me apalanco en este último tema para presentarles una perspectiva un poco más profesional, continuando con eso de lo que deberían tener en consideración empresas o proyectos cuyas aplicaciones móviles deban ser pensadas no momentaneamente o como utilidad de uso personal y es los procesos y las metodologías de software, mi tema de siempre, si bien, podemos encontrar cantidad de entusiastas dedicados al desarrollo de aplicaciones para cada una de las plataformas disponibles, la pregunta es ¿nuestros escenarios empresariales pueden someterse a escenarios de este tipo? ¿donde quedan las mejores prácticas de metodologías de desarrollo de software ágiles o estructuradas? ¿Cuántos de estos entusiastas se preocuparán por la documentación, la seguridad, la usabilidad, las pruebas de software, el soporte, la arquitectura, el buen desempeño y la mantenibilidad de nuestras aplicaciones?
Creo que a más preguntas como esas quisiera llevarlos cuando les hablo de consideraciones no técnicas, esto del mundo del desarrollo móvil no se trata simplemente de lograr encontrar un programador disponible entre la escasez, tampoco de que plataforma es común o no, temas como la dependencia de un solo programador por existir tan pocos disponibles, la cantidad de tiempo que tomaría implementar nuestra aplicación para cada uno de los dispositivos y plataformas, si voy a trabajar para una sola plataforma y tendré el presupuesto para que los empleados que trabajan para mi tengan un dispositivo donde corra mi aplicación o bien, si mi aplicación es de uso masivo cuantas personas usuarios potenciales de mi aplicación teniendo en cuenta sus edades, intereses, ubicación geográfica y el foco de mi aplicación, son consideraciones más importantes que pensar en quien es el más popular en el mercado.
Espero que algunas de estas consideraciones les sirvan de utilidad antes de emprender algún desarrollo serio de aplicaciones para móvil. Espero sus comentarios y hasta la próxima.
Sorey ;)
Imagenes tomádas de:
http://www.muycanal.com/wp-content/uploads/2011/10/tablets.jpg
http://www.redusers.com/noticias/wp-content/uploads/2011/10/smartphones-1912.jpg