Ciencia de Datos y Experiencia de Usuario

La ciencia de datos no es algo en lo que una persona pueda especializarse en poco tiempo y es, sin embargo, una de las carreras más tendenciosas de los últimos cinco años. Si éste es un perfil profesional único como el de Experiencia de Usuario (UX) el tiempo lo dirá. Han pasado ya veintiocho años desde que Don Norman se llamara a sí mismo ‘User Experience Architect’ y al menos cincuenta desde que se hablara de la Interacción Persona-Ordenador.

Pero ¿cuál es la relación entre estas dos profesiones? ¿debe un especialista en UX saber algo sobre ciencia de datos? ¿debe un diseñador aprender a programar?

En este artículo me gustaría explicar por qué creo que es importante entender qué es la ciencia de datos y cómo puede aprovecharse desde el diseño de experiencias.

Cuantificando la Experiencia de Usuario

Si ya es difícil diseñar experiencias más de uno pensará que es casi imposible cuantificarla. Si bien no todos los factores que influyen en la interacción y la experiencia con el producto final pueden ser medibles, existen multitud de datos relacionados con la misma que pueden recogerse y analizarse para guiar el proceso de diseño:

  • Datos descriptivos de los usuarios (datos demográficos o tecnología que usan).
  • Datos de actividad y comportamiento (contenido que visitan, búsquedas, interacciones, tiempo que dedican…).
  • Conversión de objetivos.
  • Datos sobre la ejecución de tareas específicas (éxito de la tarea, duración, eficiencia, errores, satisfacción, aprendizaje).

Hasta ahora, todos estos datos los hemos venido interpretando de forma puntual y aislada buscando dar respuesta a algunas de las preguntas más importantes que nos hacemos durante el proceso:

  • ¿Cómo son nuestros usuarios? ¿cómo han llegado hasta mi producto?
  • ¿Qué necesidades de información tienen? ¿cómo interactúan para conseguirla?
  • ¿Han realizado determinada acción?
  • ¿Qué contenido funciona mejor que otro?
  • ¿Consideran que el producto es usable?

Read more

Programar es difícil, pero no imposible

¿Que aún no sabes programar? ¿Cómo es posible? Todos deberíamos programar. Los diseñadores, a programar porque si no no hablaréis el mismo idioma que los desarrolladores. Las mujeres, venga ya chicas si es muy fácil y sabemos que sólo os gustan las cosas si son fáciles. Los niños de cuatro años, pero ¿a qué estáis esperando? ¿no os gustaría ser CEOs de una empresa a los once? Desde luego si no sabes programar es porque no quieres, todo el mundo lo hace… ¡es muy fácil! MENTIRA.

Ya está bien de endulzar una práctica como la programación para que se subestime y de esta forma resulte más popular. Ya está bien de construir falacias acerca de la tecnología. Programar es difícil. Programar requiere de entender bien el problema que se quiere resolver, de ser capaz de diseñar y expresar la solución en un lenguaje de programación (ahí los hay más sencillos o más complejos) y de ser capaz de validarlo a prueba de fallos.

¿Qué es programar?

Hace poco me preguntaron cómo explicaría a una persona que no sabe nada de programación qué es programar. Mi respuesta fue más o menos esta:

Programar es la forma que tenemos de decirle a una máquina (generalmente un ordenador) lo que debe hacer y cómo debe hacerlo, a este conjunto de instrucciones lo llamamos programa. Es lo que hace posible que tengamos aplicaciones en el móvil, que tengamos Facebook, o que tengamos coches autoconducidos. El lenguaje de programación más básico es el binario, unos y ceros (pasa o no pasa corriente por un circuito), pero esto es muy difícil de manejar por humanos. Por esto se crearon lenguajes de programación de alto nivel, más cercanos al lenguaje natural, de forma que las instrucciones que escribimos se traducen automáticamente al binario y con la ventaja de que aprenderlo sea tan fácil como aprender un idioma. Como con los idiomas existen muchos lenguajes de programación, algunos de ellos están especializados en tecnologías diferentes, por ejemplo, para web, videojuegos, procesamiento de datos, etc. Pero la gran mayoría tienen muchas características en común.

