¿Es incorrecto tomar el código que ha producido en el trabajo y reutilizarlo para proyectos personales?

31

En mis diversos lugares de trabajo siempre escribí código que me hizo pensar "esto sería realmente útil en otras situaciones". De hecho, escribo código intencionalmente, incluso si me lleva más tiempo escribir, lo que sé que me ayudará en el futuro (por ejemplo, SubString()funciones personalizadas ). Un buen candidato para estos fragmentos son varias clases de 'Ayudante'.

Estoy seguro de que estos fragmentos se pueden encontrar en otros lugares en línea, pero el punto es que los escribí y los volveré a usar más tarde en otros trabajos o para proyectos personales. Actualmente no mantengo una biblioteca de códigos personales, pero la pregunta es, ¿está mal tomar el código que ha producido en el trabajo y reutilizarlo ( a ) para proyectos personales y ( b ) en otros trabajos?

Arj
fuente
2
@Michael Similar, pero no un duplicado exacto. Las respuestas son muy similares, pero en realidad son dos preocupaciones diferentes. Este es sobre pequeños fragmentos de código: un par de clases, un método o dos. El otro se trata de reproducir un proyecto completo.
Thomas Owens
Lo curioso es que siempre encuentro que el flujo está en la otra dirección . Por lo general, encuentro los trozos de código realmente interesantes en mis proyectos de hobby donde experimento más. Ciertamente, nadie se queja cuando esas ideas exitosas se incluyen en mi trabajo remunerado. :-)
DaveGauer

Respuestas:

25

Siempre he resuelto este problema teniendo un proyecto personal donde pongo todas mis ideas locas y cosas genéricas, y luego lo licencia bajo la licencia BSD, que permite a las personas reutilizar, alterar, cambiar la marca, cerrarlo y cobrar dinero por eso. De esa manera, conservo el derecho de autor, pero puedo reutilizar el código a mi gusto para este y aquel empleador, de modo que conserve el copyright del original, pero el empleador retiene el copyright de la instancia reutilizada. Me imagino que si tenían un problema con eso, simplemente tendrían que pagarme para reescribirlo en el horario de trabajo, lo que no tiene sentido desde su punto de vista. Además, las empresas usan el código BSD todo el tiempo, ya que la idea detrás de BSD es permitir que las personas y las empresas hagan lo que quieran, incluyendo el cambio de marca y la venta.

Entonces, por supuesto, si se hacen adiciones al código en el lugar de trabajo, no puedo reutilizarlo en otro lugar sin reescribirlo en mi propio tiempo ... lo cual está bien porque las cosas genéricas tienden a ser relativamente pequeñas, a menos que sea un idea que justifica un esfuerzo considerable de tiempo libre de todos modos.

Escribirlo en su propio tiempo y licenciar el código bajo una licencia de estilo BSD debería permitirle mantener una biblioteca para usted que puede usar prácticamente en cualquier lugar que desee.

Ahora, en cuanto a los contratos que pretenden absorber todos los derechos de autor de sus proyectos personales ... esto probablemente difiere radicalmente entre las jurisdicciones, pero al menos en algunas jurisdicciones occidentales, entiendo que un contrato no puede hacer eso. El contrato puede decir que sí, pero no se aplicaría en un tribunal de justicia porque los derechos de autor deben transferirse explícitamente, en lugar de "todos sus bases nos pertenecen", un acuerdo de Nikda que nunca se mantendría (en la jurisdicción de donde soy de todos modos). Hay una serie de restricciones sobre lo que puede confirmarse en un tribunal mediante contrato, por lo que generalmente (y con suerte) verá una cláusula que dice algo en el sentido de que si una parte del contrato no funciona legalmente , el resto del contrato aún se mantiene.

Pero como siempre, consulte a un abogado antes de interpretar esto como un asesoramiento legal preciso. Nunca me han llevado a juicio por esto, así que no sé nada de esto como hechos a prueba de abogados. :)

