È sbagliato prendere il codice che hai prodotto sul lavoro e riutilizzarlo per progetti personali?


31

Durante i miei vari posti di lavoro ho sempre scritto codice che mi ha fatto pensare "questo sarebbe davvero utile in altre situazioni". In effetti, scrivo intenzionalmente il codice, anche se mi ci vuole più tempo a scrivere, che so che mi aiuterà in futuro (ad es. SubString()Funzioni personalizzate ). Un buon candidato per questi frammenti sono le varie classi "Helper".

Sono sicuro che questi frammenti possono essere trovati altrove online, ma il punto è che li ho scritti e li userò di nuovo in seguito in altri lavori o per progetti personali. Attualmente non gestisco una libreria di codici personali, ma la domanda è: è sbagliato prendere il codice che hai prodotto sul lavoro e riutilizzarlo ( a ) per progetti personali e ( b ) in altri lavori?



2
@Michael Simile, ma non un duplicato esatto. Le risposte sono molto simili, ma in realtà sono due preoccupazioni diverse. Questo riguarda piccoli frammenti di codice: un paio di classi, un metodo o due. L'altro riguarda la riproduzione di un intero progetto.
Thomas Owens

La cosa divertente è che trovo sempre che il flusso sia nell'altra direzione . Di solito mi vengono in mente pezzi di codice davvero interessanti nei miei progetti di hobby in cui faccio esperimenti di più. Certamente nessuno si lamenta quando quelle idee di successo entrano nel mio lavoro retribuito. :-)
DaveGauer,

Risposte:


25

Ho sempre risolto questo problema avendo un progetto personale in cui ho messo tutte le mie idee folli e roba generica, e poi lo ho concesso in licenza con la licenza BSD, che consente alle persone di riutilizzare, modificare, rinominare, chiudere e addebitare denaro per esso. In questo modo, conservo il copyright ma posso riutilizzare il codice come preferisco per questo e quel datore di lavoro, in modo da conservare il copyright sull'originale, ma il datore di lavoro conserva il copyright sull'istanza riutilizzata. Immagino che se avessero avuto un problema con quello, avrebbero semplicemente dovuto pagarmi per riscriverlo sull'orario di lavoro che non ha senso dal loro punto di vista. Inoltre, le aziende usano sempre il codice BSD, poiché l'idea alla base di BSD è consentire alle persone e alle aziende di fare praticamente tutto ciò che vogliono, incluso il rebranding e la vendita.

Quindi, naturalmente, se vengono aggiunte aggiunte al codice sul posto di lavoro, non posso riutilizzarlo altrove senza riscriverlo nel mio tempo ... il che va bene perché le cose generiche tendono ad essere relativamente piccole, a meno che non sia un idea che merita comunque un notevole sforzo nel tempo libero.

Scriverlo a tuo piacimento e concedere in licenza il codice con una licenza in stile BSD dovrebbe permetterti di mantenere una libreria per te che puoi usare praticamente ovunque tu voglia.

Ora, per quanto riguarda i contratti che pretendono di risucchiare il copyright di tutti i tuoi progetti personali ... questo probabilmente differisce radicalmente tra le giurisdizioni, ma in almeno alcune giurisdizioni occidentali è mia comprensione che un contratto non può farlo. Il contratto può dire che lo fa, ma non dovrebbe essere fatto valere in un tribunale perché il copyright deve essere esplicitamente trasferito, al contrario di "tutte le tue basi ci appartengono", un accordo che non sarebbe mai stato confermato (in la giurisdizione da cui provengo comunque). Ci sono una serie di restrizioni su ciò che può essere confermato in un tribunale tramite contratto, motivo per cui di solito (e si spera) vedrai una clausola che dice qualcosa secondo cui se una parte del contratto non funziona legalmente , il resto del contratto è ancora valido.

Ma come sempre, consultare un avvocato prima di interpretarlo come un accurato consiglio legale. Non sono mai stato portato in tribunale per questo, quindi non conosco nessuna di queste cose come fatti a prova di avvocato. :)


31

