É errado pegar o código que você produziu no trabalho e reutilizá-lo para projetos pessoais?

31

Nos meus vários locais de trabalho, eu sempre escrevia um código que me fazia pensar "isso seria realmente útil em outras situações". De fato, intencionalmente escrevo código, mesmo que demore mais tempo, o que sei que me ajudará no futuro (por exemplo, SubString()funções personalizadas ). Um bom candidato para esses trechos são várias classes 'Auxiliar'.

Esses trechos, com certeza, provavelmente podem ser encontrados em outros lugares on-line, mas o ponto é que os escrevi e os usarei novamente mais tarde em outros trabalhos ou em projetos pessoais. Atualmente, não mantenho uma biblioteca de códigos pessoal, mas a questão é: é errado pegar o código que você produziu no trabalho e reutilizá-lo ( a ) para projetos pessoais e ( b ) em outros trabalhos?

Arj
fonte
2
@ Michael Similar, mas não uma cópia exata. As respostas são muito semelhantes, mas na verdade são duas preocupações diferentes. Este é sobre pequenos trechos de código - algumas classes, um método ou dois. O outro é sobre reproduzir um projeto inteiro.
Thomas Owens
O engraçado é que eu sempre acho que o fluxo está na outra direção . Eu costumo criar os pedaços de código realmente interessantes em meus projetos de hobby, onde experimento mais. Certamente ninguém reclama quando essas idéias bem-sucedidas entram no meu trabalho pago. :-)
DaveGauer 27/02

Respostas:

25

Sempre resolvi esse problema tendo um projeto pessoal onde coloco todas as minhas idéias malucas e coisas genéricas e depois licencio-o sob a licença BSD, que permite que as pessoas reutilizem, alterem, renomeiem, fechem e cobrem dinheiro por isto. Dessa forma, eu mantenho os direitos autorais, mas posso reutilizar o código como quiser para esse e aquele empregador, de modo que mantenho os direitos autorais do original, mas o empregador mantém os direitos autorais da instância reutilizada. Eu acho que se eles tivessem um problema com isso, teriam que me pagar para reescrevê-lo no horário de trabalho, o que não faz sentido do ponto de vista deles. Além disso, as empresas usam o código BSD o tempo todo, uma vez que a idéia por trás do BSD é permitir que pessoas e empresas o façam praticamente o que quiserem, incluindo rebranding e venda.

Então, é claro, se forem feitas adições ao código no local de trabalho, não será possível reutilizá-lo em outro lugar sem reescrevê-lo no meu próprio tempo ... o que é bom porque coisas genéricas tendem a ser relativamente pequenas, a menos que seja um idéia que justifica um esforço considerável de tempo livre.

Escrevê-lo no seu próprio tempo e licenciar o código sob uma licença no estilo BSD deve permitir que você mantenha uma biblioteca para si mesmo, que pode ser usada praticamente em qualquer lugar que você quiser.

Agora, quanto aos contratos que alegam sugar todos os direitos autorais de seus projetos pessoais ... isso provavelmente difere radicalmente entre jurisdições, mas em pelo menos algumas jurisdições ocidentais é meu entendimento que um contrato não pode fazer isso. O contrato pode dizer que sim, mas não seria cumprido em um tribunal porque os direitos autorais precisam ser explicitamente transferidos, em oposição a "toda a sua base nos pertence" - meio acordo que nunca seria mantido (em a jurisdição de onde eu sou de qualquer maneira). Existem várias restrições sobre o que pode ser sustentado em um tribunal por contrato, e é por isso que você geralmente (e espero) vê uma cláusula dizendo algo no sentido de que se uma parte do contrato não funcionar legalmente , o restante do contrato ainda é válido.

Mas, como sempre, consulte um advogado antes de interpretar isso como aconselhamento jurídico preciso. Eu nunca fui levado a tribunal por isso, então não conheço nenhuma dessas coisas como fatos à prova de advogados. :)

