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?
fonte
Respostas:
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.
fonte
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? "
fonte
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.
fonte
Gostaria de perguntar qual destes você acha que descreve você:
ou
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.
fonte
Eu consideraria isso antiético, sim.
fonte
Há realmente duas perguntas que precisam ser respondidas aqui e abordarei as duas:
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.
fonte
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.
fonte
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.
fonte