Como um desenvolvedor deve rejeitar requisitos impossíveis? [fechadas]

73

Aqui está o problema que estou enfrentando:

Citação do gerente de projetos:

Hey Spark, estou atribuindo a você a tarefa de desenvolver uma estrutura que possa ser usada para muitos aplicativos iOS diferentes. Aqui estão os requisitos:

  • Deve ser capaz de detectar a espessura do polegar ou dos dedos usados para manipular a interface do usuário.
  • Com essas informações, todos os elementos da interface do usuário devem ser organizados & dimensionados automaticamente .
  • Para um polegar maior, os elementos devem ser organizados mais perto do centro da tela.
  • Para um polegar menor, os elementos devem ser organizados mais perto dos cantos da tela.
  • Para um dedão maior, todas as fontes devem ser menores. (Estamos assumindo um adulto neste caso.)
  • Para um polegar menor, todas as fontes devem ser maiores. (Estamos assumindo uma pessoa mais jovem, neste caso.)

Resumo:

Essa estrutura é necessária para criar interfaces de usuário fáceis de usar programaticamente. O framework deve ser desenvolvido de tal forma que possamos usá-lo para quantos projetos forem necessários, por isso também deve ser muito favorável ao desenvolvedor.

Eu sou o desenvolvedor responsável por essa tarefa, então minhas perguntas são as seguintes:

  • Como posso explicar que esses requisitos são um pouco ridículos?
  • Como posso explicar que seria melhor se concentrar no desenvolvimento de projetos reais?
  • Como posso explicar que, mesmo que isso fosse possível, eu não recomendaria o desenvolvimento de algo assim?
  • Como eu digo NÃO a este projeto de maneira educada, gentil e respeitosa?
  • Como posso explicar que, mesmo para um desenvolvedor com três anos de experiência, isso pode não ser possível?
por Sagar R. Kothari 21.11.2011 / 12:06
fonte

15 respostas

102

Se você conseguir implementar um conjunto de requisitos fisicamente impossíveis de implementar, pois o dispositivo não oferece suporte e não pode suportar a funcionalidade desejada, é necessário explicá-lo à pessoa que está criando os requisitos.

Você deve ser respeitoso e explicar por que os requisitos não são possíveis de implementar (ou seja, a tela sensível ao toque não consegue distinguir entre o polegar, o dedo ou a caneta. Ele não tem resolução suficiente para detectar a largura do dedo). em> factual , apontando para a documentação existente, se houver alguma.

Não entre em nenhum tipo de discussão emocional e mantenha-se calmo e profissional. Dizer a alguém que suas exigências são bobas nunca é uma estratégia vencedora.

Veja se você consegue entender os objetivos reais do recurso - por que ele é visto como um requisito. Isso pode levar você a um recurso diferente e melhor que resolverá a necessidade. (obrigado @spoike)

@ DarkStar33 sugere nos comentários para fazer a pesquisa e fornecer uma estimativa real de quanto o projeto custará e quanto tempo levará, com a suposição de que o resultado será muito caro e demorado para valer a pena. Estar armado com números e os dados para apoiá-los certamente pode ajudar o seu caso, embora eu ainda olhe para as metas de negócios para ver se eles podem ser atendidos (mesmo parcialmente) de outra maneira.

    
por 21.11.2011 / 12:22
fonte
30

Estes requisitos não são tolos, estúpidos ou ridículos. Este é, de fato, um problema muito importante para os usuários de telas sensíveis ao toque, que as pessoas com dedos maiores têm muito dificuldade em identificar o alvo, o que muitas vezes não é compreendido pelos mindinhos.

No entanto, se você achar que esses requisitos são impossíveis de implementar porque os sensores do dispositivo não são capazes de medir o tamanho do dedo, basta escrever isso: Infelizmente, os dispositivos atualmente disponíveis não suportam essa funcionalidade

    
por 21.11.2011 / 15:06
fonte
16

Eu vou tocar Devil's Advocate aqui um pouco e dizer que eu acho que é tecnicamente viável medir o tamanho do polegar de uma pessoa. O iPhone é um dispositivo multitouch. Para calibração, você pode instruir o usuário a colocar os polegares ou dois dedos na tela lado a lado e medir a distância entre esses toques.

