Ajax, o como prefiero llamarlo XMLHttpRequest Asynchronous JavaScript And XML

Ya hace un tiempo que he estado trabajando diseñando interfaces de sistemas Web utilizando el famoso Ajax y creo que es tiempo de compartir algunas conclusiones personales que he obtenido.

Es más difícil de diseñar

Si es así, y no es que no se pueda hacer es solo que lleva mucho más tiempo y es algo que todos los participantes del proyecto deben tener en cuenta.

Es más difícil de explicar
En el método tradicional era fácil solo había que hacer unos cuantos wireframes y diagramas de navegación con su descripción y todo el mundo entendía.

Utilizar Ajax implica que hay eventos que ocurren en la misma página y que seguramente involucren un cambio, como animaciones o cosas que aparecen y desaparecen, para estos casos además de los entregables anteriores hay que realizar Storyboards y descripciones más detalladas que expliquen como funciona la página.

Es más difícil de programar
La página ya no es solamente un elemento que “dibuja” lo que le dice el servidor, la página ahora tiene inteligencia y puede encargarse de ciertos procesos lógicos de la aplicación.

Esto obviamente hace que la página sea más difícil de programar, pero lo más complicado es definir cuales procesos se harán en la página y cuales en el servidor. Por un lado si pasamos procesos a la página el tiempo de respuesta para el usuario puede ser más rápida que si se consulta en el servidor, pero por el otro lado estaremos aumentando el peso de la página y dependiendo de la capacidad de proceso del cliente, cosa que en Internet desconocemos.

Lograr este equilibrio es unos de los mayores desafíos de desarrollar un sistema con Ajax.

Los browsers no están preparados, aún.
Los browsers fueron hechos originalmente para funcionar bajo el modelo tradicional de la Web y se les hicieron adaptaciones para funcionar en el modelo de Ajax, las herramientas que tienen para soportar lo que Ajax solicita son limitadas.

Se necesita de un Maquetador/Programador o de un Programador/Maquetador
Con esto quiero decir que para armar estas páginas se necesita de un perfil que escasea, un maquetador que sepa javascript no es suficiente, debe tener más conocimientos de programación avanzada y conseguir un programador que se “rebaje” a saber html y javascript también es complicado.

Parece, pero no es
Si, parece que se pueden hacer aplicaciones con las funcionalidades de las aplicaciones cliente-servidor, pero no.

Que se puedan hacer ventanas flotantes, live search, animaciones, etc. no significa que funcionen de la misma manera, hay ciertas cosas que no se pueden, o no son recomendables de hacer.

Javascript no es lo suficientemente potente
Para las animaciones los drag and drop y esas cosas javascript si sirve, donde se queda un poco corto es en el tema de parsear xml, cambiar formatos, etc. aunque claro esas cosas no se deberían hacer en el cliente pero hay veces que no queda otra.

Ajax es una palabra demasiado fácil
Si Jesee James Gareth le hubieran dejado el antiguo nombre XMLHttpRequest a los encargados de venta nunca les hubiera interesado y no lo estarían repitiendo como si vendieran limpiador en polvo en una feria y además XMLHttpRequest suena a complicado y le tendrían más miedo o por lo menos respeto.

Es fantástico!!!
La cantidad de cosas que se pueden hacer y lo mucho que mejora la experiencia del usuario en muchos aspectos es genial, creo que es un gran avance para los sistemas Web y que aun le queda mucho camino por recorrer.

Y como siempre
Las herramientas hay que usarlas cuando el usuario, la tarea y el contexto lo ameriten, no tenemos por que cargar con una pesada caja de herramientas si solo queremos clavar un clavo.

Mar 09 |Usabilidad

9 Comentarios en “Ajax, o como prefiero llamarlo XMLHttpRequest Asynchronous JavaScript And XML”

stan 10 de Marzo a las 12:00 pm    

Interesantes reflexiones sobre ajax, sin duda la parte que no me motiva es la de agregar peso al sitio y la de que varios navegadores aun no estan preparados para soportar ajax.