Para programar se requiere desarrollar un pensamiento abstracto a diferentes niveles, a veces necesitarás conocimiento matemático, otras veces del lenguaje natural, otras veces de las arquitecturas sobre las que programas, otras sobre las personas que lo utilizarán… y otras veces todo a la vez.

Sin embargo,  no es imposible aprender a programar y depende mucho del lenguaje y entorno de desarrollo que lo hagas. Requiere práctica y tiempo para asimilar ciertas ideas, como todo. Hay ciertos lenguajes que son más agradecidos al principio, al igual que tocar el piano no requiere de técnica para ‘escuchar’ los primeros sonidos, hay lenguajes de programación que permiten ‘ver’ rápidamente los resultados como pudiera ser Javascript. No podemos olvidar que tanto el piano como la guitarra requiren años de maestría para poder crear buenas melodías y donde el estilo musical es importante.

¿Debería aprender a programar?

Depende. Si alguna vez te has preguntado esto imagino que es porque en algún momento te has planteado acercarte a alguna disciplina relacionada con la tecnología directa o indirectamente, o simplemente porque tienes un smartphone, una consola, una tablet y sientes curiosidad por saber qué pasa ahí dentro.

Saber programar tiene claros beneficios psicológicos, te prepara mejor para el mundo laboral del futuro y te ayudará a desarrollar tus propias ideas.

No necesitas estudiar una Ingenería para aprender a programar, las Ingenerías persiguen dotar de unos conocimientos más amplios sobre tecnología a quienes las cursan y programar es tan sólo la herramienta fundamental que hace tangible su trabajo.

Los lenguajes de programación pueden ser expresados tanto por ingenieros/as, como por artistas, científicos/as, estudiantes, administrativos/as, filósofos/as y cualquier otra persona que tenga un ordenador propio y tiempo para dedicarle.

Aprender programación es una de esas cosas que cada vez más están al alcance de cualquiera, existen cientos de recursos online, nunca antes la experiencia del aprendizaje había sido tan accesible y si de algo versa la web es de contenidos relacionados con la programación.

La oportunidad para adquirir este conocimiento es clara, las posibilidades de lo que se puede hacer son infinitas y la necesidad de diversificar las aplicaciones, los enfoques y las personas que la usan como herramienta creativa o de trabajo es cada vez más acuciante. No puedo más que animarte a intentarlo, a probarlo durante un tiempo. Empieza por resolver un problema que tengas tú, diviértete y coge soltura. Y sobre todo comparte.

No es fácil, pero sí posible.

Semana #1 – Intro a la Ciencia de Datos

La Ciencia de Datos comienza, casi como cualquier ciencia, motivada por un deseo de curiosidad. En este caso preguntas que hacerle a los datos. 

Es posible que los datos no contengan la respuesta, pero el deseo de preguntar junto con el entendimiento de la naturaleza de los mismos nos puede ayudar a obtener respuestas y descubrimientos.

Los tipos de análisis de datos que se pueden hacer podrían clasificarse como

  • Descriptivo
  • Exploratorio
  • Inferencial
  • Predictivo
  • Casual
  • Mecanístico

Algo básico para cualquier persona que comience en este área es entender que hay que evitar caer en los siguientes errores

  1. Correlación no implica causalidad
  2. Sobreajuste: interpretar un análisis exploratorio como predictivo
  3. Análisis descriptivo que no se puede inferir
  4. Interpretar un análisis exploratorio como inferencial

Por otra parte hemos aprendido a preparar nuestro entorno de trabajo con R usando R-Studio y dejar nuestras cuentas de Github listas para empezar a trabajar.

Este primer curso está planificado en cuatro semanas pero la verdad es que ha resultado bastante fácil avanzar ya que queda todo en el ámbito introductorio. A la espera de que me evalúen el primer ejercicio me he apuntado al segundo curso de la especialización: R Programming (seguro que éste sí requiere de más tiempo).

Lecturas recomendas para el comienzo del curso

Toma de contacto con Android Studio

