Estes são sinais de um desenvolvedor ruim? [fechadas]

36

Eu costumava culpar as alterações nas especificações dos clientes pela alteração do código, sem perceber que os modelos de negócios mudam e é meu trabalho desenvolver de forma adaptável. Agora vejo isso como um sinal de um desenvolvedor ruim (eu mudei!).

Mas agora eu vejo outras 'lamentações' em mim. Algumas vezes, recentemente, me vi dizendo 'é como tentar encaixar um pino quadrado em um buraco redondo' e também me pego culpando a indecisão do cliente por um projeto que não está progredindo.

Há sinais de que devo procurar onde devo mudar minha atitude? O cliente está sempre certo ou às vezes tenho justificativa para ficar frustrado?

Paul T Davies
fonte
20
Um bom lugar para começar é com a auto-avaliação, que é exatamente o que você está fazendo.
Chris
2
O CLIENTE está sempre certo. Mesmo que o CLIENTE afirme que o céu é verde, é seu dever desvendar as leis da natureza sozinho (ou com um dedo para os mais experientes). Como você vai justificar sua existência se não satisfazendo O CLIENTE ?
ThomasX
26
Certa vez, trabalhei para uma empresa cujo CEO ocasionalmente procurava clientes problemáticos e dizia a eles: "O cliente está sempre certo e você está errado; portanto, obviamente, você não é nosso cliente". (E, sim, ele também voltou seu dinheiro.)
Dave Sherohman
4
@ ThomasX: O cliente está sempre certo? Descobri que geralmente há uma lacuna entre o que o cliente deseja e o que ele precisa. O cliente pode não estar ciente de soluções melhores e mais apropriadas.
Skizz
3
Os mesmos argumentos podem ser válidos e inválidos, dependendo do contexto. Por exemplo, os requisitos mudam - mas às vezes eles mudam completamente fora de controle. Faz parte do seu trabalho lidar com as mudanças, mas apenas dentro de limites razoáveis. Você deve antecipar possíveis mudanças, mas você não pode esperar para ter poderes psíquicos ...
Steve314

Respostas:

55

Eu não diria que você é um desenvolvedor ruim. Estar ciente dos problemas já o leva além dessa definição.

Alteração de requisitos. Isso é um dado. Um bom desenvolvedor precisa levar isso em conta. Muitas técnicas de programação modernas ajudam a lidar com isso.

Permanecer fiel às especificações originais não é realista. Também não é realista é mudar os requisitos o tempo todo.

Definitivamente, o cliente nem sempre está certo. É "certo" com mais freqüência do que queremos que ele / ela seja (no entanto, tente acomodá-lo se ele não estiver totalmente desligado). Mas quando você o vir dirigindo o projeto na direção errada, tente advogar pelas coisas que acha que estão certas.

Não existem regras rígidas sobre essas coisas, e mesmo desenvolvedores bons e experientes não alcançaram o 'Zen' perfeito. A única abordagem errada não é tentar melhorar isso.

Boris Yankov
fonte
16
+1, para "Estar ciente dos problemas já o leva além dessa definição".
Maple_shaft
38

Há casos em que é o cliente. Mas esse é seu problema também

Há casos em que é o desenvolvedor e há casos em que é o cliente. Mas, geralmente, os dois são o seu problema; portanto, uma atitude de culpar a si mesmo tende a ser mais bem-sucedida, porque erra no lado da solução de problemas, em vez de apontar o dedo indefeso. Portanto, geralmente você o encontra em desenvolvedores mais experientes.

Uma atitude ainda melhor é IMHO olhar para ele sem culpa: "é culpa do cliente que eu tenho péssimo código, porque ele sempre muda os requisitos" e então torna-se "esse cliente está descobrindo o que deseja, então é mais necessário feedback, prototipagem rápida e flexibilidade" importante do que integridade, robustez e velocidade ".

Uma espécie de mente zen: não julgue, apenas veja como é.

