Quando um aplicativo é personalizável demais? [fechadas]


8

Digamos que você esteja desenvolvendo um aplicativo da área de trabalho e deseje que o usuário possa personalizar menus, botões, mapeamento de teclas e outros comandos e componentes. Quanta personalização deve ser permitida?

Eu gosto que meus ambientes sejam praticamente infinitamente personalizáveis. Também quero que o ambiente tenha um bom conjunto de padrões, para que eu possa ajustar as configurações necessárias, em vez de ter que definir tudo. Alguém tem alguma experiência do usuário para apontar para apoiar ou contradizer minha preferência?


2
Isso não garante uma resposta completa, por isso é um comentário: se a sua caixa de diálogo de configuração exigir uma caixa de pesquisa, é personalizável demais. Por exemplo, Toad, da Quest Software. Oi.
Mark Freedman

Espero que você não seja um desenvolvedor do Google Chrome, porque, se for, essa pergunta merece ser chutada no n ts (contexto para os não iniciados: o Chrome acredita na filosofia de configuração zero. Não consigo nem configurar o meu preferido) E o Chrome infere o * idioma errado .) #
315 Konrad Rudolph

Não, eu não sou. Puramente para meu próprio benefício. :)
Michael K

Esta pergunta parece melhor para o User Interfaces SE.
Mummey

Respostas:


11

lembre-se de que todas as opções / customizações adicionadas criarão um programa mais complexo, que será mais difícil de usar e manter. Se é algo que apenas uma pequena porcentagem de pessoas usaria, eu perguntaria se vale a pena.


Exatamente. Vale a pena gastar 25% do seu tempo de desenvolvimento em um recurso que talvez 5% dos seus clientes usem? Provavelmente não. Ter essa capacidade de personalização extra vai render mais clientes para você? Mais uma vez, provavelmente não.
Andrew Arnold

@ GSto, absolutamente correto! É a complexidade que mata, e cada condição multiplica as possibilidades! Em outras palavras - 16 booleanos independentes fornecem 2 ^ 16 configurações diferentes, todas as quais precisam ser testadas.

1
É nisso que a Apple se destaca - tome decisões e oculte a complexidade.

@Thorbjorn - absolutamente. Eu posso configurar muito mais coisas no Windows, mas no OS XI geralmente não precisa, porque os padrões são todos muito bem pensados.
21411 Jon Hopkins

@ Jeff O - Esse é um bom ponto. não é uma questão estritamente em preto e branco, e é um equilíbrio difícil de encontrar.
precisa saber é o seguinte

9

Quando fará uma diferença positiva significativa para os usuários para permitir a personalização.

Essencialmente, é como qualquer outro requisito - ele precisa justificar o custo / esforço para implementá-lo. Isso pode aumentar a produtividade ou a usabilidade, ou pode haver algum nível de satisfação do usuário, mas deve haver alguma razão para fazê-lo que justifique o esforço envolvido.

Como alguém que gosta de personalização, as perguntas que você deve fazer são:

  • Se eu estivesse pagando, o que pagaria por esse nível de personalização? Quantas pessoas como eu existem? E isso cobriria o custo de desenvolvê-lo?

  • O que meus concorrentes fazem? Qual é a expectativa para produtos nessa área?

  • Se, em vez de gastar o esforço para torná-lo personalizável, eu investisse esse esforço em outros recursos, qual eu preferiria? Isso é verdade para usuários comuns?

Lembre-se de que tudo que você escolhe implementar é realmente outra coisa que você escolhe não fazer (pelo menos por enquanto); portanto, tudo precisa justificar o esforço necessário.


ótima resposta - eu colocaria algo nesse sentido na minha resposta, mas então começaria a se aproximar do tamanho do livro e ser ignorado. :)
Wonko the Sane

5

Pergunte a si mesmo por que deseja permitir que o usuário personalize cada coisinha. É para evitar você mesmo tomar decisões de design, forçando-as ao usuário?

Aqui está um bom post de Jeff sobre o assunto: http://www.codinghorror.com/blog/2005/09/the-problem-with-configurability.html


