¿Cuándo es una aplicación demasiado personalizable? [cerrado]

8

Supongamos que está desarrollando una aplicación de escritorio y desea que el usuario pueda personalizar menús, botones, asignación de teclas y otros comandos y componentes. ¿Cuánta personalización se debe permitir?

Me gusta que mis entornos sean bastante personalizables. También quiero que el entorno tenga un buen conjunto de valores predeterminados para poder modificar la configuración que necesito en lugar de tener que configurar todo. ¿Alguien tiene alguna experiencia de usuario para apoyar o contradecir mi preferencia?

Michael K
fuente
2
No garantiza que sea una respuesta completa, por lo que es un comentario: si su diálogo de configuración requiere un cuadro de búsqueda, es demasiado personalizable. Por ejemplo, Toad, de Quest Software. Oy
Mark Freedman
Espero que no sea un desarrollador de Google Chrome porque si lo es, esta pregunta merece ser abordada en los n ts (contexto para los no iniciados: Chrome cree en la filosofía de la configuración cero. Ni siquiera puedo configurar mi preferido idioma. Y Chrome infiere el * idioma equivocado .)
Konrad Rudolph
No, no lo soy. Puramente para mi propio beneficio. :)
Michael K
Esta pregunta parece mejor para las interfaces de usuario SE.
mummey

Respuestas:

11

tenga en cuenta que cada opción / personalización que agregue será un programa más complejo, que será más difícil de usar y mantener. Si es algo que solo un pequeño porcentaje de personas usaría, preguntaría si vale la pena.

GSto
fuente
Exactamente. ¿Vale la pena gastar el 25% de su tiempo de desarrollo en una función que tal vez utilizará el 5% de sus clientes? Probablemente no. ¿Tener esta personalización adicional te va a generar más clientes? De nuevo, probablemente no.
Andrew Arnold
@GSto, ¡absolutamente correcto! ¡Es la complejidad lo que mata, y cada condición multiplica las posibilidades! En otras palabras, 16 booleanos independientes dan 2 ^ 16 configuraciones diferentes que todos necesitan pruebas.
1
Esto es en lo que se destaca Apple: tomar decisiones y ocultar la complejidad.
@Thorbjorn, absolutamente. Puedo configurar muchas más cosas en Windows, pero en OS XI generalmente no es necesario porque los valores predeterminados están muy bien pensados.
Jon Hopkins el
@ Jeff O - Ese es un buen punto. no es un tema estrictamente en blanco y negro, y es un equilibrio difícil de alcanzar.
GSto
9

Cuándo hará una diferencia positiva significativa para los usuarios para permitir la personalización.

Esencialmente es como cualquier otro requisito: debe justificar el costo / esfuerzo para implementarlo. Eso puede ser una mayor productividad o usabilidad, o puede ser un cierto nivel de mayor satisfacción del usuario, pero debe haber alguna razón para hacerlo que justifique el esfuerzo involucrado.

Como alguien a quien le gusta la personalización, las preguntas que debe hacerse son:

  • Si estuviera pagando, ¿qué pagaría por este nivel de personalización? ¿Cuántas personas como yo hay? ¿Y eso cubriría el costo de desarrollarlo?

  • ¿Qué hacen mis competidores? ¿Cuál es la expectativa para los productos en esta área?

  • Si en lugar de gastar el esfuerzo para hacerlo personalizable, gastara ese esfuerzo en otras funciones, ¿cuál preferiría? ¿Es esto cierto para los usuarios típicos?

Recuerde, todo lo que elige implementar es realmente algo más que está eligiendo no hacer (al menos por ahora), por lo que todo debe justificar el esfuerzo necesario.

Jon Hopkins
fuente
gran respuesta: iba a poner algo en este sentido en mi respuesta, pero luego comenzaría a acercarse a la longitud del libro y lo ignoraría. :)
Wonko el cuerdo
5

Pregúntese por qué quiere permitir que el usuario personalice cada pequeña cosa. ¿Es para evitar tomar decisiones de diseño usted mismo, forzándolas al usuario?

Aquí hay una buena publicación de Jeff sobre el tema: http://www.codinghorror.com/blog/2005/09/the-problem-with-configurability.html