É claro que isso exigiria testes e experimentos para ver quão viável é minha intuição. Talvez os polegares devessem ser arrastados pela tela para obter uma leitura melhor.

Dito isso, há sérios problemas de usabilidade e implementação.

  • E se o dispositivo for compartilhado? Quando a calibração acontece?
  • Como você pode determinar dinamicamente a posição dos elementos da interface do usuário arbitrariamente em todos os aplicativos criados com a estrutura? Obviamente, cada aplicativo terá uma interface do usuário e um layout diferentes.
  • Uma pesquisa simples dos aplicativos iOS atuais mostra que os bem projetados usam todo o espaço horizontal disponível e elementos de espaço já existentes, de modo que os botões importantes são tão grandes quanto possível e colocados próximos às bordas. A largura total do dispositivo é usada para listas e layout, obviamente.
  • Mesmo que fosse possível, qual é a análise de custo / benefício? Quanto seria ganho com esse sistema comparado aos controles padrão da interface do usuário? Não seria mais fácil ter um controle de alternância simples para o tamanho da fonte, como muitos aplicativos já usam?
por 21.11.2011 / 23:08
fonte
12

O que você faz é tratar seriamente e voltar com uma estimativa de quanto tempo levaria para fazer e ter certeza de que a estimativa é muito alta e muito detalhada, para que eles não possam contestar os números altos. Depois de mostrar que não será econômico, eles deixarão você em paz. Certifique-se de indicar que tarefas específicas não são suportadas atualmente pelo hardware e podem ou não ser viáveis. Não se esqueça de adicionar custos para qualquer tipo de especialista a pessoas adicionais que você possa precisar para um projeto dessa magnitude.

    
por 21.11.2011 / 15:46
fonte
11

As pessoas da Apple já pensaram profundamente em todas essas coisas e não criaram uma interface redimensionável dependendo do tamanho do polegar / dos dedos.

Como usuário, eu odiaria alvos móveis sob meus dedos.

    
por 21.11.2011 / 12:40
fonte
10

Se você está preocupado em se meter em problemas por ter exigências impossíveis, então a melhor escolha é dizer imediatamente que é impossível. Quanto mais tempo você permitir que eles criem um plano de negócios em um projeto impossível, mais provavelmente eles o culparão pelo fracasso do projeto.

Acima de tudo, tente não se preocupar com coisas que não são sua culpa, todos nós temos o suficiente para nos preocupar com o fato de termos a capacidade de controlar. Se alguém o considerasse responsável por tal fracasso do projeto, então seria uma injustiça contra você. Você acredita em carma?

    
por 21.11.2011 / 13:57
fonte
8

Uma maneira de desviar a solicitação não razoável é ajudar o cliente a entender a natureza do problema que está tentando resolver. Por meio de uma técnica de entrevista de planejamento coloquialmente conhecida como " exibindo o porquê da pilha ", você continua perguntando " por que "recursivamente (de uma maneira educada e inteligente, é claro):

One important tool for both getting communications going and "cutting to the chase" of specific issues is what Barrett calls popping the "why" stack. This is simply to keep asking the question "why is it done that way?" about project requirements. He gave an archetypal example of what the technique can unearth: "I once worked with a client where there was a requirement that data was printed out at a particular stage in the process, so I asked why" he said. "The answer was that the department receiving the data needed to key it in. It had never occurred to them that the data could be transferred to their application automatically."

O objetivo é chegar ao valor comercial principal do recurso:

  • Proteger receita
  • Aumentar receita
  • Gerenciar custo
  • Aumentar o valor da marca
  • Torne o produto notável
  • Forneça mais valor a seus clientes

(Itens do wiki Pepino )

Se o recurso não se encaixar em uma dessas categorias, ele poderá ajudar o cliente a ver que há coisas mais importantes para se concentrar ou, por meio desse processo de raciocínio, você poderá orientá-lo sobre como lidar com o problema. problema que eles estão tentando resolver de uma maneira mais significativa. Muitas vezes, o problema real está em um nível mais alto de abstração do que o problema que você pediu para corrigir.

Para usar seu exemplo de tamanhos de miniaturas de digitalizações:

Client: We want to detect the thickness of the thumb or fingers being used to manipulate the UI.

Dev: Why do you want to do that?