1
+1 É por isso que um bom conjunto de padrões é importante. Eu nunca projetaria algo que exigisse que o usuário o configurasse; Estou mais preocupado com quantas opções devem ser dadas.
Michael K

+1 na referência ao artigo de Jeff. Isso cobre tudo o que eu queria dizer sobre o tópico e também se relaciona bem ao seu argumento sobre convenção sobre configuração.
Mark Freedman

5

Os usuários, em geral, odeiam aplicativos que são tão mal pensados ​​que precisam ser personalizados para atender às suas necessidades. Na minha experiência, a maioria dos usuários não se sente tão à vontade em usar um computador quanto uma pessoa de TI e não personaliza nem mesmo quando recebe a opção.

Se você estiver personalizando para evitar fazer um trabalho adequado de design, estará personalizando demais. Se você estiver personalizando porque gosta da customização e não porque é um requisito, estará personalizando demais. Se você tem um requisito genuíno para personalizar, ainda deve questionar se é uma boa ideia e descobrir o motivo subjacente pelo qual eles acham que precisam de personalização. Freqüentemente, você encontrará um novo requisito que eles não mencionaram se você usar um requisito de personalização como um local para iniciar um dialogn com a pessoa que faz os requisitos.


4

Depende da aplicação

Isso pode parecer uma imitação, mas na verdade não é (ou, pelo menos, não deveria ser).

A quantidade de personalização deve ser, em parte, dependente da sofisticação do usuário final esperado. Os tipos de engenheiro têm muito mais probabilidade de entrar e mexer com as configurações do usuário do que, digamos, minha avó jogando paciência em uma máquina Win98.

Também depende de qual é o aplicativo em si. Se o objetivo do aplicativo é a facilidade de uso, você não deseja confundir isso com várias opções configuráveis ​​pelo usuário.

Muitas opções configuráveis ​​fazem um aplicativo parecer excessivamente complexo. Se você criar um aplicativo que possui muitas dessas opções, eu as esconderia pelo menos em uma tela ou caixa de diálogo "Avançadas ..." e colocaria apenas um subconjunto de itens que o usuário médio desse aplicativo deseja alterar na tela de opções "regulares".

Outra alternativa é "esfolar" alguma coisa. Isso pode significar as coisas tradicionais de "aparência" (por exemplo, a guia "Aparência" nas Propriedades de vídeo do Windows) ou um conjunto de opções definidas de uma só vez (por exemplo, a guia "Temas" na mesma diálogo).


O que você acha de uma caixa de pesquisa incremental e um diálogo de preferências semelhante ao Eclipse?
Michael K

@ Michael - Pode ser bom se o seu aplicativo abordar a complexidade e / ou o público do Eclipse. Novamente, o Eclipse é principalmente um aplicativo de engenharia, e esses usuários esperam uma gama de opções mais complexa e mais ampla. Por outro lado, se eu estivesse usando algo como o Bloco de Notas, não gostaria de me preocupar com tudo isso.
Wonko the Sane

@ Michael, na verdade a caixa de diálogo de preferências do Eclipse TEM uma caixa de pesquisa incremental!

@ Thorbjørn Ravn Andersen: É por isso que eu estava usando-o como um exemplo :)
Michael K

3

Eu geralmente não me incomodo. Eu tive que trabalhar em muitas máquinas diferentes, e mantê-las todas personalizadas seria mais um incômodo do que parece valer a pena. Se eu fizer a personalização em uma máquina, ficarei aborrecido quando outra máquina não a possuir. Facilitar a movimentação de personalizações ajudaria um pouco (considere os usuários do emacs e seus arquivos de lisp do site), mas, com frequência, eu achava isso demais.

Se seu aplicativo não funcionar bem, mas precisar ser personalizado, você falhará.

Eu quero meu software favorito em uma máquina, mas não acho que isso seja o que você quer dizer com personalização.

Um problema com a personalização é que é uma promessa para cada cliente que você deve respeitar. Você envia a versão A e seus clientes personalizam. Tudo bem e bem. Agora, o que você faz com a versão B? Se você quebrar as personalizações de seus clientes, eles ficarão chateados e, se você fizer isso mais de uma vez, eles ficarão muito relutantes em personalizar, portanto, você ficará com a funcionalidade de personalização que poucas pessoas usam, além de irritada. clientes.

