usuario tipos software interfaz gráfica elementos ejemplos diseño caracteristicas user-interface

user interface - tipos - ¿Por qué el diseño de una interfaz de usuario es tan difícil para algunos desarrolladores?



interfaz gráfica de usuario (30)

Diseño de interfaz de usuario es difícil

A la pregunta:

¿Por qué el diseño de IU es tan difícil para la mayoría de los desarrolladores?

Trate de hacer la pregunta inversa:

¿Por qué la programación es tan difícil para la mayoría de los diseñadores de UI ?

La codificación de una UI y el diseño de una UI requieren habilidades diferentes y una mentalidad diferente. El diseño de la interfaz de usuario es difícil para la mayoría de los desarrolladores, no para algunos desarrolladores, al igual que escribir código es difícil para la mayoría de los diseñadores, no para algunos diseñadores.

La codificación es difícil. El diseño también es difícil. Pocas personas hacen las dos cosas bien. Los buenos diseñadores de IU rara vez escriben código. Puede que ni siquiera sepan cómo, sin embargo, siguen siendo buenos diseñadores. Entonces, ¿por qué los buenos desarrolladores se sienten responsables del diseño de IU?

Saber más sobre el diseño de la interfaz de usuario te hará un mejor desarrollador, pero eso no significa que debas ser responsable del diseño de la interfaz de usuario. Lo contrario es cierto para los diseñadores: saber cómo escribir código los hará mejores diseñadores, pero eso no significa que deban ser responsables de codificar la interfaz de usuario.

Cómo mejorar en el diseño de la interfaz de usuario

Para los desarrolladores que desean mejorar en el diseño de la interfaz de usuario, tengo 3 consejos básicos:

  1. Reconocer el diseño como una habilidad separada . La codificación y el diseño son separados pero relacionados. El diseño de la interfaz de usuario no es un subconjunto de codificación. Requiere una mentalidad, una base de conocimientos y un grupo de habilidades diferentes. Hay personas por ahí que se centran en el diseño de la interfaz de usuario.
  2. Aprender sobre diseño . Por lo menos un poco. Trate de aprender algunos de los conceptos y técnicas de diseño de la larga lista a continuación. Si es más ambicioso, lea algunos libros, asista a una conferencia, tome una clase, obtenga un título. Hay muchas maneras de aprender sobre el diseño. El libro de Joel Spolky sobre diseño de UI es un buen manual para los desarrolladores, pero hay mucho más que eso y es donde los diseñadores entran en escena.
  3. Trabajar con diseñadores . Buenos diseñadores, si puedes. Las personas que hacen este trabajo van por varios títulos. Hoy en día, los títulos más comunes son User Experience Designer (UXD), Information Architect (IA), Interaction Designer (ID) e Ingeniero de usabilidad. Piensan en el diseño tanto como piensas en el código. Puedes aprender mucho de ellos, y ellos de ti. Trabaja con ellos como puedas. Encuentra personas con estas habilidades en tu empresa. Tal vez necesitas contratar a alguien. O vaya a algunas conferencias, asista a seminarios web y pase tiempo en el mundo de UXD / IA / ID.

Aquí hay algunas cosas específicas que puedes aprender. No trates de aprender todo . Si supiera todo lo que está debajo, podría llamarse un diseñador de interacción o un arquitecto de información. Comience con las cosas cerca de la parte superior de la lista . Centrarse en conceptos y habilidades específicas. Luego muévete hacia abajo y ramifica. Si realmente te gusta esto, considéralo como una trayectoria profesional. Muchos desarrolladores se mudan a las administraciones, pero el diseño de UX es otra opción.

¿Por qué el diseño de IU es difícil?

El buen diseño de la interfaz de usuario es difícil porque implica 2 habilidades muy diferentes:

  • Un profundo conocimiento de la máquina . La gente en este grupo se preocupa por el código primero, la gente después. Tienen profundos conocimientos y habilidades tecnológicas. Los llamamos desarrolladores, programadores, ingenieros, etc.
  • Una comprensión profunda de las personas y el diseño : las personas de este grupo se preocupan por las personas primero, luego el código. Tienen un profundo conocimiento de cómo las personas interactúan con la información, las computadoras y el mundo que los rodea. Los llamamos diseñadores de experiencia de usuario, arquitectos de información, diseñadores de interacción, ingenieros de usabilidad, etc.

Esta es la diferencia esencial entre estos 2 grupos, entre desarrolladores y diseñadores:

  • Los desarrolladores hacen que funcione . Implementan la funcionalidad en su TiVo, su iPhone, su sitio web favorito, etc. Se aseguran de que realmente haga lo que se supone que debe hacer. Su máxima prioridad es hacer que funcione.
  • Los diseñadores hacen que la gente lo ame . Averiguan cómo interactuar con él, cómo debería verse y cómo debería sentirse. Diseñan la experiencia de usar la aplicación, el sitio web, el dispositivo. Su máxima prioridad es hacer que te enamores de lo que hacen los desarrolladores. Esto es lo que se entiende por experiencia del usuario, y no es lo mismo que la experiencia de marca.

Además, la programación y el diseño requieren una mentalidad diferente , no solo conocimiento y habilidades diferentes. Un buen diseño de interfaz de usuario requiere ambas mentalidades, ambas bases de conocimiento, ambos grupos de habilidades. Y lleva años dominar cualquiera de las dos.

Los desarrolladores deben esperar encontrar el diseño de la interfaz de usuario difícil, al igual que los diseñadores de la interfaz de usuario deben esperar encontrar el código de escritura difícil.