Dipende dal contratto di lavoro. In questi giorni, la risposta più probabile è (a) sì, questo è sbagliato e (b) sì, questo è davvero sbagliato. Quasi tutti i contratti offerti agli sviluppatori oggi hanno disposizioni che dicono che qualsiasi codice che scrivi mentre impiegato dalla società (sia durante l'orario di ufficio o meno) è loro e tu trasferisci automaticamente il tuo copyright a loro. A meno che tu non abbia negoziato specificamente contro questo, questo presumibilmente si applica a te.

Tuttavia, come sempre:

Non ci credere! Consultare un avvocato prima di fare qualcosa di potenzialmente pericoloso.


7
+10 (se potessi) per "Non crederci! Consulta un avvocato prima di fare qualcosa di potenzialmente pericoloso." Migliore. Consigliare. Mai.
Sardathrion - Ripristina Monica il

2
Hai qualche fonte per l'affermazione secondo cui "quasi tutti i contratti offerti agli sviluppatori" prevedono che "qualsiasi codice che scrivi durante l'assunzione dell'azienda (durante l'orario di ufficio o meno)" appartiene al datore di lavoro?
un CVn

3
Questi termini sono di routine in un modo in cui il datore di lavoro copre se stessi troppo-piuttosto-che-troppo-poco, e in molti casi c'è spazio per il buonsenso. Detto questo, (1) devi essere sicuro che la tua visione del buon senso sia d'accordo con la loro, e (2) sia un grosso rischio. Pochi anni dopo, le opinioni potrebbero cambiare, specialmente se stai facendo molti soldi o se pensano che qualcosa che hai scritto possa danneggiare le loro vendite. Per una libreria di piccole funzioni di utilità generale, è probabilmente più facile riscrivere e non preoccuparti. Qualcosa di più sostanziale e sei su un terreno molto pericoloso.
Steve314,

4
@ MichaelKjörling. La fonte che stai cercando è nell'eccellente risposta di Joel Spolsky su questo argomento in Start Ups .
TRiG

22
In realtà .. Penso che sia fastidioso e irrealistico dire sempre chiedere a un avvocato. Prima di tutto perché è logico che tu possa sbagliarti; se consigli su come risolvere una vulnerabilità di sicurezza critica in SO non dici "Chiedi a un programmatore!" ogni volta. I secondi avvocati sono costosi; onestamente quante persone pensi che assumeranno effettivamente un avvocato per porre una domanda / curiosità - di solito - curiosità? Vi siete mai assunto un avvocato per chiedere qualcosa di simile?
Thomas Bonini,

9

Riscrivi il codice come e quando ti serve . Evita completamente il problema per alcuni minuti di codifica.

È probabile che nel frattempo avrai imparato di più e scriverai qualcosa di meglio. La riscrittura del codice generalmente lo rende anche più elegante.


D'accordo, ma per quanto riguarda le sotto-librerie che non hanno un codice di pochi minuti? Classi per l'accesso a database, creazione di file, ecc.? È vero che la riscrittura migliora il codice
Arj,

3
Non è così semplice. Qualsiasi reimplementazione deve essere completamente diversa dal codice originale. Anche riscriverlo potrebbe essere male. Fare una versione migliore delle cose esistenti è decisamente negativo. È meglio tenerlo completamente separato.
tp1

Se sviluppi una sorta di algoritmo proprietario per qualcuno, potresti (probabilmente) avere problemi se lo scrivessi di nuovo per qualcun altro. È un po 'impreciso. Se è solo un codice boilerplate, sì, abbastanza facile per iniziare una nuova collezione.
Tim Post

@ tp1 Aspetta, cosa succede se l'obiettivo della funzione x()è così specifico e utile che non ci sono molti modi per scriverlo? In tal caso, come puoi tenerlo separato se l'implementazione è così simile?
Arj,

@ a12jun, beh, ecco perché deve essere considerato separatamente per ogni situazione. Il concetto di smistamento è probabilmente l'esperienza esistente del programmatore nell'informatica e la scrittura va bene. Ma se è qualcosa di specifico che è raro o specifico per un qualche tipo di software, allora sarà male.
tp1,

