É razoável NÃO fornecer documentação técnica e testes de unidade ao cliente?

8

Como fornecedor independente contratado para escrever um produto para uma empresa, é razoável enviar apenas o código-fonte e a documentação do usuário, deixando de fora os documentos de projeto, diagramas de arquitetura, testes de unidade etc. (basicamente qualquer outra coisa que não seja estritamente necessária para executar o produto ou estendê-lo)?

O objetivo é tornar o produto final extensível para o cliente, para que ele possa promover seu desenvolvimento internamente, mas não de graça. Eles teriam que se aprofundar na fonte para entender algumas decisões de design, etc., e serão responsáveis ​​por escrever seus próprios testes abrangentes para evitar que as regressões sejam introduzidas.

A idéia aqui não é tornar o código ininteligível. Gostaria apenas de criar uma oportunidade futura de ser contratado para escrever extensões em virtude do "conhecimento interno" e da experiência que tenho de ser o autor original.

Isso seria considerado antiético?

Edit: O contrato está sendo negociado no momento, portanto a questão do que constitui entregas finais não foi decidida com firmeza. Além disso, eu deveria ter mencionado que manterei a propriedade do produto. Só concederei ao cliente uma licença de uso. Esse detalhe faz diferença se isso é considerado uma má forma?

Bernie
fonte
4
O que o contrato diz que você precisa fazer?
O contrato está sendo negociado no momento, então nada foi firmemente decidido.
Bernie
1
Nesse caso, considere deixar o preço refletir o que eles querem que você envie.
1
Conselho óbvio: deixe o contrato muito claro, para que não haja ambiguidade sobre quais serão os deveres!
Agos 29/07
Se eles tiverem apenas uma licença de uso, não acho que você precise fornecer essas informações. Eles não devem modificar o seu código se eles tiverem apenas uma licença de uso e não a propriedade do código ou licença para modificá-lo por conta própria.
Bill Leeper

Respostas:

24

Contratualmente, eles seriam espertos ao incluir algum tipo de cláusula sobre o escopo da documentação que desejam. Eles devem compensá-lo por apresentá-los em um formato compreensível e profissional (refaça o desenho do guardanapo).

Não é antiético fazer apenas o que é solicitado e pago, mas sair do seu caminho para ocultar informações está errado.

Se você me der um aplicativo mal documentado e complicado, com o qual não posso trabalhar, estou mais inclinado a pensar que você é um programador ruim do que algum tipo de gênio que minha empresa não pode prescindir. Crie uma reputação de fazer as coisas certas.

JeffO
fonte
Eu não acho que ele daria apenas metade da documentação, apenas o que importa: toda a documentação do usuário final que ele possui. Eu chamaria deixando de fora arquitetura e design gráficos "aleijado" documentação
TheLQ
1
Construir uma reputação de fazer as coisas certas é apenas uma aposta na mesa. Por que não construir uma reputação de ir além?
22411 Scott C Wilson
11

Você os cobrou pelo desenvolvimento de testes e documentos de unidade? e eles pagaram a fatura? Nesse caso, eles têm direito a receber o que pagaram.

Caso contrário, na próxima semana, veremos uma pergunta aqui no p.se.com intitulada 'Como forçamos nosso contratado a nos fornecer toda a documentação técnica e testes de unidade pelos quais pagamos? "

jqa
fonte
1
Bernie mencionou que os produtos ainda não foram negociados. Quando você paga por um produto, não paga necessariamente por todo o código-fonte, diagramas de arquitetura, pesquisa, IP etc. Você paga para receber os produtos a serem entregues.
Kristofer Hoch 29/07
1
Ao ler sua edição, o projeto ainda nem foi acordado, portanto tudo dependerá de como o cliente negocia. Geralmente, se o SOW e a fatura incluírem um item, o cliente o desejará. O cliente pode usar a não entrega como uma desculpa para recusar o pagamento ou pagar parcialmente, independentemente do que o restante do contrato diz.
JQA
7

Você só está se machucando. Se a equipe interna examinar o que você fez e encontrar uma completa falta de documentação, eles acharão que você é um pateta e será menos provável que você o retenha no futuro.

Scott C Wilson
fonte
+1 eu concordo. Às vezes, dar algo de presente hoje, compensa para você amanhã. Obviamente, você precisa manter isso em perspectiva.
1
Isso é verdade, mas eu nem chamaria esse caso de realmente revelar algo. Isso deve ser considerado parte de todo o pacote pelo qual eles pagaram. Aliás, é uma maneira super fácil de saber se algo não é ético: como você se sentiria se estivesse recebendo?
Scott C Wilson
5

Gostaria de perguntar qual destes você acha que descreve você:

Você está sendo pago por sua experiência em projetar e criar software, estabelecer qual é o problema de negócios e gerenciar o projeto como um todo. Você cobra uma taxa de licença, eles não possuem o software ou o design, e você entrega o código-fonte apenas para fazê-los se sentir melhor - eles realmente não têm o direito de usá-lo.