Algunos de nosotros simplemente tenemos dificultades con los aspectos más suaves del diseño de la interfaz de usuario ( especialmente yo ). ¿Están los "codificadores de back-end" condenados a diseñar solo lógica de negocios y capas de datos? ¿Hay algo que podamos hacer para volver a entrenar nuestro cerebro para que sea más efectivo en el diseño de capas de presentación agradables y útiles?

Los colegas me han recomendado algunos libros que incluyen El diseño de sitios , No me hagas pensar y ¿Por qué el software apesta , pero me pregunto qué han hecho otros para eliminar sus deficiencias en esta área?


"Diseñar desde ambos lados de la pantalla" presenta una razón muy simple pero profunda de por qué los programadores encuentran difícil el diseño de la interfaz de usuario: los programadores están capacitados para pensar en términos de casos avanzados, mientras que los diseñadores de IU están capacitados para pensar en términos de casos comunes o uso.

Por lo tanto, pasar de un mundo a otro es ciertamente difícil si la formación predeterminada en uno u otro es exactamente lo opuesto al otro.


¿Qué he hecho para mejorar en el diseño de UI?
¡Presta atención a ello!

Es como cada vez que ve un gráfico en las noticias o una señal electrónica de autobús y se pregunta ''¿Cómo obtuvieron esa información? ¿Hicieron eso con raw sql o están usando LINQ? (o inserte su propia curiosidad friki común aquí).

Tienes que empezar a hacer eso pero con elementos visuales de todo tipo.

Pero al igual que aprender un nuevo idioma, si realmente no te metes en él, nunca lo aprenderás.

Tomado de otra respuesta escribí:

Aprende a mirar, realmente mira, al mundo que te rodea. ¿Por qué me gusta esa IU pero odio esta? ¿Por qué es tan difícil encontrar los platos de fideos en el menú de este restaurante? Wow, sabía lo que significaba ese signo antes de leer las palabras. ¿Por qué fue eso? ¿Por qué la portada del libro se ve tan mal? Aprenda a tomarse el tiempo para pensar por qué reacciona de la manera en que lo hace ante elementos visuales de todo tipo, y luego aplique esto a su trabajo.


Cambiemos tu pregunta -

¿Están los "diseñadores de ui" condenados a diseñar solo capas de presentación y arquitectura de información? ¿Hay algo que puedan hacer para volver a entrenar sus cerebros para que sean más efectivos en el diseño de capas de sistema agradables y eficientes?

Parece que ellos "diseñadores de interfaz de usuario" tendrían que tener una perspectiva completamente diferente: tendrían que mirar desde el interior de la caja hacia afuera; En lugar de mirar desde fuera de la caja.

La opinión de Alan Cooper "Los reclusos están ejecutando el asilo" es que no podemos tomar con éxito ambas perspectivas: podemos aprender a usar un sombrero bien pero no podemos simplemente cambiarnos.


Contrariamente al mito popular, literalmente no hay aspectos suaves en el diseño de la interfaz de usuario, al menos no más de lo necesario para diseñar un buen back-end.

Considera lo siguiente; un buen diseño de back-end se basa en principios y elementos bastante sólidos con los que cualquier buen desarrollador esté familiarizado:

  • acoplamiento bajo

  • alta cohesión

  • patrones arquitectonicos

  • mejores prácticas de la industria

  • etc

El buen diseño de back-end suele surgir a través de una serie de interacciones, donde, en función de los comentarios medibles obtenidos durante las pruebas o el uso real, el proyecto inicial se mejora gradualmente. A veces es necesario crear prototipos de aspectos más pequeños del back-end y probarlos de forma aislada, etc.

El buen diseño de la interfaz de usuario se basa en los principios de sonido de:

  • visibilidad

  • pago

  • realimentación

  • tolerancia

  • sencillez

  • consistencia

  • estructura

La interfaz de usuario también nace a través de pruebas y ensayos, a través de iteraciones, pero no con compilador + prueba automatizada, sino personas. Al igual que en el back-end, existen prácticas recomendadas de la industria, técnicas de medición y evaluación, formas de pensar en la IU y establecer objetivos en términos de modelo de usuario, imagen del sistema, modelo del diseñador, modelo estructural, modelo funcional, etc.

El conjunto de habilidades necesario para diseñar la interfaz de usuario es bastante diferente del diseño de back-end y, por lo tanto, no espere poder hacer una buena interfaz de usuario sin aprender primero. Sin embargo, que ambas actividades tienen en común es el proceso de diseño. Creo que cualquier persona que pueda diseñar un buen software es capaz de diseñar una buena interfaz de usuario siempre que dedique un tiempo a aprender cómo hacerlo.

Recomiendo tomar un curso sobre interacción con computadora humana, ver el sitio de MIT y Yale, por ejemplo, para materiales en línea:

Modelo estructural vs funcional en la comprensión y el uso

La excelente publicación anterior de Thorsten79 presenta el tema de los expertos en desarrollo de software frente a los usuarios y en qué difiere su comprensión del software. Los expertos en aprendizaje humano distinguen entre modelos mentales funcionales y estructurales. Encontrar el camino a la casa de tu amigo puede ser un excelente ejemplo de la diferencia entre los dos:

  • El primer enfoque incluye un conjunto de instrucciones detalladas: tome la primera salida de la autopista, luego, después de 100 yardas, gire a la izquierda, etc. Este es un ejemplo de modelo funcional: lista de pasos concretos necesarios para lograr un objetivo determinado. Los modelos funcionales son fáciles de usar, no requieren mucha reflexión, solo una ejecución directa. Obviamente, hay una penalización por la simplicidad: puede que no sea la ruta más eficiente y cualquier situación excepcional (es decir, un desvío de tráfico) puede conducir fácilmente a una falla completa.

  • Una forma diferente de hacer frente a la tarea es construir un modelo mental estructural. En nuestro ejemplo, ese sería un mapa que transmite mucha información sobre la estructura interna del "objeto de tarea". A partir de la comprensión del mapa y las ubicaciones relativas de nuestra casa y la de un amigo, podemos deducir el modelo funcional (la ruta). Obviamente, requiere más esfuerzo, pero una forma mucho más confiable de completar la tarea a pesar de las posibles desviaciones.

