Etiquetas
Es muy habitual que cuando un servicio introduce modificaciones en sus programas o diseño, enseguida los usuarios critican duramente hasta los aspectos más superficiales: el color es malo, el espacio no es el adecuado, no se debería haber cambiado de lugar ese botón, debería haberse usado otro icono, ese enlace debería estar arriba y no abajo, la información se debería mostrar como estaba antes, etc.
Este tipo de críticas es proporcional a la popularidad del servicio o sitio. Pero voy a explicar algnas cosas. Aunque existen numerosos casos de decisiones muy estúpidas (prefiero no dar ejemplos, algunos son amigos… o yo mismo 😉 ), la mayoría de las empresas más populares tienen programadores y arquitectos de software muy buenos, no son idiotas. O al menos, no todos, la media no es más estúpida de la media de los que escriben en blogs y Twitter. Lo que pasa es que en el desarrollo web se suelen aplicar unas pocas reglas que no suelen ser conocidas por los no programadores:
- Experimentar. La única forma de saber si algo va a funcionar o es mejor que lo que había antes, es probarlo. Cuando se desarrolla un nuevo servicio, no se puede saber a priori cómo lo usarán sus usuarios, qué características serán las más usadas, cuáles las irrelevantes que quizás valga la pena desechar. Este tipo de experimentos son tan comunes que hasta le han puesto un nombre: balas trazadoras. Si quieres acertar en el objetivo, puedes pasar meses haciendo cálculos, o desarrollando aparatos y métodos muy complejos, de la capacidad explosiva exacta de la pólvora, peso de la bala, velocidades, aceleraciones, cambios de dirección, gravedad, resistencia del aire, etc. O puedes poner unas cuantas balas trazadoras que den información inmediata y así poder corregir sin necesidad de complejos y lentos cálculos previos.
- Cambios incrementales (para permitir experimentos). En la época del desarrollo web, los cambios constantes no sólo son deseables, son imprescindibles. No tiene sentido desarrollar módulos durante meses si no se sabe si serán usados o útiles, es mejor probar poco a poco, e introducir esas nuevas caratecterísticas que harán de balas trazadoras para el futuro desarrollo. No tiene sentido desarrollar una nueva versión (de programas o diseño) durante meses sin que sea probado por los usuarios. El momento que se publique, las quejas serán mucho más numerosas, y más caras de corregir y/o volver atrás. Hay que aprovechar al máximo posible la opinión de sus usuarios, y vale tanto para los programas como para el diseño: también se pueden hacer cambios incrementales en el diseño (vomo habéis visto recientemente en Google y Google+).
- Ciclos de desarrollo breves. No es como construir un rascacielo: hay que estar seguro de que lo que hacemos o usamos es adecuado, no se puede permitir que se caiga todo el edificio porque falló una de las vigas, o el viento genera más fuerzas laterales que no fueron tomadas en cuenta. Hay que estar muy seguro de comenzar a cavar los cimientos. Con los programas -y diseños- no es igual, no hace falta que se haya puesto el cristal hasta la última ventana para poder empezar a usarlo, se pueden solucionar problemas sin demasiados costes (siempre teniendo en cuenta de asegurarnos en el núcleo: seguridad, esquema fundamental de la base de datos, etc.). Mientras los módulos principales -la estructura básica- funcionen, los pequeños fallos se pueden solucionar rápido (en general son tolerados, e incluso no percibidos, por la mayoría de usuarios). Tampoco hay que hacer una «copia de oro» para estampar millones de CDs o DVDs, desplegar una nueva versión de aplicación web requiere esfuerzo y tiempo mínimos.
- La usabilidad no es una ciencia exacta (tampoco el diseño). Puedes tener los mejores expertos en usabilidad, pero la realidad es que hay pocas reglas objetivas, y éstas dependen de muchas situaciones. Lo que es deseable para un usuario novato, puede convertirse en molesto a los pocos días de uso. Lo que puede ser esencial para un experto, o para un programador, puede ser irrelevante para la mayoría de los usuarios. Lo que puede parecer una virguería de diseño o funcionalidad, puede ser sólo más bloating para los usuarios (y otros programadores). Lo que puede funcionar para un experto en usabilidad, quizás moleste a la mayoría (basta leer en Internet las críticas al sitio web de unos de los mayores gurús de usabilidad).
- Mediciones de uso. Las empresas hacen mediciones del uso de las diferentes funcionalidad de un programa, es muy sencillo en programas web. Por ejemplo, pueden descubrir que hay funcionalidades que nadie usa, pero que cargan innecesariamente a los servidores, o al navegador (los «javascripts» no son gratis). O que un botón secundario genera muchos clics innecesarios porque induce a confusión. Los programadores saben que descubrirán cosas como estas, aunque pasen miles de horas diseñando y discutiendo. Por eso a veces se prefiere poner límites a las etapas de diseño, y dejar que sean los usuarios los que den la información con su propio uso: lleva menos tiempo, y se puede solucionar rápidamente.
- Motivación. No hay nada más desmotivador para un programador que sus programas tarden eones en ser desplegados y utilizados. No hay nada más motivador para un programador que probar cosas nuevas, salirse de una idea o diseño precocencebido meses antes de que el programa tenga el uso actual. Los buenos directores de proyectos lo saben, y por eso suelen tomar la [acertada] decisión de reducir al mínimo los ciclos de desarrollo, y permitir experimentar con nuevas funcionalidades.
- Los errores son inevitables. Un programa nunca está libre de fallos, es inútil buscar la perfección. Puedes hacer todos los unit tests que se te ocurran, pero los programas son complejos, cuando lo usan miles, o millones de personas, siempre aparecen bugs y situaciones imprevistas. Un buen programador lo sabe, un buen director de proyecto, también, por eso se planifica antes: el tiempo para desarrollar un nueva característica, y el tiempo que llevará corregir los fallos que encuentren los usuarios. Lo fundamental es ser muy cuidadosos y estrictos con temas de seguridad, privacidad, datos, y el tronco principal de la aplicación (nunca debe caer completamente), pero más flexibles en el desarrollo de nuevas funcionalidades.
- Resistencia al cambio. Los programadores y directores de proyectos saben que los usuarios son muy resistentes a cualquier cambio. Saben que estos se quejarán mucho inmediatamente después de cualquier cambio, sin tener en cuenta las reglas anteriores. Por eso, la mayoría de estas quejas son filtradas e ignoradas, para poder concentrarse en aquellas que sí son importantes.
Estimados usuarios, antes de quejaros de cualquier cambio, tened en cuenta los que os comenté antes. Bueno, en realidad os mentí.
Aunque os puede servir como información básica, estas no son recomendaciones para usuarios, está bien que sean así. Los puntos #1 a #8 son recomendaciones a mis colegas programadores y directores de proyectos. Sobre todo para aquellos que todavía enfocan un desarrollo web como si fuese una aplicación de hace 20 años. O peor, con la analogía errónea de construir rascacielosm y luego se quejan de la falta de motivación de sus programadores, o no entienden por qué a los usuarios no les gusta el último diseño sobre el que han estado trabajando un año.
Recomiendo unos pocos libros que leí, o releí, recientemente y que considero imprescindibles:
Pingback: Consejos para usuarios de programas webs
Buen artículo, no podría estar más de acuerdo..
De los libros de la lista, Code Complete es el único que leí, y es indispensable para cualquier programador con o sin experiencia.
Con respecto a usabilidad web, recomiendo Don’t make me think.
Saludos!
Se te ha colado deshechar, en lugar de desechar. Por lo demás, interesante artículo. Sólo añadir que un problema de las críticas a los cambios es que las más negativas siempre son las que hacen más ruido y te hacen pensar que son mayoritarias.
Hostias! Este postda para mucho sushi! Ademas estoy con el ipad (perón por los typos) y es un tema delicado porque abacrca muchos ámbitos del SDLC.
Dejo unas pinceladas:
1.- experimentar no es la única manera de crear software ni evolucionarlo. De hecho a veces es imposible meer mano a según qué sn estar muy seguro de lo que se está haciendo. Para la mayoría de casos y usuarios colaborativos funcionamu bien.
2 y 3.- en general es el principio de las metodlogías ágiles, pero sólo funciona si el usuario colabora, no ya en el diseño, sino en el proceso de desarrollo. A veces el usuario «pasa» o es directamente hostil. Cuando s n SAS de pago, el usuario tiende a pensar que «el que paga manda» y no está especialmente colaborativo.
Además, los ciclos incrementales introducen overhead en el timpo total de desarrollo (importante en la facturación y coste) paraadaptalo continuamente a las necesidades de los usuarios.
Las metodologías ágiles y el desarrollo incremental son cojonudos, pero hace falta una indeterminación (no saben qué quieren) y un usuario/cliente colaborativo.
4 y 5.- 100% de acuerdo
6.- hay muchas cosas que desmotivan al programador. Diría que a laro plazoes imposible tener un programador motivado, como mucho endrá pequeñas alegrías.
Al programadir creativo, le jode la monotonía, pero a menudo tiene que soportar limitaciones tecnológicas (¿Cuántos programan bajo na red corporativa windows y querrían un mac o un Linux?) o de infraestructura (el sistema de cliente es uno y no es el más adecuado para programar esta solución o el lenguaje de programación no es eficiente o está anticuado)
Por otra parte hay programadores «currantes» que les da igual todo eso: trabajan duro y sacan el software en tiempos récord con tasas de errores bajísimas. Los demás condicionantes les dan igual y al acabar la jornada se van a casa a disfrutar de la vida.
7.- en temas de usabilidad nada como una persona que pruebe cada release antes de salir. Mejor si no es a misma persona quelo ha programado. Los unit tests ayudan, pero en ciclos rápidos orovocan overhead y puen no ser tan buenos como una persona. (o sea que de acuerdo)
8.- depende. Si los usuarios estan contentos ¿Por qué cambiarles lo que usan con comodidad? Cualquir ambio tiene que ofrecer como mínimo lo mismo que tenían antes. Si los usuarios no están contentos, cualquer cosa que funcione ls servirá. Las operaciones perfectivas siemp se pueden hacer, pero alguien tiene que «pagarlas» y a menudo los usuarios piden no destinar tiempo de desarrollo a esas funcionalidades y centrarse e n mantenimiento evolutivo (mas funcionaidades)
De los libros que pones (gracias) algunos los he leido (son «must read» de hecho) los otros los pongo ya en la wishlist de Amazon 🙂
En general es buen post siempre y cuando desarrolles un servicio continuado como menéame en el que hay una comunidad y los usuarios no pagan por serlo. También tienes libertad tecnológica y decides el lenguaje (aunque seguro que preferirías haber programado django) y la plataforma de explotación (nadie te obliga a usar WebSphere sobre OS/390)
De hecho te diría que es una suerte que tengas esos condicionantes; así no me extraña que te lo oases pipa! 😀
Yo digo que cuando se lanza un producto y/o se hace un nueva versión, siempre tienes que decidir como debe funcionar, cualquier punto de estaciomiento o parada y continue tiene su parte de decisiones duras,
Lo que no se dice es las partes que has decidio no publicar en esa versión, se les antojen perfectas a un usuario inspirado o viajero por tu producto.
Concretando, en cualquier programa que se realie, se presente, se exponga al público, tenemos que tener en cuenta todo lo que no hemos hecho, y saber que es lo que queremos y algunas críticas y alabanzas nos vienen a confirmar nuestras espectativas.
Pingback: Consejos para usuarios de programas webs « Destacados
Soy un informático que está volviendo a sus orígenes. Después de muchos años en la gestión vuelvo a programar y estoy ilusionadísimo. Se agradecen tus consejos y tus referencias, seguro que sabremos aprovecharlo como se merecen.
Una reflexión que me surge con tu post, el mundo del software libre está muy desarrollado en cuanto a compartir código, pero en el resto de facetas de la ingeniería del software quizás no tanto. ¿Crees que esto es así? y en su caso ¿Porqué crees que esto ocurre?
Las bases bien desarrolladas producen éxito en cualquier proceso o proyecto. Excelente sus recomendaciones: básicas y profundas
@ricardo,
Aunque se que estás hablando de programas Web, harías bién en enviarle esta «guía» al equipo de desarrollo de Gnome-Shell (Gnome3) a ver si así reconocen su error y piden perdón públicamente.