Hai trovato una soluzione migliore a un problema sul lavoro: dovrei dissuadere dal pubblicare lo snippet di codice online?


18

Penso che la maggior parte di noi programmatori abbia usato Stack Overflow per risolvere i problemi di ogni giorno: cercava un algoritmo efficiente per fare qualcosa.

Ora immagina una situazione: hai un problema da risolvere. Ho cercato su Google un po ', ho trovato una domanda StackOverflow ma finora non sei molto soddisfatto delle risposte. Quindi devi fare le tue ricerche: devi farlo perché lo desideri nell'app della società.

Alla fine, dopo alcune ore, hai trovato la soluzione migliore. Sei contento, l'hai aggiunto alla base di codice dell'azienda, quindi vuoi inviare la tua risposta con uno snippet di codice (solo diverse righe) alla domanda che hai trovato prima per aiutare anche gli altri.

Ma aspetta: il software dell'azienda è a codice chiuso e ci hai lavorato su di esso.

Quindi questo significa che non dovrei pubblicare la risposta né sul lavoro né a casa a quella domanda nel resto della mia vita, perché l'ho risolta sul lavoro e la società possiede quel codice?


Penso che dipenda dalla vostra politica aziendale. Chiederei il permesso di essere al sicuro.
MrSmith42,

1
Chiedi all'avvocato della compagnia se in questo piccolo caso potesse fare una piccola eccezione, e se dice di sì, sarà un buon avvocato ex compagnia . Le probabilità sono che ti dirà solo ciò che è nel migliore interesse del suo lavoro e della società, che è "no".
Neil,

1
@ MrSmith42 Certo. A dire il vero, sono già stato colpevole di questo più volte e l'ho fatto senza pensare alle potenziali conseguenze, fino ad ora. E probabilmente non sono solo con questo. Ecco perché l'ho chiesto qui ... O a tutti importa non esprimere idee o inviare alcun codice online mentre sono impiegati? Non posso crederci.
Calmarius,

5
Una delle preoccupazioni potrebbe essere che se la tua soluzione / algoritmo offre alla tua azienda un vantaggio competitivo, la condivisione potrebbe avere un impatto sulla tua azienda.
Cyn

3
Se pensi che sarebbe di aiuto a qualcuno, e non sta dando via l'ip aziendale, basta pubblicare una versione generica della cosa. Personalmente, penso che se la soluzione fosse parzialmente derivata da altri che hai trovato qui, la società non ha un reclamo sulla tecnica in primo luogo poiché il contenuto qui è cc.
GrandmasterB,

Risposte:


15

Esporre informazioni di società proprietarie è qualcosa che non dovresti mai fare. Tuttavia, la maggior parte dei frammenti di codice su Stack Overflow sono molto più banali di così. Considera questo esempio :

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;  
        }  
    }  
}

Questo metodo inverte l'endianness di un numero a 32 bit, scambiando i byte in giro. La differenza tra questa implementazione e una ingenua è che questa viene eseguita due volte più veloce, ma puoi eseguirla solo su una piccola macchina endian. Viene utilizzato in un programma proprietario, ma descrive una tecnica generale e non espone nulla di riservato.


Questo tende a seguire l'idea che un'azienda non possiede algoritmi, no?
Daniel Gratzer,

8
Non posso dirlo con certezza, data la natura bizantina del sistema dei brevetti.
Robert Harvey,

@Jozefg: Proprio come qualsiasi invenzione, gli algoritmi, che sono complessi e non abbastanza ovvi e sviluppati all'interno dell'azienda, sono una delle poche cose nel mondo del software che possono essere "facilmente" di proprietà delle aziende. Un esempio presentato qui, è abbastanza semplice da non rientrare in quella categoria. E anche se ci sono casi in cui vengono investiti il ​​pensiero originale reale e anni di ricerca e una società dovrebbe avere diritti di proprietà completi, il più delle volte il sistema dei brevetti (almeno negli Stati Uniti) viene semplicemente abusato.
DXM,

7

Pubblico spesso problemi e soluzioni in cui mi trovo al lavoro, in orario con il codice aziendale *. Ne ho parlato direttamente con il mio manager e ritiene che il valore che l'azienda ottiene dal mio tempo trascorso qui supera di gran lunga qualsiasi preoccupazione per il mio tempo trascorso qui in generale.

* Sono cauto di offuscare tutto ciò che penso possa essere proprietario. Il nostro codice interno è molto proprietario, ma sarebbe in gran parte inutile per chiunque senza il nostro hardware proprietario (che non vendiamo).

Guardo le mie domande e risposte come se stessi aiutando me stesso e qualcun altro lungo la strada quando incontrano problemi simili a me.


1

Quanto costerebbe la tua azienda per il tuo tempo aggiuntivo o tempo perso se non avessi questa risorsa?

Finché non viene fornita alcuna informazione di compromesso o proprietaria, ritengo che le soluzioni di pubblicazione che hai trovato siano un compenso per le risposte che hai ricevuto.


1

La risposta sta negli accordi legali scritti che hai firmato con il tuo datore di lavoro (il tuo contratto) e con la giurisdizione in base alla quale tali accordi saranno giudicati. È comune per un accordo legale elencare la giurisdizione che può o meno essere lo stato in cui lavori (sebbene probabilmente il paese in cui lavori, ma non necessariamente).

Un grande libro è Proprietà intellettuale e Open Source di Van Lindberg. Da p. 185:

Non ci sono ripercussioni legali per il superamento di [un'azienda] quando si definiscono "informazioni proprietarie". Diversi stati limitano l'applicazione delle PIA quando un autore o un inventore non usa la proprietà dell'azienda o il tempo per creare la nuova opera ... Anche se i limiti imposti dallo stato invalidano parte della PIA, altri aspetti dell'accordo generalmente sopravvivono.

Leggi il tuo contratto. Rivelare le proprie intenzioni al proprio datore di lavoro prima di agire. Quindi rivelare le tue azioni al tuo datore di lavoro. Divulgare queste cose per iscritto e ottenere la loro risposta / autorizzazione quando applicabile per iscritto. Almeno questo è quello che dice quel libro.

Non sono un avvocato, sono solo interessato a queste cose. Questa non è una consulenza legale, solo suggerimenti amichevoli. Per quanto mi riguarda, non faccio casualmente nulla di pubblico legato al lavoro. Ho reso pubbliche alcune cose dopo lunghe discussioni con il mio capo, la piena divulgazione, l'etichettatura chiara delle licenze e un accordo scritto su ciò che sto rilasciando, ma è raro.


0

Ho pubblicato frammenti di codice online ma modifico sempre il codice in modo da rimuovere qualsiasi riferimento all'azienda, dati dei clienti e spesso rinominare anche campi / variabili. Fondamentalmente finisco per riscrivere il codice in modo che non possa essere ricondotto a un datore di lavoro. Ci vuole un po 'di sforzo in più ma penso che ne valga la pena.

A parte l'aspetto legale, devi anche pensare di essere fidato della proprietà dei tuoi datori di lavoro. Se ne pubblichi liberamente bit online, sembra che manchi di discrezione e di cui non puoi fidarti. Anche se avessi il permesso, un futuro datore di lavoro che trova il tuo frammento da un motore di ricerca potrebbe non saperlo.

Questo è il motivo per cui tenderei a sbagliare dal lato della cautela.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.