keppla
fonte
Estou emocionado ao saber que ainda há advocacia para o bom e velho "O cliente está sempre certo", +1.
Wayne Koorts
1
Na verdade, é mais como "o cliente está sempre certo ... a menos que você seja o cliente".
Luke Van No dia
@WayneKoorts - desde que estejam dispostos a pagar, eles podem ser chamados de cliente.
JeffO 07/10
2
na verdade, acho que o TCIAR é mais bem-sucedido do que 'todo mundo está errado', mas não tão bom quanto 'quem se importa com quem está certo, apenas identifique o problema'; portanto, o +1 pode ser imerecido.
7125 keppla
1
TCIAR é, em parte, o antídoto para negar que há é um problema.
Steve314
13

Primeiro, um cliente não sabe o que deseja até vê-lo. Isso faz parte do apelo das pequenas iterações do paradigma Agile, com forte envolvimento do cliente. Segundo, não espere que um produto seja "completo" quando você estiver com o código completo.

A Microsoft emprega um produto chamado 'Watson' (a mensagem de feedback que você recebe quando o Windows abre) para rastrear problemas diretamente de volta para um cliente. A rastreabilidade é uma boa maneira de rastrear os problemas dos usuários que os experimentam. Você pode obter rastreabilidade perguntando. Ou, se você tiver os recursos, integre a funcionalidade ao (s) produto (s). A chave é rastrear os problemas / melhorias para que eles possam ser resolvidos.

Finalmente, a certeza de que os clientes podem ser volúveis. Nesses casos, tento me concentrar no segredo do iceberg .

P.Brian.Mackey
fonte
+1 para o segredo do iceberg.
Daniel Pryden
5

A mudança de requisitos é um fato difícil da vida; mas o apodrecimento do código não é causado por isso.

A podridão do código acontece quando há algumas partes do seu código que você não exercita com frequência; portanto, quando você fizer algumas alterações que "não devem afetar mais nada", poderá introduzir bugs. Em outras palavras, o código que não vê a luz do dia se decompõe lentamente e você não pode dizer quando parou de funcionar.

Sim, a culpa é sua e não do usuário.

A verdadeira solução? teste todo o seu código com frequência. Obviamente, a melhor maneira é ter testes automatizados com boa cobertura.

Javier
fonte
+1 para testes automatizados! TDD - Test Driven Development - escrever os testes primeiro com base nos requisitos, para que a maioria ou quase todo o código seja testado, é uma maneira de impedir que o código apodreça, mesmo com a constante mudança de meta. As ferramentas de cobertura também podem ser usadas para captar áreas onde os testes não tocam em nada, áreas que provavelmente sofrerão podridão.
Danny Staple
4

A indecisão do cliente pode ser um grande problema e, se você não é o responsável pelo gerenciamento do relacionamento com o cliente, pode ser muito difícil lidar com isso. Você pode conversar com a pessoa que lida com o cliente e explicar com calma que o progresso não pode acontecer até que o cliente tome uma decisão. Se você é responsável pelo relacionamento com o cliente, precisa informar ao cliente que ele precisa tomar uma decisão antes que o projeto possa continuar. Pode não ser que sua atitude precise de uma revisão geral, apenas um minuto de meditação para se acalmar. ;)

FrustratedWithFormsDesigner
fonte
4

Javier enfatiza que a mudança de requisitos é um fato difícil da vida. Eu também fico frustrado com essas situações, pois muitas vezes me vejo trabalhando em um produto em que o desenvolvedor precisa tomar decisões. Minha opinião costumava ser "Por que a gerência não consegue descobrir isso com o cliente?" Ou "Por que começamos este projeto se o cliente não sabe o que queria?", "É muita dor de cabeça quando eles mudam tanto atrasado no desenvolvimento ".