Isso significa que você deve prestar atenção à personalização envolvida em cada atualização. Isso pode causar dores de cabeça quando você deseja reestruturar algo que deve ser fácil de fazer, exceto que isso prejudicaria as personalizações. Você deve prestar atenção às possíveis combinações de personalizações que podem interagir mal.


2

Um programa é personalizável demais quando uma das seguintes situações é verdadeira:

  1. Não há padrões prontos para uso razoáveis. A personalização é muito mais agradável se as coisas funcionarem razoavelmente bem, mesmo que você não as personalize. Por exemplo, eu odeio o vi porque seu comportamento pronto para uso em termos do que as teclas backspace e seta fazem é tão diferente da convenção no restante da máquina. Eu sei que isso pode ser personalizado, mas quando eu ando até uma máquina de estoque, é basicamente inutilizável até que eu perca muito tempo mexendo.

  2. Você tornou seu programa tão personalizável que sua aparência é efetivamente diferente em todas as máquinas, distribuição Linux etc. etc. e você não pode "aprender uma vez, usar em qualquer lugar". Mais uma vez, veja vi.

  3. Você construiu uma plataforma interna para que o usuário fique melhor usando a plataforma externa para realizar o que deseja. Por exemplo, quando um editor de texto ou uma ferramenta de processamento de texto de linha de comando fica muito poderosa, provavelmente é mais fácil escrever um script Python ad-hoc rápido e sujo para fazer manipulações de texto mais complexas do que aprender como fazê-las usando a plataforma interna. Da mesma forma, uma vez que uma biblioteca de plotagem se torna muito poderosa, provavelmente é melhor deixar o usuário interagir diretamente com a biblioteca da GUI em que foi criada, para personalizar os detalhes mais refinados da plotagem.


1
+1 # 3 é um que eu não tinha considerado.
Michael K

Não sei por que você usa o vi como exemplo. Embora funcione de maneira muito diferente das convenções nativas do MS Windows ou Mac OSX, é internamente consistente. Não tive problemas ao trabalhar em uma instalação bruta em qualquer lugar. Aprenda o vi como está, não o personalize, e ele será utilizável em qualquer lugar, embora pareça que você não gostaria em nenhum lugar.
David Thornley

1
@ David: Ok, mas o software IMHO que viola tão severamente essas convenções importantes está basicamente quebrado. Além disso, o vi viola as convenções do software Linux "moderno", como qualquer coisa escrita para o KDE ou o Gnome, por isso não é apenas um problema em plataformas "não nativas".
dsimcha

vi é, definitivamente, algo próprio. A coisa mais próxima de uma plataforma nativa prosperou há muito tempo. Parece-me que ele não precisa de personalização ou não vale a pena personalizá-lo, dependendo do seu ponto de vista.
David Thornley

1
@ David: Para mim, a coisa mais razoável a fazer seria simplesmente tornar os padrões razoáveis ​​nas versões mais recentes . Se você precisar de compatibilidade com o vi trabalhado nos PDP-11s, poderá configurá- lo você mesmo.
dsimcha

2

TL; DR: quando seu aplicativo se torna uma estrutura intimidadora.

Do ponto de vista do desenvolvedor do aplicativo , é quando a personalização permite que o aplicativo se quebre de maneira que o suporte se torne impossível, seja porque o usuário não consegue relatar como ele configurou o aplicativo ou porque várias interações nas configurações se tornam muito tortuosas para causar confusão. ou coroa. Pense no sistema de personalização completamente e permita que as informações retornem a você de maneira significativa.

Do ponto de vista do usuário do aplicativo , é quando o usuário sente que a configuração do aplicativo é assustadora, geralmente porque é semelhante à programação, para uma definição vaga de "programação" (isso inclui programação orientada a GUI ou Blinkenswitches ).

Sim, a linha é um borrão .

Sim, às vezes, um bom código ou (re) design de GUI pode tornar a placa de comutação de aplicativos mesmo com o mesmo conjunto de recursos personalizáveis .

