O que responder a um cliente que pergunta qual das duas tecnologias equivalentes deve ser usada?

14

Como freelancer, muitas vezes meus clientes me perguntam o que devem escolher entre elementos semelhantes, nenhum dos quais sendo melhor que o outro. Exemplos:

“Do I need my e-commerce website be in PHP or ASP.NET?”

“Do I need to host this ordinary web service in Cloud or use an ordinary hosting service?”

“Which one is better for my new website: MySQL or Oracle?”

etc.

Há talvez no máximo 1% dos casos em que a escolha é relevante, e existe uma razão real e objetiva para usar uma sobre a outra, com base nas métricas e estudos precisos. Em todos os outros casos, não importa em nada. É totalmente, completamente irrelevante, seja porque não há implicações¹, ou porque essas implicações são pequenas demais para serem levadas em conta², ou, finalmente, porque é impossível prever essas implicações³.

Se você sabe uma coisa e não outra, a resposta para essas perguntas é fácil:

“You can either write the application in C# or Java, both being probably equivalent in your case. Note that I'm a C# developer, so if you choose Java, I would not be able to work on your project and you would need to find another freelancer.”

Quando você conhece as duas tecnologias, não pode responder a isso.

Neste caso, como explicar ao cliente que a pergunta que ele faz está sujeita a flaming e não tem consequências reais em seu projeto?

Em outras palavras, como explicar que você escolheu usar uma tecnologia em vez de uma equivalente pelas razões relacionadas a recursos humanos, sem dar a impressão de ser pouco profissional ou não se importar com o projeto?

¹ Exemplo: O MySQL é melhor (pior?), em termos de desempenho, comparado ao Oracle, para um site pessoal que será acessado por, oh, sejamos otimistas, duas pessoas por dia?

² Exemplo: para um determinado projeto, me pediram para atuar se a hospedagem do Windows Azure fosse mais barata do que a hospedagem do mesmo aplicativo em um conhecido provedor de hospedagem ASP.NET. O custo revelou-se exatamente o mesmo.

³ Exemplo: seu cliente tem uma idéia de uma aplicação futura (a idéia em si é extremamente vaga). Não há plano de negócios, nenhum requisito, nada mesmo. Apenas uma ideia. Você é perguntado se o Java é melhor que o C # para este aplicativo. O que você responde?

    
por Arseni Mourzenko 04.04.2012 / 22:27
fonte

7 respostas

36

how to explain that you've chosen to use one technology rather than an equivalent one for the reasons related to human resources, without giving the impression to be unprofessional or to not care about the project?

Bem. Você diz exatamente isso:

Em termos de requisitos para este projeto, a tecnologia X e a tecnologia Y são igualmente adequadas para a tarefa, portanto considerações técnicas não entram nela.

É mais fácil encontrar pessoas talentosas com conhecimento da tecnologia escolhida (ou domínio do problema), e é por isso que ela foi selecionada.

Ou - para o propósito deste projeto, usar a tecnologia Y será mais econômico.

Diga como é.

Você pode querer encontrar uma analogia com a qual o cliente possa se identificar. Algo como - com o objetivo de ir da Europa para os EUA, você pode ir em um Boeing 747 ou um Airbus 380. Importa qual deles? Não para o cliente, desde que cheguem lá e as tecnologias sejam igualmente adequadas aos requisitos:)

Qual deles foi selecionado? Qualquer um que a companhia aérea opere ...

    
por 04.04.2012 / 22:35
fonte
7

Eu acho que sua premissa, que a decisão é em grande parte arbitrária, vale a pena questionar. Eu concordo que você não quer acabar em paralisia de análise, onde você tem meses de reuniões do comitê, mas vale a pena alguma consideração. Visto de alto nível, a escolha de tecnologia raramente é arbitrária. É fundamental para a estratégia de negócios, pois influencia strongmente onde uma empresa pode ir no futuro, e é o papel do desenvolvedor guiar a empresa através do processo de decisão.

Os detalhes da tecnologia, como o uso de árvores B pelo MySQL em relação aos da Oracle, ou a sintaxe do PHP versus a O ASP.NET , obviamente, está aberto a muitos debates religiosos entre os programadores e vai realmente ao seu gosto. Uma vez que um consultor semelhante a si mesmo poderia facilmente ter uma opinião radicalmente diferente, essas coisas são de fato bastante arbitrárias. E é razoavelmente bem estabelecido que qualquer desenvolvedor que seja competente em determinada tecnologia fará um bom trabalho de qualquer maneira. Assim, as questões mais importantes para o negócio não são minúcias de linguagem, mas questões de nível mais alto, como:

  • Qual é o cenário de implantação? Algumas tecnologias se prestam a uma abordagem mais interativa, especialmente se houver serviços de hospedagem na nuvem, como Heroku no lugar. Algumas empresas vão gostar disso, outras precisam se hospedar, ter uma presença mais strong de administradores de sistemas, etc.

  • Qual é o tempo de vida e o escopo do projeto? O PHP, por exemplo, é mais fácil do que Java para iniciar um projeto, mas é mais difícil de dimensionar e manter por muitos anos.

  • Que tipos de desenvolvedores a tecnologia atrairá? Para Java, é mais provável que você obtenha quem tenha experiência corporativa. Para PHP, você pode obter mais tipos de designer de crossover ou de administrador do sistema. Para o Node.js , você terá mais desenvolvedores front-end e experimentais, para Haskell, um público acadêmico etc. Todos os estereótipos que conheço, mas dá ao negócio algumas pistas. Cada um desses grupos tem suas próprias culturas, expectativas sobre pagamento e ambiente de trabalho e formas de trabalhar uns com os outros e com o restante da organização.

  • Qual é a disponibilidade dos desenvolvedores? Supondo que os desenvolvedores tenham que estar fisicamente presentes, alguns locais possuem ecossistemas específicos. Em uma cidade cheia de startups, haverá um monte de Ruby on Rails e desenvolvedores PHP, em uma cidade cheia de governo departamentos, haverá muito Java / MS, etc. A grande maioria das linguagens de programação no mundo deve ser descartada simplesmente nesta base.

