Domanda:
Come affrontare la protezione del mio codice come assistente di ricerca? Dovrei essere preoccupato in primo luogo?
user107627
2019-08-06 12:46:45 UTC
view on stackexchange narkive permalink

Sono uno studente universitario che lavora come assistente di ricerca per un'università, principalmente insieme a un supervisore. Anche se ho un mio progetto, il mio lavoro mi vede comunque assistere il mio supervisore nella sua ricerca principale.

Di recente, il mio supervisore mi ha assegnato un piccolo progetto di codifica che accelererebbe l'analisi dei dati per gli esperimenti, avvantaggiando entrambi. Scriverei volentieri codice che semplifichi il suo lavoro e il mio, così come il mio lavoro come suo assistente. Tuttavia, sono ansioso che il codice che ho scritto venga disperso e utilizzato in tutto il gruppo di ricerca. Questo sentimento è dovuto al fatto che questo progetto di codifica è nato durante una conversazione di gruppo, incluso me, il mio supervisore e un altro ricercatore, che ha sottolineato che un programma del genere avrebbe risparmiato tempo ed energie a se stesso e agli altri nel dipartimento. strong> Le mie due domande

Sono giustificato nel sentirmi sfruttato dall'altro ricercatore per scrivere questo codice o sono egoista?

Posso proteggere il mio codice da altri che lo usano senza creare tensioni / nemici?

Credo che la mia energia e il mio tempo siano prima di tutto riservati al lavoro del mio supervisore e al mio. Si tratta di codice relativamente facile da scrivere ma che richiede molto tempo. Vedo che se l'altro ricercatore vuole avere questa scorciatoia nell'analisi dei dati, potrebbe scriverla lui stesso. Non mi infastidirebbe tanto se il progetto provenisse direttamente dal mio supervisore quanto lo sarebbe esplicitamente per noi. In seguito, se fosse condiviso, non credo che sarei così in conflitto. Piuttosto, il ricercatore che ha promosso il progetto è molto lontano dal mio lavoro.

Altrimenti, se questo codice si diffonde ad altri ricercatori, come potrei assicurarmi di riceverne il riconoscimento? Sto proseguendo gli studi con questo dipartimento e voglio migliorare la mia reputazione per le ammissioni come membro significativo del gruppo di ricerca. Forse sono troppo meschino o egoista con l'impatto di questo codice. Questa è la prima volta che scrivo codice per qualcosa che va oltre il lavoro in classe e vorrei affrontare la situazione nel modo giusto.

Modifica

Grazie tutto per avermi mostrato che ero davvero, veramente idiota. La maggior parte di questi commenti ha un senso o mi ha dato lo schiaffo in testa di cui avevo bisogno. Essere in grado di migliorare altre industrie è un enorme punto del mio interesse nel campo, quindi vederlo dall'esterno ha reso evidente che ero un ipocrita. Mi rendo conto che devo cambiare la mia mentalità se la ricerca è qualcosa che voglio perseguire in futuro. Nel frattempo, diversificherò il codice il più possibile per aiutare il maggior numero possibile. Grazie a tutti per il contributo.