La elección entre transmitir un modelo funcional o estructural a través de la interfaz de usuario (por ejemplo, modo avanzado o asistente) no es tan sencilla como podría parecer en la publicación de Thorsten79. Los usuarios avanzados y frecuentes pueden preferir el modelo estructural, mientras que los usuarios ocasionales o con menos experiencia son funcionales.

Los mapas de Google son un gran ejemplo: incluyen modelos funcionales y estructurales, al igual que muchos sistemas de navegación por satélite.

Otra dimensión del problema es que el modelo estructural presentado a través de la interfaz de usuario no debe asignarse a la estructura del software, sino que debe asignarse naturalmente a la estructura de la tarea del usuario en cuestión o al objeto de la tarea involucrado.

La dificultad aquí es que muchos desarrolladores tendrán un buen modelo estructural de sus componentes internos de software, pero solo el modelo funcional de la tarea del usuario que el software pretende ayudar. Para crear una buena interfaz de usuario, es necesario comprender la estructura de la tarea / objeto de tarea y asignar la interfaz de usuario a esa estructura.

De todos modos, todavía no puedo recomendar tomar un curso formal de HCI con suficiente fuerza. Hay muchas cosas involucradas, como heuristics , principios derivados de la psicología de la Gestalt , formas en que los humanos aprenden, etc.


Creo que el problema principal no tiene nada que ver con diferentes talentos o habilidades. El principal problema es que, como desarrollador, sabes demasiado sobre lo que hace la aplicación y cómo lo hace, y diseñas automáticamente tu IU desde el punto de vista de alguien que tiene ese conocimiento.

Mientras que un usuario normalmente comienza sin saber absolutamente nada acerca de la aplicación y nunca debería necesitar aprender nada sobre su funcionamiento interno.

Es muy difícil, casi imposible, no usar el conocimiento que tiene, y es por eso que una IU no debe ser diseñada por alguien que está desarrollando la aplicación detrás de ella.


Creo que es porque una buena interfaz de usuario no es lógica. Una buena interfaz de usuario es intuitiva.

Los desarrolladores de software normalmente hacen mal en ''intuitivo''


Cuando me acerco al diseño de la interfaz de usuario, he aquí algunas de las cosas que tengo en cuenta en todo (de lejos no es una lista completa):

  • Comunicando un modelo . La interfaz de usuario es una narrativa que explica un modelo mental al usuario. Este modelo puede ser un objeto de negocio, un conjunto de relaciones, lo que sea. La prominencia visual, la ubicación espacial y el orden del flujo de trabajo juegan un papel importante en la comunicación de este modelo al usuario. Por ejemplo, un cierto tipo de lista frente a otra implica cosas diferentes, así como la relación de lo que está en la lista con el resto del modelo. En general, lo mejor es asegurarme de que solo se comunique un modelo a la vez. Los programadores frecuentemente intentan comunicar más de un modelo, o partes de varios, en el mismo espacio de UI.

  • Consistencia Reutilizar las metáforas populares de la interfaz de usuario ayuda mucho. La consistencia interna también es muy importante.

  • Agrupación de tareas . Los usuarios no deberían tener que mover el mouse por toda la pantalla para verificar o completar una secuencia de comandos relacionada. Los diálogos modales y los menús flotantes pueden ser especialmente malos en esta área.

  • Conociendo a tu audiencia . Si sus usuarios realizarán las mismas actividades una y otra vez, se convertirán rápidamente en usuarios avanzados en esas tareas y se sentirán frustrados por los intentos de reducir la barrera de entrada inicial. Si sus usuarios realizan diferentes tipos de actividades con poca frecuencia, es mejor asegurarse de que la IU mantenga su mano todo el tiempo.


Déjame decirlo directamente:

Mejorar esto no comienza con las pautas. Comienza con replantear cómo piensas sobre el software.

La mayoría de los desarrolladores hardcore tienen prácticamente nula empatía con los usuarios de su software. No tienen idea de cómo piensan los usuarios, cómo construyen los modelos de software que usan y cómo usan una computadora en general.

Es un problema típico cuando un experto choca con un laico: ¿Cómo demonios podría una persona normal ser tan tonta para no entender lo que el experto entendió hace 10 años?

Uno de los primeros hechos en reconocer que es increíblemente difícil de entender para casi todos los desarrolladores con experiencia es este:

La gente normal tiene un concepto de software muy diferente al que tú tienes. No tienen idea alguna de programación. Ninguna. Cero. Y ni siquiera les importa. Ni siquiera piensan que tienen que preocuparse. Si los obligas, eliminarán tu programa.

Ahora eso es increíblemente duro para un desarrollador. Está orgulloso del software que produce. Él ama cada característica única. Él puede decirle exactamente cómo funciona el código detrás de él. Tal vez incluso inventó un algoritmo inteligente increíble que lo hizo funcionar 50% más rápido que antes.

Y al usuario no le importa.

Qué idiota.

Muchos desarrolladores no pueden soportar trabajar con usuarios normales. Se deprimen por el conocimiento inexistente de la tecnología. Y es por eso que la mayoría de los desarrolladores evitan y piensan que los usuarios deben ser idiotas.