Esses são apenas alguns exemplos. Quais fatores são mais importantes dependerão da situação, mas o ponto principal aqui é que as empresas precisam adotar conscientemente as tecnologias que se encaixam em sua estratégia, cultura e circunstâncias.

    
por 04.04.2012 / 23:11
fonte
4

Eu daria ao cliente uma matriz de comparação objetiva sobre a viabilidade de usar essa tecnologia. Por exemplo:

“Which one is better for my new website: MySQL or Oracle?”

Na sua matriz:

  • Custo
  • Uso interno
  • Escalabilidade
  • Experiência / familiaridade
  • Suportabilidade
  • Ferramentaria
  • Já está em uso (implantado)
  • Facilidade de desenvolvimento
  • Familiaridade para o desenvolvimento

Etc.

Dependendo de quantos itens em sua matriz, um deve rapidamente chegar a pontuação e determina a viabilidade de usar essa tecnologia contra o outro. Em alguns casos, o MySQL pode ser melhor, em outros, Oracle.

    
por 04.04.2012 / 23:07
fonte
4

Explique em termos que eles entendem - dinheiro. Você pode dizer a eles que escolheu X ao invés de Y porque, mesmo que ambos tenham sido adequados para o projeto, você está mais familiarizado com X do que com Y. E assim você poderá entregar o aplicativo a um custo menor quando usando X do que se fosse escrito usando Y.

    
por 04.04.2012 / 23:32
fonte
2

"Você prefere dirigir um Ford ou um Chevy?" Seria a analogia motriz que eu lançaria para ver se eles podem entender a ideia de que a pergunta não está indo a lugar nenhum. Uma pergunta semelhante poderia ser: "Qual é melhor um hambúrguer ou uma pizza?" onde, sem adicionar mais restrições, a pergunta tem uma variedade de respostas possíveis que alguém poderia dar.

A outra maneira de ver isso é perguntar por que isso é importante para saber e dependendo do material adicional que pode ser encontrado, esclarecendo a questão que isso pode levar a uma melhor resposta. Algumas pessoas podem se perguntar: "O que foi usado para construir meu site de comércio eletrônico?" embora eles prefiram tentar ser impressionantes e colocar algumas palavras de zumbido.

    
por 04.04.2012 / 22:42
fonte
2

Já recebi muitas respostas boas, mas uma coisa que notei não foi mencionada: esta é uma excelente oportunidade para uma divulgação completa da sua parte. Por exemplo,

"Agora ganho minha vida principalmente com a tecnologia < foo & gt ;, por isso não sou completamente imparcial. Entretanto ..."

Eu realmente acho que você ganha credibilidade por esse tipo de declaração.

    
por 06.04.2012 / 13:37
fonte
1

Existem casos raros em que uma tecnologia é claramente inferior a outra - "Devo desenvolver meu site em Python ou Cobol?", mas principalmente é uma questão de cavalos para cursos.

Existe uma metodologia que uso para decidir qual tecnologia atende a um cliente: -

  1. O que eles usam atualmente? Mais do mesmo é geralmente melhor do que algo novo.
  2. A tecnologia atual tem alguma restrição que será excedida pelo novo projeto? Por exemplo, eles usam o SQLite , mas agora esperam que 100 usuários façam atualizações simultâneas.
  3. Se a tecnologia atual não for adequada, escolha entre o líder de mercado de código aberto mais popular e o comercial.
  4. O líder de mercado é significativamente melhor do que a oferta de código aberto e há diferenças significativas para o projeto atual?
  5. Tendo ido em busca de código aberto ou comercial, dê uma boa olhada nas duas ofertas concorrentes mais próximas e veja se elas são mais adequadas.

Na maioria das vezes, a escolha para no passo dois. Se o cliente usar Acme Widgets , experimente as pessoas usando o Acme Widgets, tenha um conjunto de padrões, altere Os procedimentos de controlo e gestão criados em torno da Acme Widgets e da Acme Widgets podem fazer o trabalho, pois os Acme Widgets são o caminho a percorrer - mesmo que o Ezee DohDahs seja tecnicamente melhor para esta tarefa!

    
por 05.04.2012 / 04:04
fonte