6

A seconda delle condizioni di lavoro, potrebbe essere. Consultare il proprio supervisore, dipartimento delle risorse umane, dipartimento legale e / o dipartimento etico per determinare ciò che è di proprietà della propria azienda e ciò che è di proprietà dell'utente, nonché il processo per la richiesta di ottenere i diritti di utilizzo o proprietà delle cose che produci al lavoro.

Quasi ogni posto in cui ho lavorato, le cose che vanno ai progetti sono di proprietà dell'azienda, ma ho cercato e ottenuto il permesso di far uscire le cose per progetti personali caso per caso, che di solito richiedevano spiegazioni su ciò che volevo a che fare con esso e come non sarebbe dannoso per l'organizzazione lasciarlo andare.


Sono d'accordo con questo; parlare con le persone della tua azienda è un buon punto di partenza (supponendo che tu abbia un rapporto ragionevolmente buono con loro). Non è improbabile che possano semplicemente dire "certo, fai quello che ti piace purché non sia intimamente correlato agli affari".
Keith Thompson,

Sì, è una buona idea provare a chiedere il permesso: il contratto potrebbe dire "tutta la tua base ci appartiene", ma questo è generalmente solo per scopi di CYA e potrebbero essere disposti a consentire cose che il tuo contratto non garantisce . (Ma potresti voler assicurarti di averlo scritto, per ogni evenienza.)
SamB

4

Ho avuto un certo successo (non un successo totale) nel convincere i miei datori di lavoro ad accettare di rilasciare con una licenza open source parte del mio codice scritto mentre lavoravo per loro. Principalmente codice che ho scritto sul mio tempo libero, ma a volte no. È tutto il codice non specifico per qualsiasi settore.

Ho iniziato tutto scrivendo alcune biblioteche mentre ero disoccupato, quindi rilasciandole con la licenza del MIT. Poi, durante il processo di assunzione in lavori successivi, lo menzionerei e direi che avrei usato il mio codice per aiutarli, se potesse, ma gli dispiacerebbe se aggiungessero cose che ho scritto mentre lavoravo per loro, ma solo cose che non lo erano specifici per la loro attività e solo con la loro approvazione.

I risultati sono variati, ma sono stato in grado di costruire la mia biblioteca nel tempo. E ci sono stati casi in cui avere la biblioteca ha accelerato i tempi di sviluppo dei miei datori di lavoro.


4

Sono sorpreso che la risposta più votata qui sia "sì". Come sviluppatore, la risposta è sempre stata un "assolutamente no", tranne nei casi in cui il codice è:

  1. Una biblioteca composta in precedenza che ho sviluppato indipendentemente dai progetti attuali e precedenti, oppure
  2. Una libreria che è stata resa disponibile per questo scopo, ad esempio materiale open source.

Qualcuno ti ha pagato per scrivere il codice. Escludendo una diversa comprensione e accordo, il che va bene, non è giusto che qualcun altro ne tragga i benefici DIRETTI.

Ora - la parola DIRETTA. Se raggiungi la fine di un progetto e hai imparato qualcosa di interessante e creato qualcosa di utile con esso che non è direttamente legato alla proprietà intellettuale del cliente, prenditi del tempo e creane una libreria. Ancora meglio: INIZIA UN PROGETTO OPEN SOURCE, in modo che tutti finiscano per diventare più ricchi. Penso che sia assolutamente eticamente puro al 100% come la neve battuta, e in effetti l'ho fatto da solo.

A breve termine, il riutilizzo del codice che sei stato pagato per scrivere per qualcun altro ti causerà mal di testa legali. A lungo termine, causerà mal di testa al personaggio.


1
Bravo per aver risposto su una base etica, piuttosto che legale. Ricorda: l'intera moralità non è contenuta dalla legge. Inoltre, almeno negli Stati Uniti, The Law è uscito dalla realtà e dalla società. La legge e gli avvocati sembrano lavorare attivamente contro il bene superiore.
Bruce Ediger,