Habra que ver donde queda el modelo estandar y la accesibilidad de los sitios en un futuro muy cercano, cuando los que hoy hablan de hacer sitios simples y accesibles con estandares comiencen a explotar ajax.

patoloco 10 de Abril a las 8:45 am    

Ajax, no es un miembro de la liga de la justicia?

Claudio 1 de Octubre a las 10:53 am    

Excelente aporte… te felicito por tu blog.

Javier 13 de Febrero a las 12:39 pm    

La verdad, es que tu comentario resta puntos, no puedo creer que digas las barbaridades que decis de ajax y lo peor la forma en la que lo decis.
hay muchas cosas que cuando evolucionan se vuelven mas complejas de explicar, y no por eso las dejamos de usar. no voy a entrar en detalle, porque si la complico mucho seguro que no lo vas a entender.
saludos

sebadog 13 de Febrero a las 1:01 pm    

Javier
Primero te quiero decir que el tono que utilizas para hacer comentarios no es el que a mi más me gusta, por un simple problema de respeto.

Punto número uno, no me conoces, no sabes absolutamente nada de mi más alla de lo que esta publicado en este blog y creo que esa no es información suficiente como para decir que no voy a entender lo que tienes para decir.

Segundo, se ve que tienes una opinión bastante formada de Ajax y de mi artículo pero lamentablemente no la expusiste, solo dices que no te gusta y listo. Las cosas que digo pueden ser barbaridades si, pero si no me explicas porque piensas eso no podré corregirlas, o por lo menos saber si en realidad son tus opiniones las que son barbaridades.

Tercero, nunca dije que hay que dejar de usar Ajax, creo que en ese punto no me exprese bien yo solo quería decir que hay que tener cuidado y que hay que encarar el problema de una manera diferente a lo que se esta haciendo en algunos casos, por lo menos desde mi experiencia.

Cuarto, te invito a que continuemos esta charla y que entres en detalle, para que por lo menos me des la oportunidad de comprobar si lo voy a entender o no.

Gracias

Esteban 6 de Noviembre a las 9:59 am    

Realmente como Programador HTML me siento enojado con tus comentarios, fijate que si no fuera por nosotros los dibujos y barbaridades que haces los diseñadores nunca llegarían a verse en ninguna web.

sebadog 12 de Noviembre a las 1:38 pm    

Esteban:

Lamento si te ofendí, la verdad que no fue mi intensión, tanto así que no se que parte es la que te molesta. Por favor si puedes detallarme un poco más que es específicamente lo que no crees correcto me serviría para corregirlo.

Gracias.

Pirata21 11 de Diciembre a las 5:45 am    

Bueno, ya que estamos aca para opinar me gustaria dar mi humilde opinion, empezando que Ajax o como lo llamaria yo (Asynchronous JavaScript And XML)ya que Ajax no necesariamente tiene que usar el objeto XMLHttpRequest.
Ajax, siempre ha estado relacionado al objeto XMLHttpRequest, que se encarga de generar una llamada remota y asincrona a nuestro servidor para poder así recuperar datos almacenados. Pero debido a los problemas de cross-browsing se ha tenido que condicionar la creación de este objeto, usando un ActiveX en caso de ser IE6 o inferior.
Las llamadas asíncronas que se ejecutan en el cliente y por detras se mantiene una comunicacion asíncrona con el server, por lo tanto se pueden realizar cambios en determinadas partes de la pagina sin la necesidad de que las mismas sea recargada, esto significa aumentar la interactividad, velocidad y usabilidad en sistema.

Sebastian no creo que Javascript se este quedando corto, Ajax por si solo no es una tecnología. Es realmente muchas tecnologías juntas, cada una floreciendo por su propio mérito, uniéndose en poderosas nuevas formas. AJAX incorpora:

* presentación basada en estándares usando XHTML y CSS;
* exhibición e interacción dinámicas usando el Document Object Model ;
* Intercambio y manipulación de datos usando XML and XSLT ;
* Recuperación de datos asincrónica usando XMLHttpRequest ;
* y JavaScript poniendo todo junto.