Crie uma curva de aprendizado entre as configurações "casual", "avançada" e "especialista". Poderia ajudar a fornecer uma API e / ou scripts. Todos os usuários não estão começando em pé de igualdade: um sistema em camadas fará com que cada um se sinta em casa . Também pode criar uma sensação de progresso e conquista quando um iniciante passa de "selecionado" para "avançado".

Bons exemplos em várias áreas incluem Firefox (preferências, sobre: ​​config, userchrome.css e outros.), Chrome (configurações básicas versus "sob o capô"), Mac OS X (painéis de pré-visualização, "padrões (1)", scripts / automatizador) , ou mesmo o vimrc do Vim. Exemplos ruins incluem qualquer aplicativo cujo painel de configurações pareça um labirinto. Tenho certeza de que você poderia citar meia dúzia do topo da sua cabeça (a menos que eles o traumatizassem para esquecê-los).


1

O Firefox pode ser um bom exemplo - o usuário pode personalizar a interface do usuário e adicionar extensões diferentes, conforme necessário. O programa principal não é personalizável, mas o resto é um jogo justo.


1

Quando seu aplicativo é interrompido com frequência para o bem do cliente ou para a sanidade do desenvolvedor, você provavelmente tem muitos.

Estou trabalhando com um aplicativo de servidor cliente de desktop .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

Sério, essa empresa criou uma fera personalizável. Ele foi projetado para um mercado vertical, mas as outras implementações podem ser ilimitadas.


Eu uso uma ferramenta de gerenciamento de projetos como essa e todas as pessoas que a usam odeiam com paixão. Não devemos ter que personalizar para adicionar um nome de cliente, por exemplo. Quem compra uma ferramenta cara de gerenciamento de projetos, a menos que eles tenham tantos projetos que desejam classificar por cliente? Deixar a personalização ditar o design do banco de dados é uma falha importante e criará um aplicativo de baixo desempenho e difícil de usar que os usuários desprezarão. Sempre que alguém tenta vender um produto COTS com "é infinitamente personalizável", corro o mais rápido possível, porque isso significa que o produto é inutilizável.
HLGEM 5/10

1

Eu gosto de projetar para personalização, mas antes de começar a implementá-la, prefiro ter tudo realmente sólido. Na verdade, eu provavelmente gostaria de ter a versão 1.0 pronta para ser usada pelos usuários antes de começar a pensar em adicionar recursos personalizáveis.

Antes disso, simplesmente não sabia quais personalizações seriam úteis para meus usuários do mundo real. Pode ser que eles estejam satisfeitos com o funcionamento da interface e prefiram ter mais recursos disponíveis, em vez de ter capacidade de personalização suficiente para alterar a posição dos botões ou itens de menu.

Eu preferiria ter uma interface realmente ótima que force um pouco a mão do usuário, do que muita personalização, mas espere mais seis meses ou ano até que meu aplicativo seja lançado. O envio é um recurso!

A única exceção definitiva a isso é que, se estou exigindo combinações de teclas, na maioria dos casos, desejo personalizá-las, porque você nunca sabe o que mais um usuário está executando e seria muito irritante colidir com outro aplicativo em um maneira que o usuário não conseguiu solucionar facilmente.


0

Você pode adicionar as configurações mais básicas e de senso comum a um menu, para que elas possam ser ajustadas diretamente na interface do usuário. Tudo o resto é mais complicado, você pode colocar em algum arquivo de configuração ou em algum outro meio acessível a partir de uma ferramenta de configuração ou algo assim.

Dessa forma, os usuários mais comuns e não especializados têm acesso às configurações básicas necessárias para usar o aplicativo, enquanto os usuários mais especializados, especialistas ou interessados, podem usar as configurações extras para atender às suas necessidades altamente especializadas.

Acho que esse é o melhor compromisso entre ter um aplicativo fácil de usar e altamente personalizável. O sucesso disso, porém, é como você divide as configurações. Quais são os importantes, que são apenas para ajustes sofisticados? Essa é a parte mais difícil, eu acho. E não se esqueça de adicionar um botão de redefinição aos padrões, caso alguém estrague algo.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.