Ellos no son.

Si un desarrollador de software compra un automóvil, espera que funcione sin problemas. Por lo general, no le importan las presiones de los neumáticos, el ajuste mecánico que era importante para que funcionara de esa manera. Aquí no es el experto. Y si compra un automóvil que no tiene el ajuste fino, lo devuelve y compra uno que hace lo que quiere.

A muchos desarrolladores de software les gustan las películas. Películas bien hechas que despiertan su imaginación. Pero no son expertos en producir películas, en producir efectos visuales o en escribir buenos guiones de películas. La mayoría de los nerds son muy, muy, muy malos para actuar porque se trata de mostrar emociones complejas y poco sobre análisis. Si un desarrollador ve una mala película, solo se da cuenta de que es mala en general. Los nerds incluso han creado IMDB para recopilar información sobre películas buenas y malas, para que sepan cuáles mirar y cuáles evitar. Pero no son expertos en crear películas. Si una película es mala, no irán al cine (o no la descargarán de BitTorrent;)

Así que se reduce a: rechazar a los usuarios normales como un experto es la ignorancia. Debido a que en esas áreas (y hay muchas) en las que no son expertos, esperan que los expertos de otras áreas ya hayan pensado en las personas normales que usan sus productos o servicios.

¿Qué puedes hacer para remediarlo? Cuanto más hardcore sea como programador, menos abierto estará al pensamiento normal del usuario. Te será ajeno y no tendrás ni idea. Pensarás: no puedo imaginar cómo las personas podrían usar una computadora con esta falta de conocimiento. Pero ellos pueden. Para cada elemento de la interfaz de usuario, piense en: ¿Es necesario? ¿Se ajusta al concepto que un usuario tiene de mi herramienta? ¿Cómo puedo hacerle entender? Por favor, lea sobre la usabilidad de esto, hay muchos buenos libros. Es toda una área de la ciencia, también.

Ah y antes de que lo digas, sí, soy un fan de Apple;)


Decir que los programas apestan en el diseño de la interfaz de usuario es perder el punto. El punto del problema es que la capacitación formal que la mayoría de los desarrolladores obtienen se acerca a la tecnología. La interacción humano - computadora no es un tema simple. No es algo que pueda "fusionar" con usted al proporcionarle una declaración simple de una línea que le permita comprender que "oh, los usuarios usarán esta aplicación de manera más efectiva si hago x en lugar de y".

Esto se debe a que falta una parte del diseño de la interfaz de usuario. El cerebro humano. Para entender cómo diseñar una UI, debes entender cómo la mente humana interactúa con la maquinaria. Hay un curso excelente que tomé en la Universidad de Minnesota sobre este tema impartido por un profesor de psicología. Se llama "Interacción Humano - Máquina". Esto describe muchas de las razones por las que el diseño de IU es tan complicado.

Dado que la psicología se basa en correlaciones y no en la causalidad, nunca se puede probar que un método de diseño de IU siempre funcionará en una situación determinada. Puede correlacionar que muchos usuarios encontrarán un diseño de UI particular atractivo o eficiente, pero no puede probar que siempre se generalizará.

Además, hay dos partes en el diseño de la interfaz de usuario que muchas personas parecen pasar por alto. Existe el atractivo estético, y el flujo de trabajo funcional. Si opta por un atractivo estético del 100%, seguro que las personas lo harán pero su producto. Aunque dudo mucho que la estética reduzca la frustración del usuario.

Hay varios buenos libros sobre este tema y curso para tomar (como las experiencias de los usuarios de Sketching de Bill Buxton y Cognition in the Wild de Edwin Hutchins). Hay programas de posgrado sobre interacción humano - computadora en muchas universidades.

La respuesta general a esta pregunta, sin embargo, radica en cómo a las personas se les enseña ciencias de la computación. Es todo basado en matemáticas, basado en lógica y no basado en la experiencia del usuario. Para lograr eso, necesita más que un título genérico de 4 años en ciencias de la computación (a menos que su grado de 4 años en ciencias de la computación tuviera una especialización en psicología y se enfatizara en la interacción entre humanos y computadoras).


En última instancia, se trata realmente de empatía: ¿puedes ponerte en la piel de tu usuario?

Una cosa que ayuda, por supuesto, es "comer su propia comida para perros": usar sus aplicaciones como un usuario real y ver lo que es molesto.

Otra buena idea es encontrar una manera de ver a un usuario real usando su aplicación, que puede ser tan complicada como un laboratorio de usabilidad con espejos de una sola vía, captura de video en pantalla, cámaras de video para los usuarios, etc., o puede ser tan simple como prototipos de papel utilizando a la siguiente persona que camine por el pasillo.

Si todo lo demás falla, recuerde que casi siempre es mejor que la interfaz de usuario sea demasiado simple que demasiado complicada. Es muy fácil decir "Oh, sé cómo resolverlo, solo agregaré una casilla de verificación para que el usuario pueda decidir qué modo prefiere". Pronto su interfaz de usuario es demasiado complicado. Elija un modo predeterminado y haga que la configuración de preferencias sea una opción de configuración avanzada. O simplemente déjalo fuera.

Si lees mucho sobre diseño, puedes colgarte fácilmente de las sombras y esquinas redondeadas, etc. Eso no es lo importante. La simplicidad y la descubribilidad son las cosas importantes.


Hay muchas razones para esto.

(1) El desarrollador no ve las cosas desde el punto de vista del usuario. Este es el sospechoso habitual: falta de empatía. Pero no suele ser cierto, ya que los desarrolladores no son tan ajenos como la gente cree que son.