El modelo clásico de aplicaciones Web funciona de esta forma: La mayoría de las acciones del usuario en la interfaz disparan un requerimiento HTTP al servidor web. El servidor efectúa un proceso (recopila información, procesa números, hablando con varios sistemas propietarios), y le devuelve una pagina HTML al cliente.
No creo que sea mas dificil de programar porque se use Ajax, despues de agarrarle la mano a lo que se quiere hacer, si bien el tiempo es un poco mayor, el valor agregado que se obtiene es mayor, inclusive ahora estan surgiendo decenas de Frameworks, que se encargan de desacoplar la comunicacion con el servidor, exponiendo metodos del mismo, para que puedan ser usados directamente por el cliente, tal es el caso de DWR, Ajax.Net, etc.. entre otros., esto reduce aun mas la complejidad de la programacion ya que gracias a estas herramientas, se puede ademas trabajar con los tipos de datos nativos del servidor de forma totalmente transparente.

Capaz que lo que le molesto a esteban es ese “rebajar a hacer HTML”, a mi tambien me molesto un poco.

Saludos

sebadog 11 de Diciembre a las 7:56 am    

Pirata21:

Antes que nada ¡Gracias! es bueno finalmente poder tener una conversación con alguien.

Hablemos primero de el infame “rebajar a hacer HTML” el cual obviamente no pretendía ofender a nadie y te paso a contar porque escribí eso. Este post lo escribí hace ya casi 2 años y es ese tiempo estaba trabajando par aun cliente que quería hacer la aplicación “Ajax” (se que esta mal dicho pero se entiende) mas grande que yo hubiera visto hasta el momento y para eso se necesitaba gente que la programara por lo tanto tuve que ver muchos CVs y hablar con bastante gente.

Revisando los CVs te dabas cuenta de que había dos tipos de perfiles que enviaban sus CVs uno era el de programador y otro el de maquetador. Como nosotros estábamos buscado alguien que supiera Javascript obviamente era lo primero que buscaba en el CV y me di cuenta de una diferencia que había entre los CVs de los programadores a los de los maquetadores.

En los de los programadores (no todos obvio) primero escribían todo lo importante, los lenguajes, frameworks, bases de datos y ese tipo de cosas y después al final había un apartado para “otras cosas” y por lo general ahí encontraba “javascrip” o “Ajax”. Además después en las entrevistas muchos decían “se esto y esto y esto otro… yyyyy…ah si javascript” en tono de “lo se porque es fácil y alguna vez hice algo pero ta”.

Ahora te cuento lo que me pasó con lo maquetadores. En sus CVs por lo general
estaba toda la parte de divs, css, estándares, etc y después por lo general agregaban “conocimientos” de javascript, ajax, etc. básicamente esto significaba que sabían hacer cosas como apagar y prender capas, animaciones y ese tipo de cosas mas visuales pero poco de lo importante digamos.

Esta fue mi experiencia personal hace 2 años ya y fue por esto que escribí:

“un maquetador que sepa javascript no es suficiente, debe tener más conocimientos de programación avanzada y conseguir un programador que se “rebaje” a saber html y javascript también es complicado.”

porque de verdad, en esa época a mi me dió la sensación que la mayoría de los programadores de los que vi el CV o entrevisté, consideraban Javascript un lenguaje menor con poca potencia y que solo servía para hacer “dibujos y barbaridades” como les dice Esteban, o interfaces como prefiero llamarlas yo.

La cosa cambió mucho ahora (a nivel local estoy hablando) porque hay muchos más programadores que, por suerte, se están más interesados y le dan más pelota a la programación de interfaces, cosa que antes había pero eran re difíciles de encontrar.

Así que perdón si ofendí a alguien no fué mi intención.

Como se me fue la mano con la explicación del “rebajar” y como estoy de acuerdo en la mayoría de las cosas de tu comentario, voy a dejar la cosa por acá, no si antes agradecerte nuevamente por la conversación.

Gracias.

Deja tu comentario