Teekin
fuente
31

Depende de su contrato de trabajo. En estos días, la respuesta más probable es (a) sí, esto está mal y (b) sí, esto está realmente mal. Casi todos los contratos ofrecidos a los desarrolladores de hoy tienen disposiciones que dicen que cualquier código que escriba mientras esté empleado por la empresa (ya sea durante el horario de oficina o no) es suyo y usted les transfiere automáticamente sus derechos de autor. A menos que haya negociado específicamente en contra de esto, esto presumiblemente se aplica a usted.

Sin embargo, como siempre:

¡No nos creas! Consulte a un abogado antes de hacer algo potencialmente peligroso.

Kilian Foth
fuente
77
+10 (si pudiera) para "¡No nos creas! Consulta a un abogado antes de hacer algo potencialmente peligroso". Mejor. Asesorar. Siempre.
Sardathrion - Restablece a Monica el
2
¿Tiene alguna fuente para la afirmación de que "casi todos los contratos ofrecidos a los desarrolladores" estipulan que "cualquier código que escriba mientras trabaja en la empresa (ya sea durante el horario de oficina o no)" pertenece al empleador?
un CVn
3
Estos términos son rutinarios en una forma en que el empleador se cubre demasiado, en lugar de muy poco, y en muchos casos, hay espacio para el sentido común. Dicho esto, (1) debe asegurarse de que su visión del sentido común concuerde con la de ellos, y (2) es un gran riesgo. Unos años más tarde, las opiniones pueden cambiar, especialmente si está ganando mucho dinero, o si piensan que algo que escribió podría estar dañando sus ventas. Para una biblioteca de pequeñas funciones de utilidad general, probablemente sea más fácil reescribir y no tener que preocuparse. Algo más sustancial y estás en un terreno muy peligroso.
Steve314
44
@ MichaelKjörling. La fuente que está buscando está en la excelente respuesta de Joel Spolsky sobre este tema en Start Ups .
TRiG
22
En realidad ... creo que es molesto y poco realista decir siempre preguntar a un abogado. Primero que nada porque es de sentido común que puedes estar equivocado; Si aconseja sobre cómo solucionar una vulnerabilidad de seguridad crítica en SO, no dice "¡Pregúntele a un programador!" cada vez. Los segundos abogados son caros; honestamente, ¿cuántas personas crees que realmente contratarán a un abogado para hacer, por lo general, una pregunta / curiosidad de trivia? ¿ Alguna vez ha contratado a un abogado para preguntar algo como esto?
Thomas Bonini
9

Simplemente vuelva a escribir el código cuando lo necesite . Evita completamente el problema por unos minutos de codificación.

Mientras tanto, es probable que haya aprendido más y escriba algo mejor. Reescribir el código también generalmente lo hace más elegante.

Tom Squires
fuente
De acuerdo, pero ¿qué pasa con las sub-bibliotecas que no son simplemente unos pocos minutos de código? ¿Clases para acceder a bases de datos, crear archivos, etc.? Es cierto, sin embargo, que la reescritura mejora el código
Arj
3
No es tan simple. Cualquier reimplementación debe ser completamente diferente del código original. Incluso reescribirlo podría ser malo. Hacer una mejor versión de las cosas existentes es definitivamente malo. Es mejor mantenerlo completamente separado.
tp1
Si desarrolla algún tipo de algoritmo patentado para alguien, (probablemente) se metería en problemas si lo volviera a escribir para otra persona. Es un poco incompleto. Si es solo un código repetitivo, sí, es bastante fácil comenzar una nueva colección.
Tim Post
@ tp1 Espera, ¿y si el objetivo de la función x()es tan específico y útil que no hay tantas formas de escribirlo? En ese caso, ¿cómo puede mantenerlo separado si la implementación es tan similar?
Arj
@ a12jun, bueno, es por eso que debe considerarse por separado para cada situación. El concepto de clasificación es probablemente la experiencia existente del programador en informática, y escribir eso está bien. Pero si es algo específico que es raro o específico para algún tipo de software, entonces será malo.
tp1
6