Cuando leí el post de mi ex-tutor JJ Merelo hablando sobre las competencias de un ingeniero informático en la que incluía Usabilidad y Accesbilidad entre ellas, me vino a la cabeza si yo, como diseñadora de UX con pasado ingenieril había hecho suficientemente bien el resto de mis deberes técnicos.
Creo que hay muchos debates abiertos sobre cómo de puros o mixtos deben ser los perfiles profesionales dedicados a la experiencia de usuario. Cuanto más especializados más posible es alcanzar la maestría, cuanto más variado mejor visión y capacidad de adaptarse en la práctica se tiene. 
No creo que se trate siempre de mantener un balanceo o de firmar con sangre tu postura para tu desarrollo profesional. Sin embargo creo que como diseñadores o desarrolladores, la creatividad es suficiente aliciente para empujarte a aprender algo nuevo. 
Dicho esto, y como prometí, me he puesto las pilas con Android Studio como entorno de desarrollo no sólo para conocer mejor como llevar ciertos diseños basados en Material Design a la práctica, sino para ganar recursos en cuanto mis adormiladas habilidades técnicas.

Instalación de Android Studio y el SDK

Ha mejorado mucho desde la beta y ahora resulta muy inmediato y sencillo. No tuve problemas siguiendo los pasos descritos en la web.
Es importante aprovechar y configurar algunos de los dispositivos virtuales con los que vayas a trabajar normalmente. Si el AVD de Android te resulta pesado puedes tirar de la versión gratuita de Genymotion (recomendado en los cursos de Treehouse).
Pocos apuntes más añado, como decía JJ, instalar y configurar equipos es una habilidad básica 😛 y si sigues las “instrucciones” no tendrás muchos problemas.
Cosas importantes (de un vistazo) que me apunto para tener en cuenta:
  • Estructura de un proyecto: mantenerlo todo bien organizado y localizable.
  • Vista de diseño: imprescindible en cualquier IDE.
  • Editor de traducciones.
  • Ventana de mensajes.
  • IntelliJ.
  • El fichero de recursos R.java. 
  • Y una novedad: añadiendo la actividad padre de una actividad es suficiente para que la interfaz use y muestre el botón Up automáticamente. 
Tras haber echado este primer vistazo a las herramientas disponibles y a los aspectos mencionados, creo que ya me puedo poner con el API Guide para cononcer bien qué capacidades están disponibles en el framework y cómo es la mejor forma de utilizarla. 
¡Mañana más!

Buenas prácticas UX para desarrolladores (Android)

Una de las secciones que más me gusta de las guías de estilo para desarrollar aplicaciones Android es la titulada “Best Practices for User Experience & UI”. En este apartado se recogen recomendaciones y buenas prácticas para que al construir tu app te asegures que está bien hecha y satisface a los usuarios a los que la diriges.

La razón por la que me gusta es porque está incluida bajo la sección de Develop > Training lo cual indica que si bien un desarrollador no tiene por qué ser experto en Experiencia de Usuario, considerar al usuario como parte del desarrollo le facilitará alcanzar un grado de calidad mayor en sus desarrollos.

Los puntos que recoge esta sección son los siguientes

  • Diseñar una navegación eficaz
  • Implementar una navegación eficaz
  • Notificar al usuario
  • Añadir una funcionalidad de búsqueda
  • Diseñar para múltiples pantallas
  • Diseñar para la televisión
  • Crear vistas personalizadas
  • Crear interfaces de usuario con compatibilidad hacia atrás
  • Implementar accesibilidad

Aunque se podrían añadir y matizar, estas subsecciones destacan la necesidad de que el código y la funcionalidad involucrada en una app deben existir también para dar soporte a una buena usabilidad y experiencia de usuario. Este no es el debate de si “las experiencias se diseñan” o no, pero de ser así, estaríamos diciendo que, desde luego, también se programarían, puesto que la calidad del producto final determina la relación a largo plazo entre éste y el usuario y por tanto las potenciales experiencias que pudieran obtener mediante su uso.

Porque, al final, de esta ensalada todos/as deberíamos picar.

Otro post relacionado:

Designing and developing HTML5+CSS3 webistes and mobile apps

In my previous post “CSS3 Tools” we saw I few well-known websites which provides frameworks and tools to start with CSS3.

Here, I’d like to complete and extend that list with more useful frameworks, libraries and other assets to play with the new version of the html markup.