Risposta eccellente e dandy ma niente a che fare con la legge. Legalmente, questa risposta è in realtà un terreno instabile nella maggior parte dei paesi occidentali.
quick_now

2

Sono sicuro che questa è una questione legale a seconda di dove vivi / lavori e di cosa è stato concordato / il tuo contratto.

Se imparo qualcosa da solo, nel mio tempo, tutte le spese pagate da me (computer, accesso a Internet, software, ecc.), Non vorrebbero che lo usassi nel mio lavoro? Trovi una regex per un progetto personale e decidi di inviarlo via email al tuo account di lavoro perché probabilmente potresti usarlo. Sarebbe un po 'sciocco passare del tempo in compagnia fingendo di cercarla di nuovo su Internet. Naturalmente ci sforziamo di migliorare il nostro mestiere, questo è ciò che ci si aspetta da programmatori, blah, blah, blah, e se fosse in un'area al di fuori della programmazione o persino dell'IT? Posso trattenermi se vogliono giocare a questo gioco.

L'azienda può provare a mantenere una stretta presa sul codice che produco. È solo una scarsa base per costruire una relazione. Se a loro interessano così tanto alcune righe di codice, non riesco a immaginare fino a che punto andranno a dominare il mio tempo; che vale molto di più.


1

Ho avuto gli stessi pensieri anche in passato. Sfortunatamente, penso che qualsiasi cosa tu scriva direttamente per il tuo lavoro sia tecnicamente protetta dal copyright del tuo datore di lavoro. Dovresti chiedere l'autorizzazione per riutilizzare quel codice in altri lavori non legati all'azienda.

D'altra parte, se hai scritto codice nel tuo tempo libero per uno dei tuoi progetti, potresti proteggere il tuo codice con una sorta di copyright e quindi offrirti di darlo al tuo datore di lavoro per l'uso.

In entrambi i casi è necessario disporre di una comunicazione chiara in merito.

Certo, IANAL.


1

La tua domanda è molto simile in vano a questa " Open Source - È legale ricreare / open source un programma che hai creato in precedenza per un'altra azienda? "

Direi che sei per motivi legali traballanti poiché le aziende per cui hai lavorato probabilmente possiedono il codice che hai scritto per loro. Sarebbe meglio codificare le routine da zero, ma anche allora potrebbero esserci delle domande se avessi ancora copie dell'altro codice in circolazione.

[Non sono un avvocato, quindi non aspettarti che il mio consiglio ti aiuti in un tribunale.]


+1 per "Non sono un avvocato, quindi non aspettarti che il mio consiglio ti aiuti in un tribunale".
Sardathrion - Ripristina Monica il

1

Direi che quei piccoli metodi / funzioni generici non dovrebbero essere mantenuti tra i progetti. La maggior parte delle volte, puoi usare Boost o qualunque cosa la tua lingua fornisca per farlo. Il più delle volte, quelli sono scritti meglio dei tuoi.

Ciò che è una buona idea è avere un set di unit test per quelli e usarli per testare il tuo codice kata.


1

I lavori stanno andando in Asia, quindi riscrivi il codice mentre esiste ancora il treno del sugo. Se vieni pagato per scrivere codice, scrivilo o incollalo e fai finta di averlo riscritto mentre facevi qualcosa di divertente. O ancora meglio, lavora da casa e paga un programmatore più abile, più intelligente e, soprattutto, molto più economico dall'Asia per scrivere il codice per te e intascare la differenza. Quindi puoi uscire e goderti il ​​mondo prima che i nostri dei corporativi ci stendano e siamo tutti indigenti a lavorare in fabbriche di chip che producono chip a 2 centesimi l'ora per i ricchi consumatori di iPhone cinesi e indiani.


0

So che questa è una vecchia domanda, ma qualcuno l'ha respinta e ho pensato che sarebbe stata una buona idea aggiungere un riferimento alla triste storia di Sergey Aleynikov . Prima di prendere qualsiasi codice dal lavoro, leggi come questo ha rovinato la sua vita e lo ha portato in prigione .

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.