Client: Because when I try to tap these small buttons I often hit the wrong thing, and our software is used by a lot of construction workers with big hands like me. If they could calibrate the UI for their finger size, it would make it easier to use.

Dev: Ease of use would certainly be valuable to the customer, but why would they want to calibrate the UI? If the people using this are known to have big hands, why not adjust the design for that use case?

Client: I never thought of it that way, I suppose a cleaner design would work just as well for people with small hands too!

    
por 22.11.2011 / 06:37
fonte
7

Aviso de isenção de responsabilidade - Não sei se sua solicitação é possível e, se possível, você precisa determinar quanto tempo levaria e fornecer esse feedback ao seu gerente. Mas estou escrevendo esta resposta com a suposição de que não é viável, pelo menos usando a estrutura padrão - e estou estendendo minha resposta ao caso mais geral quando você realmente não pode ou não deveria fazer algo.

Apenas diga NÃO.

Há muitas respostas "nunca diga não" neste tópico, que acredito ser uma atitude suave e submissa. Pense nisso desta maneira - eu sou o especialista técnico nesta equipe, e os outros membros da minha equipe estão tentando fazer algo que eu acho que é inviável, super complicado, potencialmente não é possível. É minha responsabilidade dizer não.

Claro que posso & deveria dizer não suavemente; Eu posso "recomendo strongmente contra isso" enquanto ofereço para "investigar se é possível" antes dizer não. Mas vou dizer não porque é o meu trabalho.

Existem muitas analogias com isso

  • Meu contador, quero que você coloque meu jantar de Ação de Graças como uma dedução fiscal
  • Senhor Chef, gostaria que meu frango fosse deixado no balcão durante a noite e servido cru, por favor.
  • Meu advogado, quero processar meus filhos por não arrumarem seus quartos
  • Sr. Mechanic, por favor instale um turbocompressor no meu carro elétrico

Você pode pedir a todas essas pessoas para executar tarefas que elas sabem que são tolas, desperdiçadoras, perigosas ou erradas. E você esperaria que todos eles aconselhassem contra essas ações e, finalmente, recusassem (pelo menos eu esperaria que sim). Se algum desses profissionais respondeu 'Hmm, ok, eu acho que podemos fazer isso' - sem me dar um straight up "Esta é uma má idéia" - então, francamente, eu não gostaria de contratá-los de qualquer maneira.

Seus colegas valorizarão e respeitarão sua honestidade, e você economizará muito tempo e dinheiro se fornecer feedback útil, em vez de concordar com algo que sabe que não funcionará.

    
por 21.11.2011 / 23:42
fonte
2

Não deve ser muito difícil dizer ao seu cliente que você não pode implementar algo que sua plataforma de destino não permite. Mas dê um passo para trás e pergunte a si mesmo: qual é a lógica por trás desses requisitos um tanto ridículos? Pelo que posso ler, eles estão muito preocupados com a facilidade de uso. Então pergunte a eles, cavem um pouco mais fundo até que digam a mesma coisa para você: "nós queremos uma interface amigável". Em seguida, orientá-los para o que é factível e o que não é. Diga-lhes que, se eles querem uma interface de usuário fácil, há maneiras fáceis (e mais baratas), como permitir que o usuário defina o tamanho da fonte / ícone (suponho que possível no IOS). Talvez você possa permitir que o usuário controle o tamanho / tamanho do ícone e a disposição do aplicativo por meio de uma guia de configurações? Isso deve ser mais fácil (e mais preciso!) Do que tentar adivinhar a idade de uma pessoa no tamanho do polegar! A última coisa que seu gerente deseja é um código desnecessário, inchado e de difícil manutenção que atinja a mesma coisa que o sistema operacional já oferece. Diga ao seu cliente que os usuários prefeririam controlar o aplicativo em vez de controlá-lo de maneira que possa enfurecê-lo.

    
por 21.11.2011 / 18:30
fonte
1

Minha resposta seria que eu começaria a investigar algumas dessas tecnologias não testadas e deixá-las saber se é possível. Com base nessas descobertas, um plano de desenvolvimento em potencial pode ser iniciado.

Eu não acho que você será capaz de distinguir o polegar de uma pessoa de outra pessoa, mas você pode obter dimensões suficientes dos dedos para saber quando está usando o polegar. O problema real é que, por causa do ângulo do polegar, ele não pode mais tocar no espaço da tela do que outros. Ninguém nunca usa um telefone com o polegar e o coloca na tela como se estivesse tirando sua impressão digital.