Applications

Libraries

Frameworks

Helpers

Documentation and Books

I’ll update with more resources soon, just keep tuned.

CSS3 Tools

Digging into web and gathering recommendations, I’ve created this post with a set of tools for CSS themer who wants to develop with the latest version of cascade style sheets CSS3.

Hope you find them useful, too.

Modernizr

Open-source JavaScript library that helps you build the next generation of HTML5 and CSS3-powered websites.

Selectivzr

JavaScript utility that emulates CSS3 pseudo-classes and attribute selectors in Internet Explorer 6-8. Simply include the script in your pages and selectivizr will do the rest.

CSS3.Me and CSS Generator

CSS3 Generator helper tools.

CSS Template layout mode

This specification is part of level 3 of CSS (“CSS3”) and contains features to describe layouts at a high level, meant for tasks such as the positioning and alignment of “widgets” in a graphical user interface or the layout grid for a page or a window, in particular when the desired visual order is different from the order of the elements in the source document.

Font Dragr

A revolutionary way to test custom fonts in the browser. No coding, no uploading, just drag and drop.

Compass and Sass.

Compass is an open-source framework that uses Sass.:an extension of CSS3 which adds nested rules, variables, mixins, selector inheritance, and more. Sass generates well formatted CSS and makes your stylesheets easier to organize and maintain.

CSS3 Cheat Sheet.

A complete listing of all the properties, selectors types and allowed values in the current CSS 3 specification from the W3C. Each property is provided in a section that attempts to match it with the section (module) that it is most actively associated within the W3C specification.

Conferencia Hispana de Ruby on Rails 2006

25 de Noviembre, estación norte, Madrid, 19:33 pm, hemos perdido el autobús de Granada para las 19:00 y eso que nos fuimos corriendo de la primera conferencia Rails en España. Ya sólo nos queda aguantar el tipo hasta las 23h (¿nos estaremos perdiendo lo mejor?).

Entramos en la cafetería, sacamos libros y libretas, comentamos algunos proyectos empresariales que proponerle a la Junta (todo a su tiempo) y esperamos. Estoy inspirada, esta conferencia me ha iluminado, así que empiezo el diseño de mi “aplicación ideal”, tengo la sensación de que ahora es posible, de que hasta yo puedo programarla, de que puedo tenerla pronto y de que no me costará mucho esfuerzo…(¿me habrán comido la cabeza?)

Llego a casa, son las 5am, el autobús y conducir hasta aquí me han desvelado, el ordenador me tienta pero no, debo conciliar el sueño, llevo una semana de retraso en mi trabajo y algunas prácticas que entregar esta semana…cojo la libreta.

Creí que sería más difícil, pensar en libre ha conseguido que el diseño sea bueno y, sin más esfuerzo, lo termino sobre papel. Todo muy simple, muy centrado en el usuario (en su uso). Duermo.

12pm, necesito sentarme y poner prioridades, podría empezar dándome de alta con la oferta de alojamiento que me han regalado, podría empezar por hacerme una bitácora en Ruby en 15 minutos… pero debo pararme a pensar; tengo un proyecto entre manos con dos palabras claves: Drupal y PHP. Este proyecto es posible, está en marcha y debo terminarlo y hacerlo bien, pero… si de verdad es tan fácil qué puedo perder.

Con un poco de suerte en unos meses habré terminado mi módulo LMS para Drupal, lo liberaré, habré programado suficiente en PHP como para entender las señales; y con un poco de suerte “Mi aplicación ideal” también será una realidad.

Me quedan ciertas preguntas en el aire: ¿por qué la página de la conferencia está programada en PHP? ¿por qué se ve tan mal desde mi PDA y me cuesta encontrarlo todo? ¿por qué no pude encontrar las salas B1 y B2 el sábado por la mañana? ¿y por qué hubo tantas horas dedicadas a la misma introducción a Rails?

Pero también me quedan buenas sensaciones: JAVA apesta (lo sabía!), Ruby es Perl (lo intuía!), se pueden hacer cosas bonitas (La Coctelera mola!), Rails se puede vender (lo imaginaba!), pero, sobre todo y a pesar del índice 7/150, RoR también es para niñas.