Encontré una mejor solución a un problema en el trabajo: ¿debo evitar publicar el fragmento de código en línea?

18

Creo que la mayoría de nosotros, los programadores, usamos Stack Overflow para resolver los problemas cotidianos: buscamos un algoritmo eficiente para hacer algo.

Ahora imagine una situación: tiene un problema que resolver. Busqué un poco en Google, encontré una pregunta de StackOverflow, pero hasta ahora no estás realmente satisfecho con las respuestas. Por lo tanto, debe hacer su propia investigación: debe hacerlo porque lo desea en la aplicación de la compañía.

Finalmente, después de algunas horas, ha encontrado la mejor solución. Estás contento, lo agregaste a la base de códigos de la compañía, luego deseas enviar tu respuesta con un fragmento de código (solo varias líneas) a la pregunta que has encontrado antes para ayudar a otros también.

Pero espere: el software de la compañía es de código cerrado, y usted trabajó en él en el reloj.

Entonces, ¿esto significa que no debería publicar la respuesta ni en el trabajo ni en casa a esa pregunta en el resto de mi vida, porque la resolví en el trabajo y la compañía posee ese código?

Calmarius
fuente
Creo que depende de la política de su empresa. Yo pediría permiso para estar seguro.
MrSmith42
1
Pedir al abogado de la compañía si podía hacer una pequeña excepción pequeñito en éste caso poco, y si dice que sí, que será un buen corazón ex abogado -empresa. Lo más probable es que simplemente le diga qué es lo mejor para su trabajo y la compañía, que es "no".
Neil
1
@ MrSmith42 Claro. Pero para decir la verdad, ya soy culpable de esto varias veces, y lo hice sin pensar en las posibles consecuencias, hasta ahora. Y probablemente, no estoy solo con esto. Es por eso que lo pregunté aquí ... ¿O a todos les importa no expresar ideas o enviar ningún código en línea mientras están empleados? No puedo creer.
Calmarius
55
Una de las preocupaciones podría ser que si su solución / algoritmo le da a su empresa una ventaja competitiva, compartirla podría ser impactante para su empresa.
cYn
3
Si crees que sería de ayuda para alguien y no está regalando el IP de la compañía, solo publica una versión genérica de la cosa. Personalmente, creo que si la solución se derivó parcialmente de otras que encontraste aquí, la compañía no tiene un reclamo sobre la técnica en primer lugar, ya que el contenido aquí es cc.
GrandmasterB

Respuestas:

15

Exponer la información de la empresa es algo que nunca debe hacer. Sin embargo, la mayoría de los fragmentos de código en Stack Overflow son mucho más mundanos que eso. Considere este ejemplo :

public static unsafe void SwapX4(Byte[] Source)  
{  
    fixed (Byte* pSource = &Source[0])  
    {  
        Byte* bp = pSource;  
        Byte* bp_stop = bp + Source.Length;  

        while (bp < bp_stop)  
        {
            *(UInt32*)bp = (UInt32)(
                (*bp       << 24) |
                (*(bp + 1) << 16) |
                (*(bp + 2) <<  8) |
                (*(bp + 3)      ));
            bp += 4;  
        }  
    }  
}

Este método invierte la endianidad de un número de 32 bits, intercambiando los bytes. La diferencia entre esta implementación y una ingenua es que esta se ejecuta el doble de rápido, pero solo se puede ejecutar en una pequeña máquina endian. Se está utilizando en un programa propietario, pero describe una técnica general y no expone nada confidencial.

Robert Harvey
fuente
Esto tiende a seguir la idea de que una empresa no posee algoritmos, ¿no?
Daniel Gratzer
8
No puedo decirlo con certeza, dada la naturaleza bizantina del sistema de patentes.
Robert Harvey
@Jozefg: Al igual que cualquier invención, los algoritmos, que son complejos y no lo suficientemente obvios y desarrollados dentro de la compañía, son una de las pocas cosas en el mundo del software que pueden ser "fácilmente" propiedad de las compañías. Un ejemplo presentado aquí es lo suficientemente simple como para que no caiga en esa categoría. Y aunque hay casos en los que se invierte el pensamiento original real y años de investigación y una empresa debe tener derechos de propiedad completos, la mayoría de las veces el sistema de patentes (al menos en los EE. UU.) Es simplemente abusado.
DXM
7

Con frecuencia publico problemas y soluciones con las que me encuentro en el trabajo, en horario de empresa con el código de empresa *. He hablado directamente con mi gerente sobre esto, y él siente que el valor que la compañía obtiene de mi tiempo que pasé aquí supera con creces cualquier preocupación sobre mi tiempo pasado aquí en general.

* Soy cauteloso para ofuscar todo lo que creo que podría ser propietario. Nuestro código interno es muy exclusivo, pero en gran medida sería inútil para cualquiera sin nuestro hardware exclusivo (que no vendemos).

Considero que mis preguntas y respuestas me ayudan a mí mismo y a alguien más en el futuro cuando se encuentran con problemas similares a los que yo tengo.

delliottg
fuente
1

¿Cuánto le costaría a su empresa por su tiempo adicional o tiempo perdido si no tuviera este recurso?

Mientras no se proporcione información confidencial o de propiedad exclusiva, creo que las soluciones de publicación que ha encontrado son una compensación por las respuestas que ha recibido.

TheSteven
fuente
1

La respuesta se encuentra en los acuerdos legales escritos que firmó con su empleador (su contrato) y con la jurisdicción bajo la cual se juzgarán dichos acuerdos. Es común que un acuerdo legal enumere la jurisdicción que puede o no ser el estado en el que trabaja (aunque probablemente sea el país en el que trabaja, pero no necesariamente).

Un gran libro es Propiedad intelectual y código abierto de Van Lindberg. De p. 185:

No hay repercusiones legales para [una empresa] extralimitarse al definir "información de propiedad exclusiva". Varios estados limitan la aplicación de PIA cuando un autor o inventor no utiliza la propiedad o el tiempo de la compañía para crear el nuevo trabajo ... Incluso si los límites impuestos por el estado invalidan parte de la PIA, otros aspectos del acuerdo generalmente sobreviven.

Lee tu contrato. Revele sus intenciones a su empleador antes de actuar. Luego divulgue sus acciones a su empleador. Revele estas cosas por escrito y obtenga su respuesta / permiso cuando corresponda por escrito. Al menos eso es lo que dice ese libro.

No soy abogado, solo estoy interesado en estas cosas. Este no es un consejo legal, solo sugerencias amigables. Por mi parte, no hago públicamente nada relacionado con el trabajo. He hecho algunas cosas públicas después de largas discusiones con mi jefe, divulgación completa, etiquetado claro de la licencia y un acuerdo por escrito sobre lo que estoy publicando, pero eso es raro.

GlenPeterson
fuente
0

Publiqué fragmentos de código en línea, pero siempre edito el código para eliminar cualquier referencia a la empresa, los datos de los clientes y, a menudo, también cambio el nombre de los campos / variables. Básicamente termino reescribiendo el código para que no pueda rastrearse hasta un empleador. Requiere un poco de esfuerzo extra, pero creo que vale la pena.

Además del aspecto legal, también debe pensar que se le ha confiado la propiedad de su empleador. Si publica libremente fragmentos de él en línea, entonces parece que le falta discreción y no se puede confiar en él. Incluso si tuviera permiso, un futuro empleador que encuentre su fragmento de un motor de búsqueda puede no saberlo.

Es por eso que tendería a errar por el lado de la precaución.

Ben Thurley
fuente