Potresti codificarlo in modo che funzioni solo sui tuoi dati e sui tuoi supervisori?Soprattutto se lo fornisci in una versione compilata ...
"Sono ansioso che il codice che ho scritto venga disperso e utilizzato in tutto il gruppo di ricerca" - quale sarebbe lo svantaggio di ciò che accade?
AcademiaSE (https://academia.stackexchange.com/) sarebbe stato più adatto a questa domanda.
Sulla tua modifica: non picchiarti!Sebbene la tua mentalità iniziale fosse fuori bersaglio, è stato meglio che tu lo chiedessi piuttosto che continuare lungo il percorso su cui eri.
Sei risposte:
motosubatsu
2019-08-06 13:48:53 UTC
view on stackexchange narkive permalink

Sono giustificato a sentirmi sfruttato dall'altro ricercatore per scrivere questo codice o sono egoista?

No, non lo sei " sfruttato "- se ti capisco bene questo codice gioverebbe anche a te e al tuo supervisore. Che sia vantaggioso anche per gli altri è una buona cosa .

Posso proteggere il mio codice da altri che lo usano senza creare tensioni / nemici?

Puoi eventualmente proteggerlo, anche se è improbabile dato che lavori per l'università e probabilmente loro "possiedono" il lavoro comunque. Ma penso che anche il tentativo di farlo probabilmente causerà "tensione / nemici" come dici tu.

Perché? Perché non hai letteralmente nulla da guadagnare dal tenere questo codice agli altri del gruppo di ricerca - tutto ciò che fa è ferire gli altri, il che farà sembrare che quello fosse il tuo intento. È molto probabile che infastidisca le persone.

Sto proseguendo gli studi con questo dipartimento e voglio migliorare la mia reputazione alle ammissioni come membro significativo del gruppo di ricerca.

Qui è dove hai le cose al contrario: se crei qualcosa di significativo nel contesto del gruppo di ricerca, vuoi che altri ne traggano vantaggio. Più membri ne beneficiano, maggiore sarà l'impatto. Più persone provi a tenerlo lontano da più persone che dirai alle persone (come quelle coinvolte nelle ammissioni) che sei un ragazzo egoista che non è un giocatore di squadra.

Inoltre, se il codice è davvero così utile, considera di renderlo ampiamente pubblico.Quindi rischi di essere conosciuto per questo, il che non ti farà male un po 'nelle interviste, sia nell'industria che nel mondo accademico ...
@FábioDias mentre non sono in disaccordo sul fatto che potrebbe essere una bella pubblicità per le abilità dell'OP, sarei sorpreso se non ci fossero restrizioni sul fatto che l'OP possa effettivamente farlo con il codice sviluppato durante l'occupazione.
Nell'industria sì, nel mondo accademico non tanto.In ogni caso, deve essere approvato dal supervisore / consulente ...
@FábioDias sì con il supervisore / consulente dietro l'idea che è una storia completamente diversa!
Non dimenticare di mettere il tuo nome da qualche parte nell'output in modo che le persone riconoscano che l'hai scritto.Qualcosa di semplice come * User107622 Versione 1.01 agosto 2019 *
@JanDoggen meglio, rendilo effettivamente utile.Se hai un'istanza git o qualsiasi altra istanza e il codice è presente, includi un collegamento in modo che altri possano contribuirvi.In caso contrario, includi il tuo indirizzo email con una nota come "Contatta in caso di bug o richieste di funzionalità".Allo stesso modo, se c'è una licenza associata al programma, includila lì.
Concordo.Con ogni probabilità, il lavoro svolto come assistente di ricerca per un'università è di proprietà dell'università, non dell'assistente di ricerca, come è routine.Non pagano in modo che gli studenti possano migliorare il loro profilo personale, ma per guadagnare denaro dalla ricerca o per favorire obiettivi scientifici (o entrambi).
Se si tratta di un software più complesso e non solo di un mucchio disordinato di semplici script che chiunque abbia un debole per l'automazione può mettere insieme, allora ci sono buone probabilità che tu possa effettivamente ottenere citazioni da chiunque lo usi.
In genere sono d'accordo con questa risposta, ma vorrei solo sottolineare che mantenere qualcosa di benefico per te stesso non equivale a ferire gli altri.
dan.m was user2321368
2019-08-06 18:12:08 UTC
view on stackexchange narkive permalink

Poiché questa è la prima volta che "scrivi codice per qualcosa che va oltre il lavoro in classe", penso che sia importante imparare alcuni dei principi di base di cosa significa scrivere software per soldi, poiché penso che una volta che li hai compresi, il rispondere alle tue domande fluisce in modo abbastanza naturale.

Primo principio: quando qualcuno ti paga per scrivere codice, implica due cose: primo, che stai scrivendo qualcosa per risolvere un problema o soddisfare un bisogno che ha; secondo, che lo possiedono e possono farne ciò che vogliono. Questo principio è noto legalmente come Lavoro su richiesta negli Stati Uniti.

Secondo principio: il codice che hai scritto non è speciale: ci sono letteralmente milioni di altre persone lì che avrebbe potuto produrre lo stesso codice, o migliore, per risolvere lo stesso problema.

Se li prendi insieme, ti renderai conto che, in primo luogo, non è il tuo codice (appartiene al tuo supervisore, o il laboratorio, o l'università, o chiunque altro), e che il codice non sia particolarmente prezioso (tutto ciò che vale è il costo per pagare qualcuno per riscriverlo). Poiché il tuo progetto era un "piccolo progetto di codifica" scritto da un assistente di ricerca, il valore di sostituzione è in realtà piuttosto minimo.

Quindi ora che vedi che il codice stesso ha un valore limitato, devi capire dove ti trovi aggiungere valore effettivo al processo (in modo che tu possa imparare come aggiungere più valore e ricevere in cambio più compenso).

Uno sviluppatore aggiunge valore a un'organizzazione essendo in grado di:

  1. Comprendere correttamente il problema effettivo che deve essere risolto (poiché spesso l'organizzazione / persona che richiede il software non hanno una chiara comprensione di se stessi ed è necessario collaborare con loro per perfezionarla);
  2. Implementare una soluzione che sia stabile e scalabile, in modo da dedicare meno tempo alla correzione dei difetti e che la soluzione possa funzionare con problemi sempre più grandi;
  3. Implementa una soluzione che sia estensibile, in modo che quando le esigenze del proprietario cambiano o il proprietario decide di condividerlo con altri, è facile aggiungere queste nuove funzionalità. Ciò consente a quel pezzo di codice di risolvere più di un problema.

Poiché il tuo obiettivo è "ricevere riconoscimento" e "migliorare [la tua] reputazione", e poiché si tratta di forme di compensazione, è necessario concentrarsi sull'aggiunta di valore effettivo.

Per aggiungere valore alla tua situazione, dovresti abbracciare ogni potenziale utente. Poiché ognuno di loro avrà un problema visivamente diverso da risolvere, svilupperete sia una competenza nella risoluzione di questo tipo di problema (n. 1), sia produrrete un pezzo di software in grado di risolvere molti problemi diversi (n. 3), compresi quelli per utenti che non hai ancora identificato. Ognuno di loro eserciterà anche il tuo codice in modo diverso, portando a (si spera) un software più stabile e scalabile rispetto a se fosse stato sviluppato per un solo utente (# 2).

Come vuoi perseguire ulteriore formazione con questo dipartimento: immagina quanto sarebbe utile per la tua applicazione se 2 o 3 (o più) ricercatori descrivessero come hai prodotto un'applicazione che li ha aiutati a risparmiare una notevole quantità di tempo, come sei stato in grado di comprendere rapidamente il loro problema e tradurlo in un pezzo di software funzionante e performante. Sembra una cosa preziosa per te da guadagnare da questo processo.

"ora che vedi che il codice stesso ha un valore limitato, devi capire dove aggiungi valore effettivo al processo" - ottima risposta, grazie!
"Secondo principio: il codice che hai scritto non è speciale - ci sono letteralmente milioni di altre persone là fuori che avrebbero potuto produrre lo stesso, o meglio, codice per risolvere lo stesso problema."Boooo.Ci ha messo lavoro ed energia, non è senza valore.Richiede anche abilità pratiche e conoscenze per scrivere un buon codice.Sembra che tu sottovaluti il valore di un buon codice.
@Andrew - forse non ero chiaro.Non voglio dire che il codice non abbia valore, è solo che il valore del codice è esattamente il costo per riscriverlo.Il punto è che gli sviluppatori newish pensano di produrre qualcosa di molto speciale (perché è il loro bambino) e non si rendono conto che ciò che stanno producendo in realtà non è così speciale.Se uno sviluppatore medio impiega 1 mese per produrre, uno sviluppatore medio impiegherà 1 mese per riprodursi.Il punto è che non è come un Picasso: è il lavoro di un artigiano.E questo non è un attacco.Anch'io sono uno sviluppatore professionista.
@Andrew - (continua).In qualità di sviluppatore professionista, devi imparare a sbloccare il valore che realmente offri e capire che è separato dalla "macchina" che costruisci.
Sono d'accordo con il tuo sentimento, ma i punti 2 e 3 non dimostrano che il codice stesso ha valore?Il codice stabile, scalabile ed estensibile è più prezioso del codice che non lo è."il codice non è particolarmente prezioso (tutto ciò che vale è il costo per pagare qualcuno per riscriverlo)" sembra un'affermazione un po 'sciocca, potresti ridurre qualsiasi prodotto a questo - "l'auto non è particolarmente preziosa(tutto ciò che vale è il costo per pagare qualcuno per produrlo) ".
^ Esatto.E non sono un novellino, forse l'OP lo è.Noi sviluppatori ** forniamo ** valore da ciò che creiamo, anche se è nella media, ma soprattutto se non lo è.Quello che stai veramente sostenendo qui è che non forniamo valore."Chiunque può farlo" - ne parli come se fosse cioccolata calda istantanea.No, un gran numero di persone * non può * farlo, ecco perché ci viene pagato un premio.Forse non lo sei, non lo so.Ma voi ragazzi andate avanti e prendete tutti i voti anche se vi sbagliate.
@JShorthouse: il punto che sto cercando di sottolineare è che un pezzo di software è esattamente un prodotto fabbricato, al contrario di qualcosa come un Picasso.Gli sviluppatori newish tendono a pensare che stiano producendo Picasso e non si rendono conto che stanno solo producendo automobili.
@Andrew - Non ho mai detto "chiunque può farlo" Ho detto che ci sono "milioni" di persone che possono farlo - il che è vero: ci sono milioni di sviluppatori di software nel mondo.Il mio punto, che credo sia risultato troppo goffo, era che il valore di un pezzo di software non è nella sua esistenza, ma per i problemi che risolve.Per essere prezioso come sviluppatore di software, è mia convinzione che devi essere prezioso come risolutore di problemi.
Penso che tu lo stia rendendo troppo bianco e nero, quando è davvero una via di mezzo.Sì, il tuo valore principale come sviluppatore è essere in grado di comprendere e risolvere in modo efficiente i problemi, ma ciò non significa che il codice che produci non sia di per sé prezioso.
@JShorthouse La formulazione precisa nella risposta è "il codice non è particolarmente prezioso", non "il codice non è prezioso".Il codice non ha un valore particolare in quanto prodotto da uno specifico sviluppatore.Non ha alcun valore intrinseco o speciale - ha valore solo perché risolve un problema (che include estensibilità futura, chiarezza dell'architettura, ecc.) E non è più prezioso del codice scritto da uno sviluppatore diverso che risolve ugualmente bene gli stessi problemi, che non è difficile da trovare.La formulazione della risposta è accurata per ogni senso della parola "particolare".
A seconda di cosa ha fatto OP, la fine estrema del # 2 è "perché non hanno semplicemente cercato il codice open source che è già disponibile e lo hanno modificato".Sebbene i punti siano veri, penso che potrebbe essere modificato meglio.Inoltre, mentre il codice potrebbe essere valutato considerando il costo della riscrittura, potremmo anche valutarlo in modo diverso: quanto tempo / denaro viene risparmiato per mantenerlo rispetto alla riscrittura da zero?potremmo trovare codice open source e modificarlo, risparmiando tempo nella riscrittura?e quanto tempo ci vorrà per riqualificare gli utenti (aka: tempo degli utenti, aka: utenti pagati per essere riqualificati)
Naturalmente, dirò anche che questi commenti (incluso il mio primo) stanno discutendo su come migliorare una piccola parte tangenziale di una risposta davvero solida.
user107417
2019-08-06 19:15:20 UTC
view on stackexchange narkive permalink

Sono anche un programmatore di ricerca che lavora nel mondo accademico. Siamo fortunati a trovarci in un campo in cui la condivisione di dati e metodi è la norma. Io, tutti i miei colleghi, e scommetto anche te, abbiamo tutti beneficiato di decenni di ricerche precedenti rese pubbliche e disponibili per noi. Spinge avanti il ​​progresso scientifico.

Tuttavia, è perfettamente ragionevole desiderare un riconoscimento per il proprio lavoro. Suggerirei di creare un account Github e di pubblicare il tuo lavoro lì, con una piccola recensione su come usarlo. Avere il tuo lavoro utilizzato da altri ricercatori sarà di gran lunga meglio per la tua carriera che ricevere una pacca sulla spalla dal tuo investigatore privato. Essere in grado di parlare dell'impatto di uno strumento di analisi dei dati che hai rilasciato nelle lettere di candidatura alle scuole di specializzazione sarà molto bello.

Suggerirei che l'OP ottenga l'approvazione dal loro professore prima di pubblicarlo, poiché questo potrebbe essere considerato IP dell'Università.Potrebbe anche essere una situazione in cui pubblicheranno il codice, ma solo dopo che la ricerca è stata completata, quindi anche la tempistica potrebbe essere un problema.Soprattutto se competono per una borsa di studio.Anche se alla fine condivideranno il codice, non c'è motivo di dare alle agenzie concorrenti uno strumento gratuito per aiutarle a ottenere la sovvenzione, invece di te.
Mangocherry
2019-08-06 13:16:10 UTC
view on stackexchange narkive permalink

Non credo che tu possa proteggere il tuo codice dai tuoi colleghi. Le università normalmente hanno alcune clausole sulla proprietà intellettuale piuttosto rigide nei loro contratti di lavoro. Ma questo potrebbe dipendere anche dal paese in cui ti trovi.

Ma alla fine penso che tu sia un impiegato dell'università e il tuo supervisore ti ha ordinato di produrre qualcosa. Questo qualcosa alla fine probabilmente apparterrà all'università. Probabilmente dovrai affrontare il fatto che qualcosa creato da te al posto del tuo lavoro per qualcun altro non ti appartiene.

Potresti sostenere che questo compito è al di fuori dell'ambito del tuo contratto, ma non credo proprio che funzionerà qui e potrebbe danneggiare seriamente il rapporto con il tuo supervisore.

A meno che il codice non esista già con una licenza e non convinca il tuo supervisore a utilizzare questo codice, non vedo alcun modo per proteggere il tuo codice.

user168715
2019-08-07 03:24:21 UTC
view on stackexchange narkive permalink

Prima di tutto, se lavori solo come RA per i soldi, non hai nulla di cui preoccuparti perché il tuo datore di lavoro possiede comunque il tuo codice, come spiegato in dettaglio dalle risposte precedenti.

Ma presumo che tu sia anche investito nella ricerca e abbia il desiderio di costruire una reputazione come ricercatore. In questo caso, è importante capire che la valuta principale nella comunità di ricerca è la reputazione e la visibilità. La creazione condivisa e la presentazione di articoli di ricerca è un ottimo modo per aumentare la tua reputazione accademica, ma il rilascio di codice sorgente utile e ampiamente utilizzato è un altro.

È possibile rilasciare il tuo codice con una licenza che forza altri ti riconoscono se usano il tuo codice, ma sconsiglio questo corso in quanto si oppone inutilmente ai tuoi utenti e riduce la probabilità di adozione. Inserendo il proprio nome in un commento all'inizio dei principali file sorgente e includendo una nota amichevole nel codice / README sulla falsariga di "se si utilizza questo codice, si prega di riconoscere la persona XXX e citare la carta YYY!" di solito è sufficiente.

Pertanto, per impostazione predefinita dovresti desiderare che il tuo codice sia il più diffuso e utilizzato possibile!

Detto questo, a volte ci sono buone ragioni per aver bisogno di mantenere il codice privato:

  • il tuo supervisore ritiene che il rilascio del codice rischi di raccogliere la tua ricerca o la ricerca di altri membri del tuo laboratorio;
  • il tuo supervisore vuole "estorcere" altri laboratori per coautore su documenti o sovvenzioni in cambio dell'accesso al codice (non perdono questo comportamento, ma succede);
  • la ricerca è sponsorizzata da un'azienda o da un'organizzazione governativa che richiede di mantenere il codice segreto;
  • il codice contiene dati privati ​​protetti da HIPPA, FERPA, ecc;
  • il tuo supervisore / università vuole brevettare gli algoritmi utilizzati nel codice, che in alcune giurisdizioni richiedono la limitazione della liberatoria pubblica fino a dopo il deposito della domanda;
  • ecc.

In conclusione: dovresti volere che il tuo codice venga utilizzato da quante più persone possibile, ma parla con il tuo supervisore delle tue preoccupazioni e chiedi il permesso prima di pubblicare il codice su un GitHub pubblico o di dare ad altri.

Oltre ai commenti che richiedono la co-autore / citazione / riconoscimento nella parte superiore del codice sorgente e / o in un file README, considera anche la possibilità di stampare quel messaggio esatto come parte dell'output.Se l'output testuale del programma è destinato al consumo umano, `stdout` va bene;se è destinato a consumare software a valle, scrivilo in `stderr`
SuperSecretAndHiddenFromWork
2019-08-07 14:12:03 UTC
view on stackexchange narkive permalink

Dovresti essere contento di avere l'opportunità di inserire un progetto del genere nel tuo CV (curriculum), se utilizzato, questo sarà sicuramente un punto di discussione per qualsiasi prospettiva di lavoro nel prossimo futuro. Nel grande schema delle cose, tra cinque anni non penserai nemmeno al progetto

Per rispondere effettivamente alla tua domanda, i fornitori proteggono il loro codice distribuendo il file binario del codice (un file eseguibile per esempio), che non può essere interpretato in un editor di testo

Per dimostrare il punto, se il programma è scritto in Go e distribuisci myProgram.go, il tuo codice sarà condiviso , se mandi myProgram come eseguibile unix o file exe, allora non può essere interpretato

Per Javascript, l'offustamento può essere fatto minimizzando il tuo file. Questo presenta tutte le tue funzioni e variabili in un formato più difficile da leggere. Esempio: "myFunctionToSendOutAnEmail ()" verrebbe modificato in "a ()". I file JS minimizzati hanno l'estensione myProgram.min.js invece di myProgram.js

Ciò è assolutamente in disaccordo, non solo con l'intero regno della ricerca accademica in cui la necessità che i risultati siano replicabili significa che il codice è tipicamente pubblicato a supporto di documenti, ma anche con il fatto stesso di essere un * dipendente * e parte di una * collaborazionesquadra*.L'istituzione potrebbe decidere di tenere qualcosa in casa, ma nasconderlo ai colleghi non è fattibile.
Lo scopo della mia risposta non era rispondere alla domanda etica, ma ad altri un metodo per proteggere il suo lavoro.Non è mio obbligo rendere l'OP etico, ma posso condividere la conoscenza per fare qualcosa di non etico
Il problema non è l'etica, il problema è che la tua proposta è del tutto impraticabile nella situazione della domanda o qualcosa di simile.La persona non è un'azienda che interagisce con i clienti, sono un dipendente e un collaboratore di un team.
Ciò non significa che non potrebbero distribuire i binari se lo volessero, a condizione che i file di programma siano archiviati localmente sulla loro macchina
Sembra che tu non abbia idea di come funzioni un ambiente di lavoro collaborativo o di come funzioni lo sviluppo di software non dell'età della pietra.Nessun supervisore responsabile consentirebbe a un dipendente oa un membro del team di mantenere segreto il codice sorgente critico a coloro che hanno una necessità realisticamente probabile di rivederlo, mantenerlo, estenderlo e preservarlo.
Avevo l'impressione che non lavorasse con altri sviluppatori?Ma era solo un analista che potrebbe voler imparare il software.Naturalmente, in qualsiasi team di sviluppo appropriato non lo faresti mai


Questa domanda e risposta è stata tradotta automaticamente dalla lingua inglese. Il contenuto originale è disponibile su stackexchange, che ringraziamo per la licenza cc by-sa 4.0 con cui è distribuito.
Loading...