Dependiendo de sus términos de empleo, podría ser. Consulte con su supervisor, departamento de recursos humanos, departamento legal y / o departamento de ética para determinar qué es propiedad de su empresa y qué es de usted, así como también cuál es el proceso para solicitar la obtención de derechos de uso o propiedad de las cosas. que produces en el trabajo.

Casi todos los lugares en los que he trabajado, las cosas que entran en los proyectos son propiedad de la empresa, pero he solicitado y obtenido permiso para presentar cosas para proyectos personales caso por caso, lo que generalmente requería explicar lo que quiero que ver con esto y cómo no sería perjudicial para la organización dejarlo ir.

Thomas Owens
fuente
Estoy de acuerdo con ésto; hablar con personas de su propia empresa es un buen punto de partida (suponiendo que tenga una relación razonablemente buena con ellos). No es improbable que solo digan "claro, haz lo que quieras con él siempre y cuando no esté íntimamente relacionado con nuestro negocio".
Keith Thompson
Sí, es una buena idea intentar pedir permiso: el contrato puede decir "toda su base nos pertenece", pero eso generalmente es solo para fines de CYA, y es posible que estén dispuestos a permitir cosas que su contrato no garantiza . (Pero es posible que desee asegurarse de hacerlo por escrito, por si acaso.)
SamB
4

He tenido cierto éxito (no un éxito total) al lograr que mis empleadores acepten liberar bajo una licencia de código abierto parte de mi código escrito mientras trabajaba para ellos. Principalmente código que escribí en mi propio tiempo, pero a veces no. Todo el código no es específico de ninguna industria.

Comencé todo esto escribiendo algunas bibliotecas mientras estaba desempleado, y luego las liberé bajo la licencia MIT. Luego, durante el proceso de contratación en trabajos posteriores, lo mencionaría y diría que usaría ese código para ayudarlos, si pudiera, pero les importaría si agregaran cosas que escribí mientras trabajaba para ellos, pero solo cosas que no fueron específicos para su negocio y solo con su aprobación.

Los resultados han variado, pero he podido construir mi biblioteca con el tiempo. Y ha habido casos en los que tener la biblioteca ha acelerado el tiempo de desarrollo para mis empleadores.

psr
fuente
4

Me sorprende que la respuesta más votada aquí sea "sí". Como desarrollador, la respuesta siempre ha sido un "absolutamente no", excepto en circunstancias en las que el código es:

  1. Una biblioteca compuesta anterior que he desarrollado independientemente del proyecto actual y todos los proyectos anteriores, o
  2. Una biblioteca que se ha puesto a disposición para este propósito, por ejemplo, material de código abierto.

Alguien te pagó para escribir el código. Salvo una comprensión y un acuerdo diferentes, lo cual está bien, no está bien que otra persona obtenga los beneficios DIRECTOS de la misma.

Ahora, la palabra DIRECTA. Si llega al final de un proyecto y aprendió algo interesante y creó algo útil con él que no está directamente relacionado con la propiedad intelectual del cliente, tómese un tiempo y cree una biblioteca para ello. Aún mejor: COMIENCE UN PROYECTO DE FUENTE ABIERTA CON ELLO, para que todos terminen siendo más ricos por ello. Creo que es absolutamente 100% éticamente puro como la nieve conducida, y de hecho, lo he hecho yo mismo.

A corto plazo, reutilizar el código que le han pagado para escribir para otra persona le causará dolores de cabeza legales. A la larga, le causará dolores de cabeza a los personajes.

Chris B. Behrens
fuente
1
Bravo por responder sobre una base ética, más que legal. Recuerde: la totalidad de la moral no está contenida en la ley. Además, al menos en los EE. UU., The Law se ha separado de la realidad y la sociedad. La Ley y los Abogados parecen trabajar activamente contra el bien común.
Bruce Ediger
Buena y elegante respuesta, pero nada que ver con la ley. Legalmente, esta respuesta es realmente inestable en la mayoría de los países occidentales.
rapid_now
2