Teekin
fonte
31

Depende do seu contrato de trabalho. Hoje em dia, a resposta mais provável é (a) sim, isso está errado e (b) sim, isso está realmente errado. Quase todos os contratos oferecidos aos desenvolvedores hoje possuem disposições dizendo que qualquer código que você escreve enquanto empregado pela empresa (seja durante o expediente ou não) é deles e você transfere automaticamente seus direitos autorais para eles. A menos que você tenha negociado especificamente contra isso, isso provavelmente se aplica a você.

No entanto, como sempre:

Não acredite em nós! Consulte um advogado antes de fazer algo potencialmente perigoso.

Kilian Foth
fonte
7
+10 (se eu pudesse) por "Não acredite em nós! Consulte um advogado antes de fazer algo potencialmente perigoso". Melhor. Aconselhar. Sempre.
Sardathrion - Restabelece Monica
2
Você tem alguma fonte para a afirmação de que "quase todos os contratos oferecidos aos desenvolvedores" estipulam que "qualquer código que você escreve enquanto empregado pela empresa (seja durante o expediente ou não)" pertence ao empregador?
um CVn
3
Esses termos são rotineiros de uma maneira que o empregador se cobre demais em vez de muito pouco e, em muitos casos, há espaço para o senso comum. Dito isto, (1) você precisa ter certeza de que sua visão do senso comum concorda com a deles e (2) é um grande risco. Alguns anos depois, as opiniões podem mudar - especialmente se você estiver ganhando muito dinheiro ou se achar que algo que você escreveu pode estar prejudicando suas vendas. Para uma biblioteca de pequenas funções gerais de utilidade, provavelmente é mais fácil reescrever e não ter a preocupação. Qualquer coisa mais substancial e você está em um terreno muito perigoso.
Steve314
4
@ MichaelKjörling. A fonte que você procura está na excelente resposta de Joel Spolsky sobre esse assunto em Start Ups .
TRiG 07/10
22
Na verdade ... acho irritante e irreal dizer sempre perguntar a um advogado. Primeiro de tudo, porque é senso comum que você pode estar errado; se você aconselha sobre como corrigir uma vulnerabilidade crítica de segurança no SO, não diz "Pergunte a um programador!" toda vez. Segundo advogados são caros; honestamente, quantas pessoas você acha que realmente contratarão um advogado para fazer uma pergunta / curiosidade - geralmente trivial? Já que você já contratou um advogado para pedir algo assim?
Thomas Bonini
9

Apenas reescreva o código como e quando você precisar . Evita completamente o problema por alguns minutos de codificação.

As chances são de que você tenha aprendido mais e escrevendo algo melhor. Reescrever o código também geralmente o torna mais elegante.

Tom Squires
fonte
Concordou, mas e as sub-bibliotecas que não são apenas alguns minutos de código? Classes para acessar bancos de dados, criar arquivos, etc? Verdadeiro embora que reescrita melhora código
Arj
3
Não é tão simples assim. Qualquer reimplementação precisa ser completamente diferente do código original. Mesmo reescrevendo isso pode ser ruim. Fazer uma versão melhor do material existente é definitivamente ruim. É melhor mantê-lo completamente separado.
tp1 7/10/11
Se você desenvolver algum tipo de algoritmo proprietário para alguém, você provavelmente terá problemas se o escrever novamente para outra pessoa. É um pouco superficial. Se for apenas um código padrão, sim, fácil o suficiente para iniciar uma nova coleção.
Tim Post
@ tp1 Espere, e se o objetivo da função x()for tão específico e útil que não haja muitas maneiras de escrevê-lo? Nesse caso, como você pode mantê-lo separado se a implementação é tão semelhante?
Arj
@ a12jun, bem, é por isso que precisa ser considerado separadamente para cada situação. O conceito de classificação é provavelmente a experiência existente do programador em ciência da computação, e escrever isso é bom. Mas se for algo específico que é raro ou específico para algum tipo de software, será ruim.
tp1
6