Fato simples: isso sempre acontecerá, não apenas na programação / desenvolvimento de software, mas em todas as esferas da vida. O mundo seria simplesmente um lugar muito chato e muito diferente se as pessoas nunca mudassem de idéia, nunca se adaptassem, nunca abordassem a mudança. As pessoas tendem a olhar para o que recebem e melhorá-lo. Você não faz a mesma coisa com o seu código? Se eu tiver um bloco de código com o qual não estou feliz (é ineficiente, confuso), eu o melhorarei. (O sistema operacional se queixa de mim? ... às vezes, se estou usando um sistema operacional sem nome, mas geralmente não)

Como programadores, precisamos aproveitar oportunidades para melhorar as coisas e não ficar deprimidos ou irritados com eles. Aproveite a oportunidade para conversar com as pessoas, melhorar seu estilo, melhorar sua ética de trabalho, abordar as coisas com a mente aberta, esforçar-se para ser melhor do que era ontem. Avance na sua carreira e não se acomode com muita facilidade.

Entendo que nem todos concordam com esta resposta, mas acho importante que as respostas a essa pergunta cubram uma perspectiva mais ampla.

Arj
fonte
2

Quando você está interagindo com um cliente, não está programando; você está aprendendo e ensinando.

Mantenha os clientes informados e educá-los sobre o processo. Mudança vai acontecer. Informe-os de que você tentará implementá-los, mas isso custará mais. Deixe-os decidir.

Não entre em detalhes técnicos, mesmo quando a pergunta que eles fizerem for de natureza técnica. Você é tentado porque se sente um pouco na defensiva e quer aceitar um desafio / se divertir. Não faça isso; eles não se importam com os detalhes e param de ouvir após 45 segundos.

Se você não informou antecipadamente, não espere que eles saibam sobre os padrões e as melhores práticas do setor ou qualquer outra desculpa para fazer o que você faz. Eu odeio quando não vejo uma taxa até o final, apenas para que o vendedor me diga que é padrão no setor. Eu não deveria saber disso. Minha resposta é: "Está me fazendo sentir como um idiota também?"

Quando estiver com um cliente, preste mais atenção a ele do que qualquer pessoa ou qualquer outra coisa na sala. Cães domesticados são gênios nisso; especialmente se você tem comida.

JeffO
fonte
1

É um gerenciamento de requisitos ruim ou uma análise ruim. Seu analista de negócios (se você tiver um) ou quem obtém os requisitos precisa sentar-se com o cliente e tentar obter todos os requisitos, mesmo aqueles em que o cliente pode não pensar. Os clientes geralmente não sabem tudo o que desejam, um ótimo analista de negócios os ajudará a descobrir tudo.

Assustadores
fonte
1

É por isso que você sempre deve obter uma configuração do Documento de Requisitos de Negócios e assinar antes que qualquer aplicativo ultrapasse a fase de criação de protótipos / pesquisa.

Agora, a ideia de que este documento é realmente final está com defeito, mas isso deve ajudá-lo a ter uma idéia melhor do que o cliente realmente deseja. E, desde que você escreva seu código com a manutenção em mente, você poderá manter seus problemas no mínimo.

E se você precisar de uma desculpa para recorrer, poderá culpar quaisquer atrasos no BRD, que o cliente tenha assinado, sem incluir tal e qual recurso, etc.

(Claro, isso é apenas uma desculpa, caso você precise. Você sempre deve planejar que eles mudem alguma coisa )

user606723
fonte
1

Na citação de Emerson, "Uma consistência tola é o hobgoblin de mentes pequenas ..." a palavra mais frequentemente ignorada é tola . A consistência não é negociável em certas situações, mas geralmente substitui o pensamento e a análise críticos.

Por um lado, muitos modelos de desenvolvimento são projetados especificamente para ajudar no ambiente que você está descrevendo; portanto, se você tiver que violar seu modelo, não o implementará corretamente em primeiro lugar ou terá o modelo errado.

Mas, por outro lado, se você tiver uma justificativa bem fundamentada e suportável por violar suas regras e poderá mostrar que seu método não autorizado produz códigos mais limpos e de manutenção, não deve ter medo de seguir o caminho sensato.

tylerl
fonte