Cliente não quer pagar projeto porque usei gerador de código
A situação toda parece besteira para mim, mas quero uma segunda opinião porque está indo longe demais.
Um pouco de contexto... Sou freelancer, escrevo em VBA ou c#. 75% dos projetos são microprojetos em Excel.
Ao longo dos anos, construí minha própria biblioteca e um gerador de código. O gerador de código escreve algumas classes e métodos semi-padrão. Coisas que têm uma estrutura, mas muitas vezes precisam de ajustes manuais para a versão final. Para ter um código modular onde eu possa modificar manualmente algumas partes e ainda regenerar outras partes sem perder as alterações, o gerador usa tags para agrupar cada "parte" e quando entrego o trabalho não as apago.
O cliente ficou genuinamente feliz depois que entreguei o projeto (todas as frases definidas, "agora vamos fazer esse outro..." etc.). Alguns dias depois recebo um e-mail onde ele pergunta o que <Sometag>
eram essas linhas. Eu respondi com a verdade. Tags usadas por um gerador de código para encontrar partes específicas do código. Ele estava interessado em VBA, então achei que uma explicação perspicaz seria apreciada.
Uma semana depois envio-lhe a factura e no dia seguinte ele respondeu que como não escrevi o trabalho o preço acordado já não era válido . Agora ele quer pagar menos da metade do preço acordado. (???)
Mas a planilha ainda faz o que deveria fazer. O gerador de código é meu. Escrevi cada linha e há centenas de horas de trabalho nisso.
O que devo fazer? É injusto usar tal ferramenta? O cliente tem algum ponto? Neste projeto, existem 9,5 mil linhas de código aprox. 3k da minha biblioteca, aprox. 4k do gerador e o restante manuscrito. Concordo que este não é um código muito descritivo, mas também não é um código IMO tão ruim. No contrato (mas também por e-mail e chamada de voz), nunca concordamos ou sequer falamos sobre qualquer coisa sobre a forma do código. Ele me disse que ele e seus funcionários tentaram fazer algo assim e o resultado não funcionou.
Minha maior preocupação em recuar muito é que ele poderia escrever uma crítica negativa no Google MyBusiness. Nunca estive em uma situação como essa e não quero que minha reputação seja comprometida por um projeto relativamente pequeno. A compensação envolvida também não é alta o suficiente para justificar uma ação legal.
Respostas
Agência de cobrança. Ele não é um cliente, mas um problema, e esses "clientes" basicamente não valem o seu esforço. Fatura, dirija-se a uma agência de cobrança o mais rápido possível para se livrar dela mentalmente. Ele não tem razão. Como você faz algo é decisão SUA, não dele.
O que devo fazer? Você acha que é injusto usar tal ferramenta?
Se eu fosse você, explicaria ao cliente como usar o gerador de código que você criou permite fornecer soluções excelentes, mas baratas, que atendem às necessidades dos clientes. E ressalto que a solução apresentada atende claramente às necessidades desse cliente, pela satisfação inicial.
Posso me oferecer para rasgar a fatura se o cliente não quiser a solução pelo preço atual e prometer por escrito descartá-la e perder a licença de uso. Esse é um remédio particularmente eficaz se você espera que o cliente precise de sua manutenção em algum momento. Você não quer continuar atendendo a um cliente insatisfeito.
O cliente tem algum ponto?
Não, o cliente não tem um ponto válido. Como o cliente obteve o que contratou, ele deve pagar o preço acordado. Não deveria importar como o código veio a ser construído.
Dito isso, você pode evitar problemas futuros se discutir seu processo com futuros clientes antes de assinar o contrato.
o gerador usa tags para envolver cada "parte" e quando entrego o trabalho não as apago.
Você pode querer reconsiderar a parte "não os exclua".
Minha maior preocupação com uma solução "difícil" é que ele escreva uma crítica negativa. Nunca estive em uma situação como essa e não quero que minha reputação seja comprometida por um projeto relativamente pequeno.
Você decide quanto vale uma crítica negativa em potencial para você.
Diga ao cliente que se o projeto fosse escrito do zero, teria demorado muito mais, teria mais bugs e nunca seria entregue no prazo. Agora, como ele gostaria de pagar? Cartão de crédito ou cheque?
E essa é sua última comunicação com ele. O contrato era para produzir uma solução para um problema que ele tinha, dentro de um orçamento e prazo. Você fez isso - seu erro foi ser cortês o suficiente para explicar seu processo.
Você não precisa de clientes assim. Se você tem um contrato, vá para o tribunal de pequenas causas e receba o pagamento. Se não o fizer, então você pode ter que cancelar - da próxima vez, faça um contrato (nota: se você cancelá-lo, certifique-se de que seu advogado diga ao cliente que ele não tem nenhuma licença para usar o software que você escreveu para eles)
Por alguma razão, as pessoas têm essa noção de que apenas os custos marginais são reais, não os custos de capital. Você vê essa atitude em todos os lugares, desde produtos farmacêuticos até retenção e recrutamento. É uma atitude estranha, mas comum.
E é consistentemente errado.
Tem um amigo advogado? Ação legal poderia ser simplesmente uma carta de demanda.
Como freelancer, você não dá espaço para esse tipo de coisa. Mantenha-o curto e profissional e exija o pagamento. Não entre em um discurso sobre isso. Basta reenviar a fatura com uma nota curta de que já foi negociada, você cumpriu sua parte e espera o pagamento, e se eles simplesmente se recusarem a pagar pelo trabalho realizado, informe-o.
Em seguida, dê algum tempo, se não houver pagamento dentro de um prazo razoável, você poderá ver quais etapas tomar.
Não fique frustrado e não pule em armas, faça isso primeiro antes de qualquer outra coisa. Muitas pessoas tentam se esquivar de pagar, você se acostuma como freelancer.
Se ele achar que você "trapaçou", talvez em vez de um "gerador de código", uma descrição melhor seria que você "compilou de uma linguagem de descrição personalizada" ou "compilou de uma ferramenta gráfica". Quando você usa uma plaina elétrica ou uma máquina CNC, dificilmente a chama de "gerador de marcenaria".
A verdadeira reclamação dele talvez seja que você não entregou o código-fonte real para manutenção futura? É possível que o cliente esteja apenas sendo irracional, mas uma preocupação comercial muito mais confiável (e razoável) pode ser que você tenha vinculado o trabalho à sua ferramenta proprietária, sem permitir que o cliente tenha a ferramenta para manutenção.
Uma boa analogia seria se o cliente pedisse para você projetar um motor de combustão, mas em vez de usar parafusos e roscas padrão métrico, você usasse algum sistema obscuro inteiramente de sua própria criação, o que torna proibitivamente caro manter o motor no futuro sem o cliente. referindo-se a você.
Você pode não ter nenhuma intenção dissimulada ao usar sua ferramenta personalizada e era simplesmente um dispositivo para melhorar sua produtividade, mas não é incomum que o código gerado pela ferramenta seja mais complexo ou menos idiomático do que o código feito à mão.
O cliente pode muito bem considerar que, a menos que você disponibilize a ferramenta de geração para ele, qualquer tempo que você economizou criando o código com essa ferramenta custará a ele no futuro custos fixos para manutenção ou o custo de reescrever o aplicativo do zero quando ele quiser que outra pessoa o modifique. É possível que esta seja a natureza real da queixa?
Não, o cliente não tem razão, e não, você não fez nada de errado. Você entregou o produto que o cliente solicitou pelo preço que o cliente considerou razoável. Como você conseguiu criar o produto é totalmente irrelevante.
O que você poderia fazer para amenizar o cliente é explicar que todo software é desenvolvido com ferramentas... compiladores, bibliotecas, geradores de código etc. torna seu trabalho mais eficiente. O fato de você usar ferramentas já foi contabilizado no preço que você cotou ao cliente. Se você não usasse um gerador de código, teria que cobrar mais para cobrir o aumento do custo.
Seja breve e honesto....
O preço que citei incluía o uso do gerador de código. Se eu não tivesse usado o gerador de código, teria que cobrar mais pelo projeto. Se houver algo insatisfatório com o resultado, avise-me e podemos discutir uma solução.
Considere também a possibilidade de que ele tenha um problema legítimo com o código gerado. Por exemplo, talvez o código não seja fácil de mudar.
Como cliente (e sabendo como funciona o desenvolvimento de software), gostaria de poder entregar sua entrega a outra empresa no próximo ano e permitir que essa empresa faça alterações ou acréscimos, a um preço normal.
Então, se o que você entrega torna isso extraordinariamente difícil, então o cliente tem razão. Se não for muito mais difícil por causa de suas ferramentas, então não. E que você usou ferramentas para desenvolver com mais eficiência não é motivo para não pagar.
Mas o que realmente importa é o que diz o contrato. Se você entregou o que diz o contrato, o cliente precisa pagar.
Parece haver uma falta de comunicação no início. Se o cliente quisesse um código base facilmente editável para mudar de acordo com sua escolha e aprender um pouco de VB por si mesmo, então ele e você ignoravam as intenções um do outro.
Alguns geradores de código fornecem código muito detalhado e ilegível, então não sei porque as pessoas comentam sem nem ver o código, ou a solicitação de trabalho ... se ele disse "porque estou desenhando meu próprio código / projeto integrado ao seu trabalho" por exemplo... Não sabemos o valor acordado e o volume de trabalho. Ele pode ter assinado o acordo e o preço com base na codificação de seu próprio trabalho manualmente, ou seja, esperava mais trabalho feito e um resultado manual. Pessoalmente, eu avisaria um cliente sobre os detalhes de um gerador de código se ele for um programador júnior sem muito dinheiro que precise de código editável.
Existem muitas variáveis e incógnitas nesta questão para descartar o cliente como uma entidade maliciosa sem rosto, nem mesmo temos uma transcrição do motivo da reclamação ou da solicitação do código. Qual era o número de linhas e o preço? 100 ou 10.000? Fiquei surpreso que ninguém considera se o cliente tem um lado humano para contar ou se ele tem emoções ou é um indivíduo júnior ou um grupo, caso contrário, este é um julgamento unilateral.
Não tentarei uma resposta direta à pergunta, pois você já tem muitos bons conselhos aqui (pessoalmente, vejo um cliente agarrando por qualquer motivo que possa pensar em não pagar. Se não fosse o gerador de código, ele encontraria algum outra desculpa ).
Meu conselho para o futuro, no entanto, é empregar um esquema de "teste gratuito por 30 dias, então você deve inserir uma chave de licença para continuar a usar" em seus produtos de código.
Por 30 dias, é claro, quero dizer "O tempo que leva para receber o pagamento", não exatamente 30 dias.
Agora, se o cliente reclamar... não adianta!
Você obtém um teste de funcionamento completo para fazer o teste de aceitação do usuário e verificar a adequação ao serviço.
Quando, se você pagar, o contrato me obriga a lhe dar uma chave de licença... o que farei, é claro.
Você não paga e tenta me enganar?! Espero que tenha gostado de ver como meu aplicativo é útil para você, o quanto você poderia se beneficiar dele... se tivesse pago apenas.
Se você puder, tecnicamente, eu diria que vá um passo adiante e, quando o teste terminar e nenhuma licença for fornecida, espere, digamos 3 dias, e então acione uma desinstalação/exclusão completa do código do seu produto da máquina de destino.
Você não quer que o cliente faça engenharia reversa para obter uma licença válida e não pague o que lhe é devido.
Apenas certifique-se de que seu advogado torne tudo isso legal no contrato.
Você sabe, "legalizar" para "O produto codificado é propriedade exclusiva da ToninCorp, até o ponto em que a compensação acordada tenha sido entregue pelo cliente à ToninCorp, momento em que a propriedade do produto é transferida automaticamente para o cliente.
Isso não não dá direito ao cliente aos serviços de manutenção da ToninCorp sem remuneração adicional".
Lamento que tenha sido enganado. É uma merda e acontece com cada um de nós, mesmo os mais cautelosos.
Obtenha o que lhe é devido a todo custo.
Uma crítica ruim é ruim, é verdade. Conseguir um nome por ser um push-over é um fim de carreira!
Há uma razão para a máfia não deixar ninguém escapar , mesmo que eles tenham roubado um chiclete! Se você conseguir o nome de alguém que pode ser intimidado e aproveitado ... esses serão os únicos clientes que virão em sua direção.
É uma espiral de fim de carreira.
Apenas não!