Dependendo dos seus termos de emprego, pode ser. Consulte seu supervisor, departamento de recursos humanos, departamento jurídico e / ou departamento de ética para determinar o que é de sua empresa e o que é de sua propriedade, bem como qual é o processo de solicitação para obter direitos de uso ou propriedade de coisas que você produz no trabalho.

Quase todos os lugares em que trabalhei, coisas que pertencem a projetos são de propriedade da empresa, mas eu solicitei e obtive permissão para divulgar os projetos pessoais caso a caso, o que geralmente exigia explicar o que eu queria. a ver com isso e como não seria prejudicial para a organização deixá-lo ir.

Thomas Owens
fonte
Eu concordo com isto; conversar com as pessoas da sua própria empresa é um bom ponto de partida (supondo que você tenha um relacionamento razoavelmente bom com elas). Não é improvável que eles digam "claro, faça o que quiser com isso, desde que não esteja intimamente relacionado a negócios".
Keith Thompson
Sim, é uma boa idéia tentar pedir permissão: o contrato pode dizer "toda a sua base pertence a nós", mas geralmente é apenas para fins de CYA, e eles podem estar dispostos a permitir coisas que o seu contrato não garante . (Mas você pode querer certificar-se de que você obtê-lo por escrito, apenas no caso.)
Samb
4

Tive algum sucesso (não total) ao conseguir que meus empregadores concordassem em liberar, sob uma licença de código aberto, parte do meu código escrito enquanto eu trabalhava para eles. Principalmente código que escrevi no meu tempo livre, mas às vezes não. É todo o código não específico de qualquer setor.

Comecei tudo escrevendo algumas bibliotecas enquanto estava desempregado e depois as liberando sob a licença do MIT. Então, durante o processo de contratação em empregos posteriores, eu mencionava e dizia que usaria meu código para ajudá-los, se pudesse, mas eles se importariam se adicionassem coisas que eu escrevi enquanto trabalhava para elas, mas apenas coisas que não eram específicos aos seus negócios e somente com a aprovação deles.

Os resultados variaram, mas consegui construir minha biblioteca ao longo do tempo. E houve casos em que a biblioteca acelerou o tempo de desenvolvimento para meus empregadores.

psr
fonte
4

Estou surpreso que a resposta mais votada aqui seja "sim". Como desenvolvedor, a resposta sempre foi "absolutamente não", exceto nas circunstâncias em que o código é:

  1. Uma biblioteca composta anterior que desenvolvi independentemente do projeto atual e de todos os projetos anteriores, ou
  2. Uma biblioteca que foi disponibilizada para esse fim, por exemplo, material de código aberto.

Alguém pagou para você escrever o código. Exceto por um entendimento e acordo diferentes, o que é bom, não é certo que outra pessoa colha os benefícios DIRETOS.

Agora - a palavra DIRETO. Se você chegar ao final de um projeto e aprender algo interessante e criar algo útil que não esteja diretamente relacionado à propriedade intelectual do cliente, reserve um tempo e crie uma biblioteca para ele. Ainda melhor - INICIE UM PROJETO DE FONTE ABERTA COM ELE, para que todos fiquem mais ricos por isso. Eu acho que é absolutamente 100% eticamente puro como a neve e, de fato, eu mesmo fiz isso.

A curto prazo, a reutilização do código que você recebeu para escrever para outra pessoa causará dores de cabeça legais. A longo prazo, causará dores de cabeça aos seus personagens.

Chris B. Behrens
fonte
11
Bravo por responder de maneira ética, e não legal. Lembre-se: toda a moralidade não está contida na lei. Além disso, pelo menos nos EUA, The Law saiu da realidade e da sociedade. A lei e os advogados parecem trabalhar ativamente contra o bem maior.
Bruce Ediger
Resposta fina e elegante, mas nada a ver com a lei. Legalmente, essa resposta é de fato instável na maioria dos países ocidentais.
quickly_now
2

