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?
gui-design
Michael K
fonte
fonte
Respostas:
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.
fonte
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.
fonte
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
fonte
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.
fonte
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).
fonte
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.
fonte
Um programa é personalizável demais quando uma das seguintes situações é verdadeira:
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.
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.
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.
fonte
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).
fonte
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.
fonte
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:
Sério, essa empresa criou uma fera personalizável. Ele foi projetado para um mercado vertical, mas as outras implementações podem ser ilimitadas.
fonte
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.
fonte
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.
fonte