ou

Você está sendo pago pelo seu tempo para projetar e criar software para eles. Eles conhecem o problema de negócios e estão gerenciando o projeto. Eles possuem o design, o software, o código-fonte e todos os produtos de trabalho criados durante as horas em que você os cobra. Eles têm plenos direitos para usar tudo o que quiserem.

Não tente misturar e combinar essas duas configurações. Você pode cobrar mais pelo primeiro (já que você está trazendo mais habilidades e assumindo mais riscos) ou menos (já que eles acabam possuindo menos) ou o mesmo (se você acha que essas coisas se equilibram.) primeiro, e somos recontratados uma e outra vez por sermos ótimos, não por reter informações. Se você está vivendo a vida da segunda maneira e quer passar para a primeira, há muito mais do que não compartilhar seus documentos de design.

Kate Gregory
fonte
+1 em "somos recontratados várias vezes sendo excelentes, não retendo informações". Também funcionou para mim por muitos anos.
Bob Murphy
3

Eu consideraria isso antiético, sim.

psr
fonte
3

Há realmente duas perguntas que precisam ser respondidas aqui e abordarei as duas:

  • Eu tenho prever que a documentação para o cliente?
  • Devo fornecer essa documentação ao cliente?

Eu tenho prever que a documentação para o cliente?

Você deve fornecer o que o seu contrato diz que você fornecerá. Na minha opinião, isso significa que, se o código-fonte não puder ser razoavelmente mantido / modificado sem também fornecer a documentação, você também precisará fornecer a documentação apropriada.

Você pode querer consultar Obras feitas para locação de acordo com a Lei de direitos autorais de 1976 do Departamento de direitos autorais dos EUA para verificar se a documentação, testes de unidade etc. são de propriedade do seu cliente. Se forem, você definitivamente deseja fornecer esses itens a eles.

Devo fornecer essa documentação ao cliente?

Se você quiser negociar com eles novamente ou se recomendar a outros, precisará fazer todo o trabalho necessário para transformá-los em fãs delirantes do seu negócio.

Isso significa que você precisa entregar a eles o código-fonte da mais alta qualidade, comentado adequadamente e qualquer outra coisa que eles estariam interessados ​​em ter. Meu conselho seria que, quando você se encontrar com eles para entregar os produtos, esteja preparado para fazer os testes de unidade, etc. Depois de analisar todas as grandes coisas importantes, diga algo como "A propósito, Também gere testes de unidade para esses componentes. Você também os deseja? "

Trabalhe para gerar lealdade com seus clientes e obterá os negócios deles novamente no futuro.

Ryan
fonte
1

Eu diria que, nesse ponto, haveria um contrato ou contrato / documento escrito listando toda a documentação que você precisa entregar a eles.

Caso contrário, você pode deixar claro para eles que a personalização do produto - além da contida nos guias do usuário - exigirá conhecimento adicional do funcionamento interno do código. E se você estiver em uma posição de negociação, peça que eles entrem em contato com você para obter mais aprimoramentos e sejam pagos por isso.

Pelo que eu entendo, você já está sendo pago para escrever o código para o seu produto, isto é, ele próprio. Portanto, eles podem considerar antiético se você sair sem documentar tudo.

Sugiro que você escreva um documento de estrutura de tópicos com uma arquitetura de alto nível e indicadores sobre onde procurar os aprimoramentos dos principais recursos. Quais são os arquivos principais e assim por diante. Se o seu trabalho for bom, eles terão prazer em retornar a você para outras tarefas.

JoseK
fonte
1

Eu gosto deste artigo: http://unixwiz.net/techtips/be-consultant.html

O que você está descrevendo não me daria o sentimento de que você está trabalhando com você novamente.

Você pode ser um gênio, mas se você cair morto de A Bus , preciso manter o que comprei de você.

Se você não me der essa capacidade, nunca mais vou contratá-lo ou recomendar contratá-lo para qualquer coisa com a qual eu lide.

Agora, se você está vendendo um binário , por exemplo, uma "embalagem retrátil personalizada" onde é possível vender o mesmo produto para outras empresas, é mais razoável trabalhar com o modelo "menos informações", porque agora você está vendendo um produto.

A diferença é que, com a fonte, estou comprando a capacidade de modificar o código-fonte no caminho. No entanto, com o binário, estou simplesmente comprando a capacidade de executá-lo.

Paul Nathan
fonte
+1: Com base no "fator de barramento", envio documentos de design não solicitados etc. aos meus clientes e os pressiono ativamente para replicar minhas compilações ocasionalmente. "Seguir o caminho" funcionou tão bem que agora estou recusando novos trabalhos. Também foi minha experiência que tentar espremer as gônadas metafóricas de alguém geralmente não gera um relacionamento de confiança que leva à repetição de negócios.
Bob Murphy