Estoy seguro de que este es un asunto legal dependiendo de dónde vivas / trabajes y de lo acordado / tu contrato.

Si aprendo algo por mi cuenta, en mi propio tiempo, con todos los gastos pagados por mí (computadora, acceso a internet, software, etc.), ¿no querrían que lo utilizara en mi trabajo? Encuentra una expresión regular para un proyecto personal y decide enviarla por correo electrónico a su cuenta de trabajo porque probablemente podría usarla. Sería un poco tonto pasar el tiempo de la compañía fingiendo buscarlo nuevamente en Internet. Por supuesto, nos esforzamos por mejorar nuestro oficio, esto es lo que se espera de los programadores, bla, bla, bla, pero ¿qué pasaría si estuviera en un área fuera de la programación o incluso de TI? Puedo contenerme si quieren jugar este juego.

La compañía puede intentar mantener un estricto control sobre el código que produzco. Es solo una base pobre para construir una relación. Si les importan tanto unas pocas líneas de código, no puedo imaginar la medida en que dominarán mi tiempo; que vale mucho más

JeffO
fuente
1

También he tenido los mismos pensamientos en el pasado. Desafortunadamente, creo que cualquier cosa que escriba directamente para su trabajo estaría técnicamente bajo los derechos de autor de su empleador. Debería solicitar permiso para reutilizar ese código en otro trabajo no relacionado con la empresa.

Por otro lado, si escribió código en su tiempo libre para uno de sus propios proyectos, podría proteger su código con algún tipo de derecho de autor y luego ofrecerle ese código a su empleador para que lo use.

De cualquier manera, debe haber una comunicación clara sobre el tema.

Por supuesto, IANAL.

Mike Cellini
fuente
1

Su pregunta es muy similar en vano a este " Código abierto - ¿Es legal recrear / código abierto un programa que creó anteriormente para otra compañía? "

Diría que tiene motivos legales inestables, ya que las empresas para las que trabajó probablemente poseen el código que escribió para ellos. Sería mejor codificar las rutinas desde cero, pero incluso entonces podría haber preguntas si todavía tuviera copias del otro código.

[No soy abogado, así que no esperes que mi consejo te ayude en un tribunal de justicia.]

jwernerny
fuente
+1 para "No soy abogado, así que no espere que mi consejo lo ayude en un tribunal de justicia".
Sardathrion - Restablece a Monica el
1

Yo diría que esos pequeños métodos / funciones genéricos no se guardan entre proyectos. La mayoría de las veces, puede usar Boost o lo que su idioma le proporcione para hacer esto. La mayoría de las veces, están mejor escritos que los tuyos.

Lo que es una buena idea es tener un conjunto de pruebas unitarias para esos y usarlos para probar su código kata.

Sardathrion - Restablece a Monica
fuente
1

Los trabajos se dirigen a Asia, así que vuelva a escribir el código mientras exista el tren de salsa. Si te pagan por escribir código, escríbelo o pégalo y finge haberlo reescrito mientras haces algo divertido. O incluso mejor, trabaje desde su casa y pague a un codificador de Asia más hábil, más inteligente y, lo que es más importante, mucho más barato, para que escriba el código por usted y ahorre la diferencia. Entonces puedes salir y disfrutar del mundo antes de que nuestros dioses corporativos nos abandonen y todos estamos desamparados trabajando en fábricas de chips que producen chips a 2 centavos por hora para los consumidores de iphone chinos e indios ricos.

marabutt
fuente
0

Sé que esta es una vieja pregunta, pero alguien la rechazó y sentí que sería una buena idea agregar una referencia a la muy triste historia de Sergey Aleynikov . Antes de tomar un código del trabajo, lea acerca de cómo hacerlo arruinó su vida y lo llevó a prisión .

JimmyJames
fuente