Wednesday, August 29, 2007

Desarrollo web versus desarrollo win

Por Carlos Lucatti
Blog
Miembro de RosarioGX



Todos sabemos que en los últimos tiempos se ha intensificado el desarrollo de aplicaciones basadas en web. Este cambio de paradigma, por cierto inevitable, nos abre nuevas posibilidades antes impensables. Pero desde hace tiempo hay algunas cosas que me preocupan en este proceso de cambio que estamos viviendo.
Como ventajas de una aplicación web veo lo siguiente:
Posibilidad de que la aplicación sea usada sin cambios desde cualquier punto geográficamente remoto que trascienda los límites físicos de la empresa. Los empleados pueden trabajar en su casa, los supervisores pueden revisar datos y autorizar acciones aún cuando se encuentren en viaje, los gerentes pueden consultar estados desde cualquier parte del mundo aún en vacaciones (bueno… ellos son así…), los clientes pueden consultar sus cuentas corrientes o hacer pedidos on-line, los proveedores pueden tomar directamente las ordenes de compra desde la web y saber si sus pagos ya están disponibles, etc. etc. Estas son algunas de las ventajas desde el punto de vista de aplicación.
Desde el punto de vista tecnológico veo como ventajas lo siguiente:
El sistema funciona en cualquier computadora personal con capacidad para ejecutar un navegador. No se requieren configuraciones de hardware potente (disco, procesador y memoria). No se requieren instalaciones locales (en los “clients”) de componentes del sistema. Se reduce la necesidad de licenciamiento de componentes y sobre todo de componentes “propietarios”. Se reducen los esfuerzos de distribución de las aplicaciones (instalación y puesta en marcha) y por consiguiente los costos.
Otra ventaja pero desde el punto de vista social es que gran cantidad de gente (fuera de las empresas y sus trabajos) usa internet, con lo cual “saber navegar” comienza a volverse parte de nuestra cultura. Así, para las personas que se inician en un nuevo trabajo en una empresa y especialmente aquellas para quienes se trata de su primer trabajo será mucho más fácil adecuarse al uso de los sistemas de aplicación, ya que las interfases se “parecerán” mucho a los sitios que suele navegar.
Ahora pasemos a los aspectos que no se ven claramente.
Respecto a que la aplicación puede usarse desde fuera de los límites físicos de la empresa, esto es cierto si la empresa posee un vínculo a InterNet publicando su aplicación. No todas las empresas están en condiciones de hacerlo ya que para una empresa chica o mediana el costo del vínculo permanente puede ser caro. Además de esto, debe implementar una serie de medidas de seguridad reforzando todo lo que tenga que ver con posibles intrusiones vía su enlace al mundo (hackers) instalando y configurando routers y firewalls. Algo que antes no necesitaba y para lo cual ahora seguramente deberá contratar especialistas que además le cobrarán un abono de mantenimiento. Al analizar esto, las empresas ven que es “lindo” pero que no es tan necesario que se pueda usar la aplicación "desde afuera".
En el caso de una intranet donde hay ubicaciones geográficamente remotas (WAN) que están conectadas por medio de un vínculo privado, sí, se justifica ampliamente una aplicación web, de todos modos el vínculo debe existir igual.
En el caso de una intranet local, el beneficio solo se aplica a la escasa necesidad de recursos de máquina y esfuerzos de instalación y distribución de aplicaciones. Aún así, cuando las empresas compran una computadora personal compran las configuraciones de hardware estándar, o sea, máquinas tan potentes como para correr las aplicaciones Windows usuales hasta el momento. Los usuarios siguen necesitando correr aplicaciones de oficina que requieren más recursos. Difícilmente una empresa le pida a su proveedor de hardware renovar un parque de máquinas con configuraciones mínimas para correr solo un navegador. Mi conclusión es que no ahorrarán en hardware.
Hoy, la comunidad informática dice: “Las aplicaciones nuevas deben ser todas basadas en web”... ¿Todas?, Si, todas.
Este planteo es el que me preocupa y a continuación comentaré las razones.
Comencé a trabajar en informática en 1981. Desarrollaba sobre arquitecturas propietarias con pantalla de caracteres. Con el advenimiento de los desarrollos basados en Windows los usuarios comenzaron a demandar cada día nuevas comodidades en pantalla. Evidentemente el manejo de eventos por medio de botones, ventanas, idas y vueltas “controladas” le daban al usuario una posibilidad de hacer muchas más cosas y más rápido en su sistema. Cuando recordaban la rigidez de las validaciones a pantalla completa se referían a ella como la era por suerte pasada.
Hoy veo que los estamos obligando a volver. Las interfases web son mucho más rígidas que las interfases Windows y con menos posibilidades de interactividad. ¿AJAX?, si, pero la página web sigue siendo un formulario plano y rígido. Por eso, mis jóvenes colegas, les cuento que esta historia ya la viví hace varios años, y estamos recomenzando el ciclo. Ahora debemos decirle a los usuarios que las interfases no serán tan cómodas como antes. Pero seguramente me dirán que ... bueno, con un poco de esfuerzo adicional las interfases se pueden diseñar bastante más elaboradas y amigables. ¿Un poco de esfuerzo?, pregunto. Me parece que con mucho más esfuerzo.
Pasando a otra cuestión. La aplicación se ejecuta en un navegador que le da al usuario muchas posibilidades “justamente” para navegar. Ya que se nos ha recalentado tantas veces el cerebro para controlar la transacción del usuario, que no se corte, que pasa si se corta, que no salga de allí hasta que defina tal resultado, etc. etc. , ¿cómo manejaremos la idea de que en medio de una transacción compleja como ser “Definir el plan de producción semanal” , el usuario pulse graciosamente un link que lo lleve a la página de espectáculos antes de confirmar? ¿y vieron además con qué facilidad se puede cerrar el navegador?
Seguramente los más avanzados en esta tecnología me dirán que hay formas o técnicas o productos adicionales que eviten estos problemas, pero coincidirán conmigo en que no son cuestiones de conocimiento común.
Hablando de navegadores, creo que fueron inventados para “ver” páginas de internet y saltar entre ellas, pero no fueron concebidos para contener aplicaciones así que todas las nuevas facilidades que se le están incorporando son forzadas para darles más habilidades y más seguridades porque les queremos poner en las espaldas algo para lo que no han sido concebidos. Creo que es necesaria una nueva generación de navegadores.
Me ha tocado desarrollar sistemas en los cuales el usuario debe trabajar a un ritmo muy veloz y por ello, a lo largo de la evolución de las aplicaciones me han solicitado sutilezas importantes en la interfaz. Cosas que son fáciles y prácticas de hacer en Windows. El usuario debe trabajar muy rápido con múltiples ventanas de selección, con manejo de diferentes tipos de productos para los cuales existen diferentes interfases de tratamiento, leyendo códigos de barra, imprimiendo permisos de despacho, emitiendo remitos, etc.… y todo muy rápido con toques de teclado. ¿Cómo haremos esto con una interfaz web más rígida y que además hace un uso mucho más intenso del mouse?
El desarrollo web es más complejo que el desarrollo Windows. Insume más tiempo. Si queremos que nuestras aplicaciones luzcan decentemente necesitamos asesoramiento de diseño o “look” ya que los editores de forms web son muy limitados (por el html en sí y por las tablas donde debemos ubicar los objetos). Si queremos darle ciertas funcionalidades que antes eran propias de Windows debemos recurrir a programación en JScript por ejemplo y comenzar a mezclar cosas de diferentes mundos que era una de las críticas que más nos hacían acerca del paradigma client/server.
¿Ya hemos preparado a nuestros jefes o a nuestros clientes explicándoles que el desarrollo web es más caro en tiempo y dinero? ¿Cómo vienen reaccionando a esto?
Sin dudas hemos comenzado una nueva era en el desarrollo. Pero no debemos dejar de reconocer que hay varios puntos flojos por el momento y que son difíciles de resolver.
La tecnología seguirá avanzando como lo hizo siempre y espero que termine resolviendo estos problemas y conteste naturalmente estas dudas.
Bueno,…. ahora los dejo, tengo que seguir estudiando desarrollo web.

1 comment:

Alejandro Rinaldi said...

Me parece muy interesante el tema. Es mas, dice lo que pienso! Los sistemas full-web tienden a ser una moda asociado a que por ser full-web son modernos, novedosos o mejores.
Seria como cuando todo sistema tenia que ser desarrollado "orientado a objetos" o "en capas".
Pero como profesionales debemos diferenciar muy bien lo que es "moda" de lo que son beneficios y costos de cada opción.

saludos y felicitaciones.