(2) Otra razón más común es que el desarrollador, al estar tan cerca de sus propias cosas, habiendo permanecido con sus cosas durante tanto tiempo, no se da cuenta de que sus cosas pueden no ser tan familiares (un término mejor que intuitivo) para otras personas. .

(3) Otra razón más es que el desarrollador carece de técnicas.

MI GRAN RECLAMO: lea cualquier interfaz de usuario, diseño de interacción humana, libro de prototipos. por ejemplo, Designing the Obvious: un enfoque de sentido común para el diseño de aplicaciones web, no me haga pensar: un enfoque de sentido común para la usabilidad web, diseñando el momento, lo que sea.

¿Cómo discuten los flujos de tareas? ¿Cómo describen los puntos de decisión? Es decir, en cualquier caso de uso, hay al menos 3 rutas: éxito, falla / excepción, alternativa.

Así, desde el punto A, puedes ir a A.1, A.2, A.3. Desde el punto A.1, puede llegar a A.1.1, A.1.2, A.1.3, etc.

¿Cómo muestran tal flujo de tareas de desglose? Ellos no Sólo lo pasan por alto.

Dado que ni siquiera el experst de UI tiene una técnica, los desarrolladores no tienen oportunidad. Piensa que está claro en su cabeza. Pero ni siquiera está claro en el papel, y mucho menos claro en la implementación del software.

Tengo que usar mis propias técnicas hechas a mano para esto.


Hay una gran diferencia entre diseño y estética, y a menudo se confunden.

Una hermosa interfaz de usuario requiere habilidades artísticas o al menos estéticas que muchos, incluido yo mismo, son incapaces de producir. Desafortunadamente, no es suficiente y no hace que la interfaz de usuario sea utilizable, como podemos ver en muchas API basadas en flash de peso pesado.

La producción de interfaces de usuario utilizables requiere una comprensión de cómo los humanos interactúan con las computadoras, algunos problemas en psicología (por ejemplo, la ley de Fitt, la ley de Hick) y otros temas. Muy pocos programas de CS se entrenan para esto. Muy pocos desarrolladores que conozco elegirán un libro de prueba de usuario sobre un libro de JUnit, etc.

Muchos de nosotros también somos "programadores centrales", tendiendo a pensar en las interfaces de usuario como la fachada en lugar de ser un factor que podría hacer o deshacer el éxito de nuestro proyecto.

Además, la mayoría de las experiencias de desarrollo de UI son extremadamente frustrantes. Podemos usar constructores de GUI de juguete como el VB antiguo y tenemos que lidiar con el código de pegamento feo, o usamos API que nos frustran sin fin, como tratar de organizar diseños en Swing.


Intento mantenerme en contacto con los sitios web y los textos de diseño específico. También encontré que el excelente libro de Robin Williams, The Non-Designer Design Book, es muy interesante en estos estudios.

Creo que el diseño y la facilidad de uso son una parte muy importante de la ingeniería de software, y deberíamos aprender más y dejar de dar excusas que no debemos diseñar.

Todos pueden ser diseñadores de vez en cuando, como también todos pueden ser programadores.


La interfaz de usuario no es algo que pueda aplicarse después del hecho, como una fina capa de pintura. Es algo que debe estar allí al principio, y basado en una investigación real. Hay toneladas de investigación de usabilidad disponible, por supuesto. No solo tiene que estar allí al principio, sino que constituye el núcleo de la razón por la que crea el software en primer lugar: hay una cierta brecha en el mundo, algún problema y debe hacerse. Más usable y más eficiente.

El software no está ahí por su propio bien. La razón para que exista un trozo de software es PARA PERSONAS. Es absolutamente ridículo incluso intentar una idea para un nuevo paquete de software, sin entender por qué alguien lo necesitaría. Sin embargo, esto sucede todo el tiempo.

Antes de escribir una sola línea de código, debe revisar las versiones en papel de la interfaz y probarlo en personas reales. Esto es algo raro y tonto, funciona mejor con los niños y con alguien que actúa como "la computadora".

La interfaz necesita aprovechar nuestras instalaciones cognitivas naturales. ¿Cómo usaría un cavernícola su programa? Por ejemplo, hemos evolucionado para ser realmente buenos en el seguimiento de objetos en movimiento. Es por eso que las interfaces que usan simulaciones físicas, como el iPhone, funcionan mejor que las interfaces donde los cambios ocurren instantáneamente.

Somos buenos en ciertos tipos de abstracción, pero no en otros. Como programadores, estamos capacitados para hacer gimnasia mental y retrocesos para comprender algunas de las abstracciones más extrañas. Por ejemplo, entendemos que una secuencia de texto arcano puede representarse y traducirse en un patrón de estado electromagnético en una bandeja de metal, que cuando se encuentra con un dispositivo cuidadosamente diseñado, conduce a una secuencia de eventos invisibles que ocurren a la velocidad de la luz en una electrónica. circuito, y estos eventos se pueden dirigir para producir un resultado útil. Esto es algo increíblemente antinatural que hay que entender. Comprenda que, si bien tiene una explicación perfectamente racional para nosotros, para el mundo exterior, parece que estamos escribiendo incomprensibles conjuros para invocar a espíritus sensibles invisibles que cumplan nuestras órdenes.

El tipo de abstracciones que los humanos normales entienden son cosas como mapas, diagramas y símbolos. Tenga cuidado con los símbolos, porque los símbolos son un concepto humano muy frágil que requiere un esfuerzo mental consciente para decodificar, hasta que se aprende el símbolo.