Tenho certeza de que essa é uma questão legal, dependendo de onde você mora / trabalha e o que foi acordado / seu contrato.

Se eu aprender algo sozinho, no meu tempo livre, todas as despesas pagas por mim (computador, acesso à Internet, software etc.), eles não gostariam que eu o utilizasse no meu trabalho? Você encontra uma regex para um projeto pessoal e decide enviá-lo por e-mail para sua conta comercial, porque provavelmente poderá usá-lo. Seria um pouco tolo passar o tempo da empresa fingindo procurá-lo na internet novamente. É claro que nos esforçamos para melhorar nosso trabalho, é isso que se espera dos programadores, blá, blá, blá, mas e se ele estivesse em uma área fora da programação ou mesmo de TI? Eu posso segurar se eles querem jogar este jogo.

A empresa pode tentar manter um controle firme do código que eu produzo. É apenas uma base ruim para construir um relacionamento. Se eles se importam tanto com algumas linhas de código, não consigo imaginar até que ponto eles irão dominar meu tempo; que vale muito mais.

JeffO
fonte
1

Eu tive os mesmos pensamentos também no passado. Infelizmente, acho que qualquer coisa que você escreva diretamente para o seu trabalho seria tecnicamente mantida sob direitos autorais pelo seu empregador. Você precisaria pedir permissão para reutilizar esse código em outro trabalho não relacionado à empresa.

Por outro lado, se você escrevesse código no seu tempo livre para um de seus próprios projetos, poderia protegê-lo com algum tipo de direito autoral e depois oferecer esse código ao seu empregador para uso.

De qualquer maneira, é preciso haver uma comunicação clara sobre o assunto.

Claro, IANAL.

Mike Cellini
fonte
1

Sua pergunta é muito semelhante a esta: " Código aberto - é legal recriar / código aberto um programa que você criou anteriormente para outra empresa? "

Eu diria que você tem motivos legais instáveis, pois as empresas para as quais trabalhou provavelmente possuem o código que você escreveu para elas. Seria melhor codificar as rotinas do zero, mas mesmo assim poderia haver perguntas se você ainda tivesse cópias do outro código.

[Eu não sou advogado, portanto, não espere que meu conselho o ajude em um tribunal.]

jwernerny
fonte
+1 em "Não sou advogado, portanto, não espere que meu conselho o ajude em um tribunal".
Sardathrion - Restabelece Monica
1

Eu diria que esses métodos / funções pouco genéricos não devem ser mantidos entre os projetos. Na maioria das vezes, você pode usar o Boost ou o que seu idioma fornecer para fazer isso. Na maioria das vezes, esses são melhores escritos que os seus.

Uma boa idéia é ter um conjunto de testes de unidade para eles e usá-los para testar seu kata de código.

Sardathrion - Restabelecer Monica
fonte
1

Os empregos estão indo para a Ásia, então reescreva o código enquanto o trem de molho ainda existe. Se você é pago para escrever um código, escreva-o ou cole-o e finja que o reescreveu enquanto fazia algo divertido. Ou, melhor ainda, trabalhe em casa e pague alguns codificadores mais qualificados, inteligentes e, o mais importante, muito mais baratos da Ásia para escrever o código para você e embolsar a diferença. Então você pode sair e apreciar o mundo antes que nossos deuses corporativos nos deitem, e todos nós somos destituídos trabalhando em fábricas de chips produzindo chips a 2 centavos de dólar por hora para ricos consumidores chineses e indianos de iphone.

Marabutt
fonte
0

Sei que essa é uma pergunta antiga, mas alguém a questionou e achei que seria uma boa ideia adicionar uma referência à triste história de Sergey Aleynikov . Antes de pegar qualquer código do trabalho, leia sobre como isso arruinou sua vida e o levou à prisão .

JimmyJames
fonte