domingo, 6 de noviembre de 2011

Consideraciones (no técnicas) para el desarrollo móvil

He usado este título indiscriminadamente ya que muchos de los puntos a tratar en este post son evidentemente técnicos, sin embargo llevan un llamado de atención y el decir que no son técnicas las consideraciones que escribiré es más para indicarle a los fanáticos de la guerra entre marcas de sistemas operativos y lenguajes de programación, que aquí no encontrarán nada de eso.

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?

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

sábado, 5 de noviembre de 2011

La política, las necesidades del negocio y la tecnología

Hace unas semanas estaba pendiente de escribir este post, justo ahora que recuerdo mi proyecto estancado, recuerdo también por que queria escribirlo, la idea, abordar un poco lo que sucede en el mundo de las Tecnologías de Información (TI o IT) cuando nos enfrentamos al desarrollo de proyectos de software siendo analistas de negocio, una posición que la verdad no muchos entienden cuándo su rol es ser desarrolladores y no tomadores de decisiones, o al menos, eso me sucedía a mi.

Desde hace 8 años me encuentro en el mundo laboral, he sido analista programador y pase de dar soporte por 3 años para compañias grandes a ser parte dele equipo de Investigación y Desarrollo de la casa de software donde trabajé durante cinco años, luego de eso terminé en otra casa de software siendo diseñador de software (no, nada de look and feel), en ese lugar terminé amando el UML y aprendiendo un poco de ser lider técnico de un equipo y cuasi arquitecto de software, ante la apatía del arquitecto que estaba encargado.

Pues bien, luego de ires y venires terminé estando una empresa del tipo de empresa que siempre me juré no estar si no hasta el declive de mi carrera profesional y teniendo como cargo ser analista de negocio, una experiencia sencillamente diferente.

Después de estar al margen durante un tiempo con pasos agigantados hacia atrás dando soporte, por fin fuí tenida en cuénta para cosas que valen la pena, y como en la mayoria de empresas grandes, las labores importantes de un analista se vuelven leer correos, hacer labores administrativas, seleccionar y supervisar a proveedores, ese rol tiene un montón de matices con los que no estoy de acuerdo y que terminan haciendo que los profesionales terminen por volverse seres obsoletos, pero ese es un tema de otro post.

Lo que me lleva a escribir es una experiencia que tuve en una presentación de un proveedor, de los pocos la verdad que me pudo dejar absolutamente atenta observándolo y escuchándolo por 3 horas continuas. Este señor Daniel, por su nombre de pila y de quien tengo que omitir su detalles por temas corportativos, después de explicarnos en que consistía su herramienta y de que mi jefe le preguntara como hacian para negociarla, presentó varios puntos que me dejarón impresionada, a mi pesar corporativamente hablando, pero admirada en el ámbito personal.

En su larga respuesta y explicación habló de varios puntos de los que espero espero transmitir con fidelidad dos de ellos:
  • La politica es más importante que la necesidades de negocio: Cuando mencionó esto la verdad es que no le entendí, sin embargo el explicó. Cuando uno va pasando por los diferentes estadíos de su carrera profesional (de ahí que les contara un poco de mi recorrido por que coincido totalmente con lo que dice este señor), cuando recién se esta empezando, tiende a pesar que IT, es quien manda, que la tecnología es quien dirige a los negocios llevándolos a evolucionar día a día, es apenas comprensible tener esa visión de las cosas, si te ubicas al pie de una montaña dificilmente vas a observar lo que sucede en el panorama general, y haciendo un símil, desde esa posición parece que si le pones pies a la montaña, pues va a salir andando, y te quejas constantemente de que justamente alguien con dinero y desde las altas esferas no le ponga pies a la montaña para que ande a un ritmo más acelerado.