El truco con los símbolos es que tiene que haber una relación clara entre el símbolo y lo que representa. La cosa que representa tiene que ser un sustantivo, en cuyo caso el símbolo debería tener un aspecto MUY parecido al que representa. Si un símbolo representa un concepto más abstracto, debe explicarse DE ADELANTADO. Vea los inescrutables iconos sin etiquetar en la barra de herramientas de msword o photoshop, y los conceptos abstractos que representan. Debe APRENDERSE que el icono de la herramienta de recorte en photoshop significa CROP TOOL. Hay que entender lo que CROP incluso significa. Estos son requisitos previos para utilizar correctamente ese software. Lo que plantea un punto importante, ten cuidado con el conocimiento ASUMIDO.

Solo ganamos la capacidad de entender los mapas a la edad de 4 años. Creo que leí en algún lugar una vez que los chimpancés obtienen la capacidad de entender los mapas a la edad de 6 o 7 años.

Para empezar, la razón por la que los guis han tenido tanto éxito es que cambiaron un panorama de interfaces mayormente textuales a computadoras, a algo que mapeaba los conceptos de computadora a algo que se parecía a un lugar físico. Donde los guis fallan en términos de usabilidad, es donde dejan de parecerse a algo que verías en la vida real. Hay cosas invisibles, impredecibles e incomprensibles que suceden en una computadora que no se parecen en nada a lo que alguna vez verías en el mundo físico. Algo de esto es necesario, ya que no tendría sentido simplemente hacer un simulador de realidad. La idea es ahorrar trabajo, así que tiene que haber un poco de magia. Pero esa magia tiene que tener sentido y basarse en una abstracción que los seres humanos están bien adaptados a la comprensión. Es cuando nuestras abstracciones comienzan a profundizarse, y se superponen, y no coinciden con la tarea en cuestión, que las cosas se rompen. En otras palabras, la interfaz no funciona como un buen mapa para el software subyacente.

Hay muchos libros. Los dos que he leído, y por lo tanto puedo recomendar, son "The Design of Everyday Things" de donald norman, y "The Human Interface" de Jef Raskin.

También recomiendo un curso de psicología. "El diseño de las cosas cotidianas" habla de esto un poco. Muchas interfaces se rompen debido a la "comprensión popular" de la psicología por parte de un desarrollador. Esto es similar a la "física popular". Un objeto en movimiento que permanece en movimiento no tiene ningún sentido para la mayoría de las personas. "¡Tienes que seguir empujándolo para mantenerlo en movimiento!" Piensa la novicia en física. Las pruebas de usuario no tienen sentido para la mayoría de los desarrolladores. "Solo puedes preguntar a los usuarios qué quieren, ¡y eso debería ser lo suficientemente bueno!" Piensa el novato en psicología.

Recomiendo Discovering Psychology, una serie documental de PBS, presentada por Philip Zimbardo. Si esto falla, intenta encontrar un buen libro de texto de física. El tipo caro. No la mierda de autoayuda de ficción de pulpa que encuentras en Borders, sino el material grueso que solo puedes encontrar en una biblioteca universitaria. Este es un fundamento necesario. Puede hacer un buen diseño sin él, pero solo tendrá una comprensión intuitiva de lo que está sucediendo. Leer algunos buenos libros te dará una buena perspectiva.


La principal regla de oro que sostengo es que nunca intente hacer ambas cosas a la vez. Si estoy trabajando en el código de back-end, terminaré haciendo eso, tomaré un descanso y regresaré con mi sombrero de UI puesto. Si intentas trabajarlo mientras estás haciendo código, lo abordarás con la mentalidad equivocada y, como resultado, obtendrás algunas interfaces horribles.