Deixe a empresa. Descubra como fazer isso. Vendê-lo por muito mais dinheiro do que você está fazendo agora.

    
por 21.11.2011 / 17:01
fonte
1

Quando se trata de requisitos, geralmente faço assim: tento estimar quanto tempo levaria para realizar um requisito específico.

No caso de requisitos que podem ser impossíveis, peça alguns dias ou o tempo que for necessário para descobrir se é possível. No seu caso, a pergunta é: "É possível determinar a espessura do dedo do usuário?"

Na verdade, essa questão é ainda um pouco mais complexa: "É possível determinar em que medida o dedo do usuário após o primeiro toque em menos de 200 milissegundos para permitir uma interação imediata?" (substitua primeiro por 2 ou ...; e 200 ms por 300 ms ou qualquer outra coisa ...)

Talvez até mesmo responder a essa pergunta demore um mês. Talvez até mesmo se isso for mais ou menos viável, é preciso um algoritmo super complexo que só funciona bem em 80% dos casos.

Você vê aonde estou indo?

As pessoas muitas vezes fazem suposições erradas sobre as possibilidades porque têm pouca experiência e conhecimento sobre o campo em questão. Portanto, você não pode argumentar com intuição, mas precisa de fatos.

Se as outras partes interessadas perceberem que esse recurso levaria dois anos-homem e exigisse que o iPhone 10 chegasse antes de 2014, os requisitos serão reduzidos rapidamente.

    
por 22.11.2011 / 00:14
fonte
1

Isso parece complexo, mas não impossível; o ponto que a tela de toque não pode distinguir entre um polegar um dedo médio ou uma caneta é discutível; o usuário é perguntado na inicialização (inicialização da sessão, qualquer que seja) para colocar um polegar, um dedo médio, etc. para calibrar os tamanhos (faça algumas médias estatísticas) usando vários movimentos, etc.

    
por 22.11.2011 / 19:56
fonte
0

Eu consideraria tentar resolver o problema raiz de outra maneira antes de dizer que não pode ser feito.

Por exemplo, se o usuário frequentemente tentar clicar em um botão pequeno e perder, você poderá observar a área ao redor do botão e usá-lo para recalibrar todos os outros cliques.

A apresentação de uma solução criativa como essa provavelmente é o que eles fazem depois de pedir mais do que a mágica para descobrir a largura de um dedo (o que você pode informá-los não está na API).

Ainda pode ser difícil - colocar uma área ao redor de botões para detectar falhas - então calcule mais horas.

    
por 21.11.2011 / 22:01
fonte
0

Não diga não, pois isso prejudicaria seus sentimentos. Apenas deixe claro que, devido a restrições tecnológicas, 60% do tempo funcionará sempre.

E assim que ele perceber a impraticabilidade e o custo envolvidos em tal empreendimento, sugira uma abordagem mais prática dentro de seu orçamento, como ter uma configuração que permita alterar o tamanho do texto. E os russos levaram um lápis para o espaço.

Tente levá-lo a declarar o problema e a exigência, e não a solução e o design para projetos futuros.

    
por 15.06.2015 / 11:31
fonte
-1

O que eu gosto de fazer é abordar o problema do ponto de vista da equipe. Nesse caso, o gerente de projetos e eu precisamos encontrar uma solução. Eu também gosto de mostrar que venho com uma mente aberta. Se eu ouço o que acho que estão ouvindo impossibilidades, há uma chance de haver um mal-entendido entre eu e o gerente de projeto. Ou talvez não tenhamos chegado a esse momento.

Uma vez que decidimos dar um salto e ter uma conversa aberta, acho mais fácil tratar o problema como econômico. Na tecnologia, quase tudo é possível, dada uma quantidade infinita de recursos. Discutir o que seria necessário fazer, muitas vezes, é a maneira mais fácil de respeitar "dizer não". E essa seria a maneira de eliminar possíveis mal entendidos. Embora, para ser sincero, não estamos dizendo não. E qual é o propósito de dizer não de qualquer maneira. Se o trabalho não vale a pena, não importa se queremos fazê-lo ou não.

    
por 23.01.2013 / 05:22
fonte