Después de que has recorrido un poco el camino y te acercas a cargos que si bien no toman las decisiones directamente, influyen en algunas de ellas y están cerca de quienes si las toman, sucede que empiezas a comprender que los negocios se rigen por unas necesidades, esas necesidades son quienes llevan a los tomadores de decisiones a invertir en lo que de verdad necesita el negocio para cumplir con sus metas.
En este punto la queja es, ¿por que no hay mejores tomadores de decisiones? ¿por que no hay gente realmente capacitada para tomar esas decisiones? Personas informadas y que entiendan temas de vanguardia tecnológica, para no dejar que proveedores maliciosos les vendan oro falso, los días son pensados viendo como la desinformación de quienes más influencia tienen llevan a las empresas a caer en fiascos que eran tan obvios.
En ese punto me encontraba yo hasta conocer a esta persona y ahora viene su enseñanza, el dijo, saben, están muy equivocados, las necesidades no son las que llevan el negocio, es la política. En ese momento imagino mi cara de signo de interrogación ¿como qué no son las necesidades? ¿la política? ¿qué importa la política?. Daniel continuó su discurso explicando como si no hay un interés real de alguien en una alta esfera por llevar a cabo un proyecto, aunque ese proyecto sea una gran necesidad de tu empresa, nunca va a realizarse. Si yo sé que esto no es nada de otro mundo, y que es muy obvio, pero creo que yo jamás lo habia visto de esa forma. En efecto de eso se trataba mi proyecto, del cual lamento no poder comentar, pero es una necesidad que debería estar cubierta hace muchos años, por mera competitividad, y cuya decisión lleva retrasada meses por que nadie de un alto rango se encontraba interesado hasta ahora. Alguno dirá que es trabajo de un analista de negocio presentarle a los directores estas necesidades, pero en este caso particular, eso no ha faltado.
Analizando un poco más lo que dice Daniel, me impresiona el pensar que despues de unos meses cuándo al fin caen en cuenta que el mundo va más rápido de lo que va la compañia, y lo que era un deber ser, se convierte en una necesidad apremiante, entonces llega la búsqueda acelerada de proveedores, en la que mi trabajo actualmente es no dejar que contraten uno de esos que vende falsas expectativas. 
  • Nuestro producto y nuestro trabajo valen:  Creo que este subtítulo que le di no hace justicia con lo que significa este punto que voy a contarles, pero intentaré mostrarles la perspectiva que de hecho me hizo recordar uno de mis ex-jefes, Carlos, quien decia frente a un proceso de licitación al darse cuenta que su tarifa era más alta que la de sus competidores,que era el colmo que los otros competidores estuvieran arruinando el mercado, cosa en la que tenia mucha razón, y que si la empresa contratante decidia que nosotros no seríamos más los que trabajabamos para ellos por el precio, pues que así fuera, por que sus empleados y su trabajo tenian valor (Hoy desde la posición de ex-presidente de esa misma compañia seguro lo reconsideró)

    Algo similar nos estaba diciendo Daniel al hablar de su producto, ¿que como lo ibamos a adquirir?, la respuesta, simple, demostrándole que la política de nuestra empresa estaba dispuesta invertir en una herramienta como la suya, que tantas necesidades iba a resolvernos a corto, mediano y largo plazo.

    La verdad es que el tiene razón, lo malo es que en estos procesos de negociación donde el tira y afloja es constante, el sentó una posición muy difícil, nuestra empresa debía apostar a una inversión enorme, quizá no inicialmente, el de hecho no estaba solicitando que le fuese pagado inmediatamente el valor de su producto, pero exigía algo, que con la comprensión del primer punto en este post, es bastante difícil de prometer. La promesa que pedía era confirmarle que la política de la organización iba a estar comprometida con la adquisición del producto, en un futuro próximo.

    Como les comentaba antes, esto corporativamente hablando iba a sumergir a mi proyecto en el limbo, lastimosamente nadie podia comprometerse con lo que pedia Daniel, menos cuando la necesidad inicial era tan pequeña, aunque tuvieramos la comprensión de que al futuro sería mayor. A hoy mi proyecto sigue en el limbo, buscar otros proveedores después de conocer una alternativa que solucionaría tantos problemas futuros, ha puesto en desventaja a otros y otros más al saberlo no se han ni interesado en competir.

    Lo admirable, el punto que quería resaltarles de esta segunda parte es el hecho de que este señor se mantuvo y se ha mantenido firme en su punto hasta ahora, y la verdad que no creo que sea negociable, por las implicaciones técnicas de las que soy consciente, pero sobre todo por su firme covicción y conocimiento de que lo que tiene en sus manos tiene valor, y así mismo su herramienta se convierte en su caballo para librar batallas, en las que si bien puede que gane pocas, hasta ahora como el mismo nos lo dijo, los que se han comprometido, han obtenido la misma reprocidad en el compromiso y además los beneficios prometidos.
Bien pues, estas son dos lecciones que sirven para ver que sucede más allá del pie de la montaña, muchos de nosotros ansiosos y fanáticos de la tecnología pondríamos a las empresas en motores automáticos que supuestamente las lleven a ser más futuristas, mientras la dirección tiene una visión diferente de las cosas, pero si bien ellos se pierden algunos avances tambien se evitan cantidades de choques constantes por pretenter ir al ritmo de la tecnología tan cambiante que no esta dejando a los negocios posibilidades de adaptación, por que mientras se trabaja en un cambio, uno o dos más vienen en camino.

No se si haya que buscar culpables, pero respuestas seguro todos buscamos, ahora en mi posición de analista de negocio me confunde un poco alinearme en esas trés verticales, sugiriendo una implementación tecnológica viable, que satisfaga las necesidades de la compañia y que vaya con la política de la organización, que en caso de no existir se volverá una cadena de convencer a todos de que es lo que deberían hacer, y eso, eso si que es un trabajo, duro y largo.

Hoy puedo decir, que ya entiendo por que las grandes empresas parecen en algunos aspectos grandes dinosaurios obsoletos para aquellos que nos acostumbramos a estar actualizados en tecnología, hoy eso tiene más sentido y también mucha más razón.

Sorey García (@soreygarcia)


* Imagen tomada de Microsoft Office Online 2010