Alex Warren
fuente
1
+1 Por eso es importante un buen conjunto de valores predeterminados. Nunca diseñaría algo que requiriera que el usuario lo configurara; Me preocupa más cuántas opciones se deben dar.
Michael K
+1 en referencia al artículo de Jeff. Esto cubre todo lo que quería decir sobre el tema, y ​​también se relaciona bien con su punto sobre la convención sobre la configuración.
Mark Freedman
5

Los usuarios, en general, odian las aplicaciones que están tan mal pensadas que tienen que personalizarlas para satisfacer sus necesidades. En mi experiencia, la mayoría de los usuarios no se sienten tan cómodos usando una computadora como una persona de TI y no personalizarán incluso cuando se les dé la opción.

Si está personalizando para evitar hacer un trabajo de diseño adecuado, está personalizando demasiado. Si está personalizando porque le gusta la personalización y no porque sea un requisito, está personalizando demasiado. Si tiene un requisito genuino para personalizar, aún debe preguntarse si es una buena idea y averiguar la razón subyacente por la que creen que necesitan personalización. A menudo encontrará un nuevo requisito que no habían mencionado si usa un requisito de personalización como un lugar para iniciar un diálogo con la persona que hace los requisitos.

HLGEM
fuente
4

Depende de la aplicación

Esto puede sonar como una evasión, pero realmente no lo es (o, al menos, no está destinado a serlo).

La cantidad de personalización debe depender, en parte, de la sofisticación del usuario final esperado. Es mucho más probable que los tipos de ingenieros entren y jueguen con la configuración del usuario que, por ejemplo, mi abuela jugando al solitario en una máquina Win98.

También depende de cuál sea la aplicación en sí. Si el objetivo de la aplicación es la facilidad de uso, no debe enturbiarlo con un montón de opciones configurables por el usuario.

Demasiadas opciones configurables hacen que una aplicación parezca demasiado compleja. Si crea una aplicación que tiene muchas de estas opciones, al menos las "escondería" en una pantalla de configuración o cuadro de diálogo "Avanzado ...", y solo pondría un subconjunto de cosas que el usuario promedio de esa aplicación desea cambiar en la pantalla de opciones "normal".

Otra alternativa es "desollar" algo. Eso puede significar las cosas tradicionales de "skinning" (por ejemplo, la pestaña "Apariencia" en las Propiedades de pantalla de Windows), o puede significar un conjunto de opciones que se configuran todas a la vez (por ejemplo, la pestaña "Temas" en el mismo diálogo).

Wonko el cuerdo
fuente
¿Qué opina de un cuadro de búsqueda incremental y un cuadro de diálogo de preferencias similar a Eclipse?
Michael K
@Michael: puede estar bien si su aplicación se acerca a la complejidad y / o audiencia de Eclipse. Nuevamente, Eclipse es principalmente una aplicación de ingeniería, y esos usuarios esperan una gama de opciones más compleja y más amplia. Por otro lado, si estuviera usando algo como el Bloc de notas, no me gustaría molestarme con todo eso.
Wonko el cuerdo
@Michael, ¡en realidad el cuadro de diálogo de preferencias de Eclipse TIENE un cuadro de búsqueda incremental!
@ Thorbjørn Ravn Andersen: Por eso lo estaba usando como ejemplo :)
Michael K
3

Generalmente no me molesto. He tenido que trabajar en muchas máquinas diferentes, y mantenerlas todas personalizadas sería más molesto de lo que parece valer. Si hago personalización en una máquina, me enojaré cuando otra máquina no la tenga. Hacer que sea más fácil mover las personalizaciones sería de alguna manera útil (considere a los usuarios de emacs y sus archivos de lisp del sitio), pero a menudo me parece demasiado molesto de todos modos.

Si su aplicación no funciona bien, pero necesita ser personalizada, ha fallado.

Quiero mi software favorito en una máquina, pero no creo que eso sea lo que quiere decir con personalización.

Un problema con la personalización es que es una promesa para todos y cada uno de los clientes que debe respetar. Envía la versión A y sus clientes la personalizan. Todo bien y bien. Ahora, ¿qué haces con la versión B? Si rompe las personalizaciones de sus clientes, se molestarán, y si lo hace más de una vez, serán muy reacios a personalizar, por lo que se quedará con la funcionalidad de personalización que muy pocas personas usan, además de molesta clientes.

Esto significa que debe prestar atención a la personalización que ha involucrado con cada actualización. Esto puede causarle dolores de cabeza, cuando desee reestructurar algo que debería ser fácil de hacer, excepto que arruinaría las personalizaciones. Debe prestar atención a las posibles combinaciones de personalizaciones que podrían interactuar mal.