Creo que es definitivamente posible ser tanto un buen desarrollador de back-end como un buen diseñador de UI, solo tienes que trabajar en ello, leer un poco e investigar sobre el tema (todo desde Miller # 7 hasta los archivos de Nielsen) y hacer Seguro que entiendes por qué el diseño de la interfaz de usuario es de suma importancia.

No creo que sea un caso de necesidad de ser creativo, sino que, como el desarrollo de back-end, es algo muy metódico y muy estructurado que se debe aprender. Las personas que se vuelven ''creativas'' con las interfaces de usuario crean algunas de las mayores monstruosidades de usabilidad ... Quiero decir, eche un vistazo a los sitios web 100% Flash, para empezar ...

Edit : El libro de Krug es realmente bueno ... sírvalo, especialmente si va a diseñar para la Web.


Le sugiero que comience haciendo toda su UI de la misma manera que lo está haciendo ahora, sin centrarse en la usabilidad y esas cosas.

texto alt http://www.stricken.org/uploaded_images/WordToolbars-718376.jpg

Ahora piensa en esto:

Un diseñador sabe que ha logrado la perfección no cuando no queda nada que agregar, sino cuando no hay nada más que quitar. - Saint-Exupéry

Y aplícalo en tu diseño.



Lo que realmente me ayuda a mejorar mi diseño es agarrar a un desarrollador, a un miembro de control de calidad, al primer ministro oa cualquiera que pase por allí y hacer que prueben un widget o una pantalla en particular.

Es sorprendente lo que te darás cuenta cuando veas a otra persona usar tu software por primera vez.


Los desarrolladores no son (necesariamente) buenos en diseño de interfaz de usuario por la misma razón que no son (necesariamente) buenos en tejer; Es difícil, requiere práctica y no hace daño que alguien te muestre cómo hacerlo en primer lugar.

La mayoría de los desarrolladores (incluido yo) comenzaron a "diseñar" interfaces de usuario porque era una parte necesaria para escribir software. Hasta que un desarrollador se esfuerce por ser bueno en eso, no lo será.


Me parece que la mejor herramienta en el diseño de UI es ver cómo el Usuario intenta usar el software por primera vez. Toma un montón de notas y hazles algunas preguntas. Nunca los dirija ni intente explicar cómo funciona el software. Este es el trabajo de la interfaz de usuario (y la documentación bien escrita).

Constantemente adoptamos este enfoque en todos los proyectos. Siempre es fascinante ver a un Usuario lidiar con el software de una manera que nunca antes consideraste.

¿Por qué el diseño de IU es tan difícil? Bueno, en general, porque el desarrollador y el usuario nunca se encuentran.


Muchos desarrolladores piensan que porque pueden escribir código, pueden hacerlo todo. Diseñar una interfaz es una habilidad completamente diferente, y no se enseñó en absoluto cuando asistí a la universidad. No es solo algo que viene naturalmente.

Otro buen libro es El diseño de las cosas cotidianas de Donald Norman.


Para mejorar solo mira los sitios existentes. Además de los libros que ya se han sugerido, le recomendamos que eche un vistazo al excelente libro de Robin Williams "El libro de diseño para no diseñadores" ( enlace de Amazon saneado ).

Eche un vistazo a lo que es posible en diseño visual echando un vistazo a las diferentes presentaciones en The Zen Garden también.

Sin embargo, el diseño de la interfaz de usuario es definitivamente un arte, como los punteros en C, algunas personas lo entienden y otras no.

Pero al menos podemos reírnos de sus intentos . BTW Gracias OK / Cancel por un cómic divertido y gracias a Joel por ponerlo en su libro "The Best Software Writing I" ( enlace de Amazon saneado ).


Sé que Microsoft es bastante inconsistente con sus propias pautas, pero he descubierto que leer sus pautas de diseño de Windows realmente me ha ayudado. Tengo una copia en mi sitio web here , solo desplácese un poco hacia abajo en la Guía de Vista UX. Me ha ayudado con cosas como colores, espaciado, diseños y más.


Si lees el libro "Por qué el software apesta", habrías visto la respuesta de Platt, que es simple:

  1. Los desarrolladores prefieren el control sobre la facilidad de uso
  2. La gente promedio prefiere la facilidad de uso sobre el control

Pero otra respuesta a su pregunta sería "¿por qué la odontología es tan difícil para algunos desarrolladores?" - El diseño de la interfaz de usuario lo hace mejor un diseñador de interfaces de usuario.

http://dotmad.net/blog/2007/11/david-platt-on-why-software-sucks/


Sin embargo, lo haces (y hay algunos puntos importantes arriba), realmente me ayudó una vez que acepté que NO HAY TAL COSA COMO INTUITIVA ...

Puedo escuchar los argumentos retumbando en el horizonte ... así que déjame explicarte un poco.

Intuitivo: usar lo que uno siente correcto o verdadero basado en un método o sentimiento inconsciente.

Si (como postuló Carl Sagan) usted acepta que no puede comprender cosas que son absolutamente diferentes a cualquier cosa que haya encontrado, ¿cómo podría "saber" cómo usar algo si nunca ha usado algo que le parezca tan remoto?

Piénselo: los niños intentan abrir puertas no porque "saben" cómo funciona un pomo de la puerta, sino porque han visto a alguien más hacerlo ... a menudo giran el pomo en la dirección incorrecta o tiran demasiado rápido. Tienen que APRENDER cómo funciona un picaporte. Este conocimiento luego se aplica en instancias diferentes pero similares: abrir una ventana, abrir un cajón, abrir casi cualquier cosa grande con un asa grande que se parece a un pomo.

Incluso las cosas simples que nos parecen intuitivas no serán en absoluto intuitivas para las personas de otras culturas. Si alguien extendió su brazo frente a ellos y les quitó la mano arriba y abajo de la muñeca mientras mantenía el brazo quieto ... ¿lo están renunciando? Probablemente, a menos que estés en Japón. Allí, esta señal de mano puede significar "ven aquí". Entonces, ¿quién tiene razón? Ambos, por supuesto, en su propio contexto. Pero si viaja a ambos, debe conocer ambos ... Diseño de interfaz de usuario.

Trato de encontrar las cosas que ya son "familiares" para los posibles usuarios de mi proyecto y luego construyo la interfaz de usuario a su alrededor: diseño centrado en el usuario.

Echa un vistazo al iPhone de Apple. Incluso si lo odias, tienes que respetar la cantidad de pensamiento que entra en él. Es perfecto Por supuesto no. Con el tiempo, la "intuición" percibida de un objeto puede crecer o incluso desvanecerse por completo.

Por ejemplo. Casi todo el mundo sabe que una tira negra con dos filas de orificios a lo largo de la parte superior e inferior parece una tira de película ... ¿o no?

Pregúntele a su promedio de 9 o 10 años qué piensan ellos que es. Es posible que se sorprenda de cuántos niños en este momento tendrán dificultades para identificarlo como una tira de película, a pesar de que es algo que todavía se utiliza para representar a Hollywood, o cualquier cosa relacionada con la película (película). La mayoría de las películas de los últimos 20 años han sido filmadas digitalmente. ¿Y cuándo fue la última vez que alguno de nosotros sostuvo una película de CUALQUIER tipo, fotos o películas?

Entonces, para mí todo se reduce a: Conozca a su audiencia e investigue constantemente para mantenerse al día con las tendencias y los cambios en las cosas que son "intuitivos", apunte a sus principales usuarios e intente no hacer cosas que castiguen a los inexpertos en favor de los usuarios avanzados o ralentizar a los usuarios avanzados con el fin de mantener a mano a los novatos.

En última instancia, cada programa requerirá una cierta cantidad de capacitación por parte del usuario para usarlo. Cuánta capacitación y para qué nivel de usuario es parte de las decisiones que deben tomarse.

Algunas cosas son más o menos familiares según el nivel de experiencia pasada de su usuario objetivo como ser humano, usuario de computadora, estudiante o lo que sea.

Acabo de disparar a la parte más gorda de la curva de la campana e intento conseguir la mayor cantidad de gente posible, pero dándome cuenta de que nunca complaceré a todos ...


Un encuadre útil es considerar activamente lo que está haciendo al diseñar un proceso de comunicación. En un sentido muy real, su interfaz es un lenguaje que el usuario debe usar para decirle a la computadora qué hacer. Esto lleva a considerar una serie de puntos:

  1. ¿El usuario ya habla este idioma? Usar una interfaz altamente idiosincrásica es como comunicarse en un idioma que nunca antes ha hablado. Entonces, si su interfaz debe ser idiosincrásica en absoluto, es mejor que se presente con los términos más simples y con pocas distracciones. Por otro lado, si su interfaz utiliza expresiones idiomáticas a las que el usuario está acostumbrado, ganarán confianza desde el principio.
  2. El enemigo de la comunicación es el ruido. ruido auditiva interfiere con la comunicación hablada; El ruido visual interfiere con la comunicación visual. Cuanto más ruido se pueda eliminar de la interfaz, más fácil será comunicarse con ella.
  3. Como en una conversación humana, a menudo no es lo que dices, es cómo lo dices. La forma en que la mayoría de los programas se comunican es grosera hasta el punto de que podría ser golpeado en la cara si fuera una persona. ¿Cómo te sentirías si le hicieras una pregunta a alguien y se sentaran allí y te miraran durante varios minutos, negándose a responder de otra manera, antes de responder? Muchos elementos de la interfaz, como las barras de progreso y la selección automática del enfoque, tienen la función fundamental de la cortesía. Pregúntese cómo puede hacer que el día del usuario sea un poco más agradable.

En realidad, es un poco difícil determinar qué piensan los programadores de la interacción de la interfaz como algo que no sea ​​un proceso de comunicación, pero tal vez el problema es que no se piensa que sea algo en absoluto.


Vaya a Slashdot y lea los comentarios sobre cualquier artículo relacionado con Apple. Encontrará una gran cantidad de personas que hablan sobre cómo los productos de Apple no son nada especial, y atribuyen el éxito del iPod y el iPhone a las personas que intentan estar a la moda o a la moda. Por lo general, revisarán las listas de funciones y señalarán que no hicieron nada que los reproductores de MP3 o teléfonos inteligentes anteriores no hicieron.

Luego, hay personas a las que les gusta el iPod y el iPhone porque hacen lo que los usuarios quieren de manera simple y sencilla, sin hacer referencia a los manuales. Las interfaces son tan intuitivas como las interfaces, memorables y detectables. No soy tan aficionado a la interfaz de usuario en MacOSX como en versiones anteriores, creo que han renunciado a alguna utilidad en favor del brillo, pero el iPod y el iPhone son ejemplos de un diseño excelente.

Si estás en el primer campamento, no piensas lo que hace la persona promedio, y por lo tanto es probable que hagas interfaces de usuario erróneas porque no puedes distinguirlas de las buenas. Esto no significa que no tenga esperanza, sino que tiene que aprender explícitamente buenos principios de diseño de interfaz y cómo reconocer una buena interfaz de usuario (por mucho que alguien con Asperger deba aprender habilidades sociales de manera explícita). Obviamente, el simple hecho de tener una buena interfaz de usuario no significa que puedas crearla; mi apreciación por la literatura, por ejemplo, no parece extenderse a la capacidad (actualmente) para escribir historias publicables.

Por lo tanto, trate de desarrollar un sentido para un buen diseño de interfaz de usuario. Esto se extiende a más que solo software. "El diseño de las cosas cotidianas" de Don Norman es un clásico, y hay otros libros por ahí. Obtenga ejemplos de diseños de UI exitosos y juegue con ellos lo suficiente como para sentir la diferencia. Reconozca que puede tener que aprender una nueva forma de pensar sobre las cosas y disfrútela.


Ya hay muchos o buenos comentarios, así que no estoy seguro de que haya mucho que pueda agregar. Pero aún...

  • ¿Por qué un desarrollador espera poder diseñar una buena interfaz de usuario?
  • ¿Cuánto entrenamiento tuvo él en ese campo?
  • ¿Cuántos libros leyó?
  • ¿Cuántas cosas diseñó en cuántos años?
  • ¿Tuvo la oportunidad de ver la reacción de sus usuarios?

No esperamos que un "Joe el plomero" al azar pueda escribir un buen código. Entonces, ¿por qué esperaríamos que el "programador Joe" aleatorio diseñara una buena interfaz de usuario?

La empatía ayuda. Separar el diseño de la interfaz de usuario y la programación ayuda. Pruebas de usabilidad ayuda.

Pero el diseño de IU es un oficio que debe aprenderse y practicarse como cualquier otro.


duffymo me acaba de recordar por qué: muchos programadores piensan "* Design" == "Art".

Un buen diseño de interfaz de usuario es absolutamente no artístico. Sigue principios sólidos, que se pueden respaldar con datos si tiene tiempo para realizar la investigación.

Creo que todos los programadores deben hacer es tomarse el tiempo para aprender los principios. Creo que está en nuestra naturaleza aplicar las mejores prácticas siempre que podamos, ya sea en código o en diseño. Todo lo que tenemos que hacer es estar conscientes de cuáles son las mejores prácticas para este aspecto de nuestro trabajo.