David Thornley
fuente
2

Un programa es demasiado personalizable cuando se cumple alguna de las siguientes condiciones:

  1. No hay valores predeterminados razonables listos para usar para las cosas. La personalización es mucho más agradable si las cosas funcionan razonablemente bien, incluso si no lo personalizas. Por ejemplo, odio vi porque su comportamiento inmediato en términos de lo que hacen las teclas de retroceso y flechas es muy diferente de la convención en el resto de la máquina. Sé que esto se puede personalizar, pero cuando camino hacia una máquina de inventario, básicamente no se puede usar hasta que pierdo un montón de tiempo jugando.

  2. Has hecho que tu programa sea tan personalizable que su apariencia y eficacia son efectivamente diferentes en cada máquina, distribución de Linux, etc. y efectivamente no puedes "aprender una vez, usar en todas partes". De nuevo, ver vi.

  3. Ha creado una plataforma interna de modo que el usuario estaría mejor simplemente usando la plataforma externa para lograr lo que quiere. Por ejemplo, una vez que un editor de texto o una herramienta de procesamiento de texto de línea de comando se vuelve demasiado poderosa, probablemente sea más fácil escribir un script Python rápido y sucio para realizar las manipulaciones de texto más complejas que aprender a hacerlo usando La plataforma interior. Del mismo modo, una vez que una biblioteca de trazado se vuelve demasiado poderosa, probablemente sea mejor dejar que el usuario interactúe directamente con la biblioteca GUI que está construida encima para personalizar los detalles más finos del trazado.

dsimcha
fuente
1
+1 # 3 es uno que no había considerado.
Michael K
No estoy seguro de por qué usas vi como ejemplo. Si bien funciona de manera muy diferente a las convenciones nativas de MS Windows o Mac OSX, es internamente consistente. No he tenido problemas para trabajar en una instalación sin formato en cualquier lugar. Aprenda vi tal como es, no lo personalice, y será utilizable en todas partes, aunque parece que no le gustaría en ningún lado.
David Thornley
1
@David: Ok, pero el software de mi humilde opinión que viola tan severamente convenciones tan importantes está básicamente roto. Además, vi viola las convenciones del software Linux "moderno", como cualquier cosa escrita para KDE o Gnome, por lo que no es solo un problema en plataformas "no nativas".
dsimcha
vi es, definitivamente, lo suyo. Lo más parecido que tiene a una plataforma nativa prosperó hace mucho tiempo. Me parece que no necesita personalización o que no vale la pena personalizarla, dependiendo de su punto de vista.
David Thornley
1
@David: Para mí, lo razonable sería simplemente hacer que los valores predeterminados sean razonables en las versiones más recientes . Si necesita compatibilidad hacia atrás con el vi trabajó en PDP-11, entonces se puede configurar que usted mismo.
dsimcha
2

TL; DR: cuando su aplicación se convierte en un marco intimidante.

Desde el punto de vista del desarrollador de la aplicación , es cuando la personalización permitiría que la aplicación se rompa de tal manera que el soporte se vuelva imposible, ya sea porque el usuario no puede informar cómo configuró la aplicación o porque varias interacciones de configuración se vuelven demasiado tortuosas como para llamar la atención. o colas Piense bien en el sistema de personalización y permita que la información le llegue de manera significativa.

Desde el punto de vista del usuario de la aplicación , es cuando el usuario siente que la configuración de la aplicación es desalentadora, a menudo porque es similar a la programación, por una definición imprecisa de "programación" (esto incluye programación orientada a la GUI o interruptores Blinkens ).

Sí, la línea es borrosa .

Sí, a veces un buen código o (re) diseño de GUI puede hacer que la placa de conmutación de la aplicación incluso con el mismo conjunto de características personalizables .

Cree una curva de aprendizaje entre las configuraciones "informal", "avanzada" y "experta". Podría llegar hasta proporcionar una API y / o secuencias de comandos. Todos los usuarios no comienzan con el mismo pie: un sistema escalonado hará que cada uno se sienta como en casa . También puede crear una sensación de progreso y logro cuando un principiante cambia de "curado" a "avanzado".

Los buenos ejemplos en diversas áreas incluyen Firefox (preferencias, sobre: ​​config, userchrome.css & al.), Chrome (configuración básica frente a "Under the hood"), Mac OS X (paneles de preferencias, "valores predeterminados (1)", AppleScript / Automatizador) , o incluso el vimrc de Vim. Los malos ejemplos incluyen cualquier aplicación cuyo panel de configuración parezca un laberinto. Estoy seguro de que podrías nombrar media docena desde la parte superior de tu cabeza (a menos que te hayan traumatizado para que los olvides).

Lloeki
fuente
1

Firefox podría ser un buen ejemplo: el usuario tiene la capacidad de personalizar la interfaz de usuario y agregar diferentes extensiones según sea necesario. El programa principal no es personalizable, pero el resto es un juego justo.

aggietech
fuente
1

Cuando su aplicación se rompe con demasiada frecuencia por el bien de su cliente o por la cordura de su desarrollador, probablemente tenga demasiados.

Estoy trabajando con una aplicación de servidor cliente de escritorio .NET, SQL Server que permite:

    Custom Tables
    Custom Stored Procs & Views (These can have data modification capabilities as well)
    Creation of custom data sources in the application (Inside or outside the 'live' database)
    Creation of custom grid forms based on custom data source or combining of custom data sources
    Creation of custom reports based on custom data sources
    Creation of custom logic script on data entry fields 
    Customizable data import functionality
    Customizable workflow process data entry and notifications
    Customizable selection and placement of data entry fields/controls on standard forms
    Detailed user security settings to all forms, data CRUD, app functionality and reports

En serio, esta compañía creó una bestia personalizable. Está diseñado para un mercado vertical, pero las otras implementaciones podrían ser ilimitadas.

JeffO
fuente
Uso una herramienta de gestión de proyectos como esa y cada persona que la usa, la odia con pasión. No deberíamos tener que personalizar para agregar un nombre de cliente, por ejemplo. ¿Quién compra una herramienta costosa de gestión de proyectos a menos que tengan tantos proyectos que quieran ordenar por cliente? Dejar que la personalización dicte el diseño de la base de datos es un gran defecto y creará una aplicación de bajo rendimiento y difícil de usar que los usuarios despreciarán. Cada vez que alguien trata de vender un producto COTS con "es infinitamente personalizable", me escapo lo más rápido que puedo porque eso significa que el producto es en última instancia inutilizable.
HLGEM
1

Me gusta diseñar para personalizar, pero antes de comenzar a implementarlo, preferiría que todo lo demás sea realmente sólido. De hecho, probablemente me gustaría obtener la versión 1.0 para que los usuarios puedan manejarla antes de comenzar a pensar en agregar funciones personalizables por el usuario.

Antes de eso, simplemente no sé qué personalizaciones serán útiles para mis usuarios del mundo real. Es posible que estén contentos con el funcionamiento de la interfaz y prefieran tener más funciones disponibles en lugar de tener la capacidad de personalización suficiente para que puedan cambiar la posición de los botones o elementos del menú.

Prefiero tener una interfaz realmente excelente que fuerce un poco la mano del usuario, que tener mucha personalización, pero espere seis meses o un año más hasta que se pueda lanzar mi aplicación. El envío es una característica!

La única excepción definitiva a esto es que si estoy requiriendo combinaciones de teclas, en la mayoría de los casos, quisiera hacerlas personalizables, porque nunca se sabe qué más ha ejecutado un usuario y sería muy irritante chocar con otra aplicación en un forma en que el usuario no podría evitarlo fácilmente.

glenatron
fuente
0

Puede agregar las configuraciones más básicas y de sentido común a un menú, para que puedan modificarse directamente desde la interfaz de usuario. Todo lo demás, que es más complicado, puede ponerlo en algún archivo de configuración u otro medio al que se pueda acceder desde una herramienta de configuración o algo así.

De esa forma, sus usuarios más comunes y no especializados tienen acceso a las configuraciones básicas que necesitan para usar la aplicación, mientras que sus usuarios más especializados, expertos o interesados ​​pueden usar las configuraciones adicionales para satisfacer sus necesidades altamente especializadas.

Creo que esta es la mejor compensación entre tener una aplicación fácil de usar y altamente personalizable. Sin embargo, el éxito de esto es cómo se dividen las configuraciones. ¿Cuáles son los importantes, que son solo para ajustes sofisticados? Esa es la parte difícil, creo. Y no olvide agregar un botón para restablecer los valores predeterminados, en caso de que alguien estropee algo.

Andrei Vajna II
fuente