Domanda:
Va bene usare codice open source per svolgere un'attività di intervista?
bersam
2019-07-06 17:09:36 UTC
view on stackexchange narkive permalink

Qual è il confine tra l'utilizzo di codice open source e la scrittura del codice da soli per completare un'attività di intervista?

Ovviamente, non ho bisogno di implementare un'attività da zero, ma va bene utilizzare boilerplate che forniscono più strumenti utili, dopodiché non è necessario configurare Webpack o Swagger o altre cose e concentrarsi solo sulla scrittura dell'attività?

Domanda interessante!(L'ho votato positivamente), in particolare perché una domanda altamente correlata potrebbe essere "utilizzare le librerie standard" (ad es. Analisi JSON) anziché scrivere le proprie.Tutto dipende da cosa stanno cercando, ma penso che avrebbero dovuto chiarirlo davvero.
Sette risposte:
#1
+110
Player One
2019-07-06 17:35:11 UTC
view on stackexchange narkive permalink

Chiedi all'intervistatore

Ad alcuni andrà bene, altri no. Chiunque valga la pena lavorare per o con sarà felice che tu lo abbia chiarito con loro piuttosto che fare supposizioni.

... e per tutti gli intervistatori che leggono questo, suggerisco caldamente di progettare i test di codifica del colloquio in modo che diano un'idea precisa delle capacità di codifica dei candidati.Ciò significa fornire loro tutti gli strumenti che i programmatori utilizzano effettivamente, come IDE, framework, librerie e Google.(Oppure continua a usare rompicapo inutili e condizioni di "test" artificiali e lascia a me i buoni candidati).
Ho dovuto eseguire alcune routine di base come parte di un test ed era ovvio che l'intento era creare il mio codice.Se non fosse stato chiaro l'avrei sicuramente chiesto, non vedo come potrebbe andare storto.
#2
+12
Fabio says Reinstate Monica
2019-07-08 04:13:57 UTC
view on stackexchange narkive permalink

Una cosa che devi controllare prima di utilizzare il software open source è la licenza.

Se l'azienda normalmente rilascia software closed-source, non ti consentirà mai di utilizzare un programma o una libreria che è rilasciato sotto GPL per un vero compito di programmazione , perché se lo facessero sarebbero costretti ad aprire anche il loro software. È probabile che vietino l'uso di tale software anche per un colloquio.

L'approccio migliore è porre una domanda diretta. Come ha detto Player One, apprezzeranno la tua richiesta invece di supporre. Se dicono che OSS va bene, vai alla seconda domanda. Qualcosa del tipo:

Posso usare software open source anche se è coperto da una licenza copyleft, come la GPL, il che implica che il prodotto finale deve essere rilasciato con gli stessi termini? Mi rendo conto che questa è solo una domanda da colloquio e forse non ha importanza in questo contesto, ma quando faccio un lavoro reale dovrei certamente verificare con te per evitare potenziali problemi legali.

In questo modo sapranno che comprendi i problemi di licenza e che non sei una di quelle scimmie in codice che copiano e incollano ciecamente tutto ciò che trovano sul Web senza valutarne le implicazioni.

A quel punto, indipendentemente da ciò che rispondono, hai segnato un punto.

Questo non si applica solo alle aziende che stanno rilasciando software?Molte aziende scrivono e utilizzano software che non è mai stato rilasciato: le banche non rilasciano il software per tutti i sistemi che utilizzano per gestire gli account utente, i supermercati non rilasciano il software in esecuzione sulle loro casse e casse automatiche, Amazon non rilascia ilsoftware che esegue il loro sito web e così via.In effetti, sospetto che la stragrande maggioranza del software non venga mai rilasciata!
@gidds Potrei sbagliarmi, ma non credo che la * stragrande maggioranza * del software venga mai rilasciata.In ogni caso hai un punto e ho aggiornato la mia risposta.
@FabioTurati C'è un _lot_ di software interno personalizzato in esecuzione in _lot_ di posti.Voglio dire, a seconda di come definisci "software", io solo ho scritto più pezzi unici di software di quelli che ho usato - molti piccoli script per automatizzare piccole parti di quello che faccio.
@NicHartley non solo piccoli script / programmi, neanche.Ripensando a tutti i miei lavori, ho scritto solo codice in 3 app da eseguire su macchine non dipendenti;una era un'applicazione principale, una era piccola e usata raramente e una non veniva mai rilasciata.Ciò si confronta con circa 30 principali sistemi o applicazioni che sono stati eseguiti solo internamente.(E innumerevoli altre piccole app / script.) E non credo che la mia esperienza sia poco rappresentativa.Il software interno semplicemente non è visibile nel modo in cui lo è il software pubblicato.
@gidds [In AGPLv3, ciò che conta come "interagire con \ [il software \] in remoto attraverso una rete di computer?"] (Https://www.gnu.org/licenses/gpl-faq.html#AGPLv3InteractingRemotely) fornisce la guida della FSFsull'interpretazione di AGPLv3 (non GPLv3) in alcuni di questi casi.Vedi anche [Perché hai deciso di scrivere GNU Affero GPLv3 come licenza separata?] (Https://www.gnu.org/licenses/gpl-faq.html#SeparateAffero) sulla stessa pagina.
Il codice che scrivi durante un colloquio non è destinato ad essere distribuito o distribuito, è solo per testare le tue capacità.Trovo difficile credere che le considerazioni sulla licenza siano importanti, anche se non può far male chiedere.
@gidds: fai attenzione alla GPL perché è tossica per alcune organizzazioni e utenti.Gli esempi del supermercato e di Amazon mi sono saltati all'occhio perché alcune stringhe del software open source potevano essere visualizzate all'utente e questo avrebbe attivato il sorgente del programma richiesto dalla GPL.(Ho lavorato a contratti molto specifici sulla NESSUNA GPL a causa di impollinazione incrociata involontaria. NESSUNA GPL è una voce del contratto).
#3
+3
Nimesh Neema
2019-07-06 17:20:23 UTC
view on stackexchange narkive permalink

Giustifica e attribuisci l'uso di qualsiasi codice open source che utilizzi

Qual è il confine tra l'utilizzo di codice open source e la scrittura del codice da solo per completare un'attività di intervista?

Non esiste una linea dura e veloce. Dipende da ciò che l'intervistatore sta cercando di valutare.

Un consiglio generale nello sviluppo del software è quello di utilizzare codice collaudato. Questo è uno degli scopi cruciali del codice open source, ovvero non reinventare la ruota ogni volta.

Tuttavia, qui scrivere codice fa parte di un compito di intervista. Non esiste una risposta / No precisa per stabilire se utilizzare o meno codice open source. Ma tende al Sì, se puoi giustificarne l'uso.

Pensa dal punto di vista dell'intervistatore. Stanno cercando di valutare le tue capacità per portare a termine un compito. Mentre uno degli intenti per convincere un candidato a scrivere codice è vedere la sua capacità di scrivere la soluzione per un problema, è anche un'abilità importante per valutare quanto bene possono identificare e ottenere codice pre-scritto per risolvere un problema.

Non dovrebbero esserci problemi nell'utilizzo di una libreria o di un componente open source, ma sarebbe meglio fornire un'attribuzione e un ragionamento corretti perché hai scelto di usarlo.

È importante per l'intervistatore per capire quanto bene capisci il problema e il codice che risolve il problema, invece di scrivere il codice da solo.

Tuttavia, sebbene il processo e l'intento possano variare da intervistatore a intervistatore. Puoi proporre all'intervistatore di utilizzare determinati componenti open source insieme al ragionamento alla base del loro utilizzo. Fallo prima di iniziare l'attività. Alcuni intervistatori potrebbero cercare precisamente la tua abilità per implementare una certa funzionalità e potrebbero desiderare che tu scriva il codice da zero.

Penso che questo sia un buon consiglio.Mi piace particolarmente questa linea: "sarebbe meglio dare un'attribuzione e un ragionamento corretti per cui hai scelto di usarlo." C'è una ragione principale per questo: utilizzare le risorse a tua disposizione in modo efficace è professionalità.Travisarli come il tuo lavoro è una frode.C'è anche un motivo minore: in un ambiente professionale, vorresti un record di qualsiasi fonte esterna di codice sorgente per motivi come la conformità della licenza e la possibilità di integrare eventuali versioni aggiornate.Dimostrare che pensi a queste cose è prezioso.
Una volta ho fatto uno di quei test di editor di codice online.È stato immediatamente evidente dai criteri di "passaggio" che esisteva una soluzione in forma chiusa al problema presentato.Ho cercato (i termini del test non proibivano risorse esterne), ho trovato la formula su Math SE e ho inserito l'URL in un commento.L'intervistatore era felice, ho finito in 15 minuti.
#4
+3
Sascha
2019-07-07 14:41:54 UTC
view on stackexchange narkive permalink

Dipende:

  • Se è più un compito di elaborazione di dati / algoritmi, allora probabilmente è meglio mostrare la comprensione dell'algoritmo (ad esempio modificarlo per il caso d'uso specifico)
  • se è un compito "mostrare che puoi creare un'intera app", quindi mostrare che puoi utilizzare blocchi predefiniti preesistenti (open source o i framework richiesti dall'azienda)
#5
+2
MrTony
2019-07-06 22:53:49 UTC
view on stackexchange narkive permalink

Chiederei specificamente questa domanda al tuo nuovo datore di lavoro. Alla fine, il 90% di questi compiti viene utilizzato, in modo che il tuo datore di lavoro possa formarsi un'opinione sulle tue capacità.

TUTTAVIA: ogni datore di lavoro potrebbe cercare qualcosa di diverso nel tuo compito. So che alcuni dipartimenti (come lo sviluppo di base) sono alla ricerca di potenziali candidati che si comportino molto bene "da zero", il che significa che vogliono vedere come stai lavorando con un array "manualmente" e implementare anche gli algoritmi più elementari da solo . Vogliono valutare la tua conoscenza di un linguaggio di programmazione anche al suo livello più elementare (che è spesso considerato il più importante quanto più "tecnico" diventa)

Gli altri dipartimenti vogliono vedere che tu ottieni il lavoro svolto e sono aggiornati con i framework più recenti, le soluzioni open source e la libreria standard e probabilmente conterebbero alcune cose, che il dipartimento di cui sopra avrebbe contato come un vantaggio, come un grande svantaggio.

Alcuni le aziende sono solo piuttosto vecchia scuola per natura, alcune aziende si occupano di soluzioni moderne. Il problema per te è che non puoi mai saperlo e sebbene tu possa fornire una soluzione solida e ragionevole con o senza componenti open source, potrebbe semplicemente mancare ciò che l'azienda sta cercando.

Quindi da la mia esperienza, il modo migliore per scoprirlo e forse anche per ottenere alcuni punti bonus offrendo esattamente ciò che stanno cercando è chiedere in anticipo.

Buona fortuna!

#6
  0
Zaibis
2019-07-08 15:02:58 UTC
view on stackexchange narkive permalink

In aggiunta a quanto detto finora da altri con cui sono totalmente d'accordo, vorrei sottolineare qui che la maggior parte delle licenze open source hanno una clausola di attribuzione e / o richiedono di mantenere intatte le informazioni sulla licenza per qualsiasi lavoro derivato . Così come spesso non ti è permesso promuovere il software come opera tua se non lo è.

Quindi, anche se vai contro qualsiasi consiglio dato dalle altre risposte, se quel codice open source è sotto una licenza avente una delle clausole sopra menzionate, non rivelare all'intervistatore che è open source nel modo richiesto, sarebbe una violazione della licenza e potrebbe ritorcersi contro a seconda del punto di vista del datore di lavoro verso la conformità.

#7
  0
Gabe Sechan
2019-07-09 00:37:34 UTC
view on stackexchange narkive permalink

Chiedi all'intervistatore di essere sicuro. Ma una regola pratica generale dipende dalla quantità di codice che stai prendendo dalla libreria open source. Se l'attività è algoritmica, non prendere qualcosa che scrive l'algoritmo principale. Se il compito è scrivere un'app, non trovare una versione dell'app online e prenderla. Se si tratta di un framework e stai per scrivere il codice effettivo della tua app (algoritmi e display), di solito va bene.

Ad esempio, un mio posto di lavoro ha fatto un test in cui aveva poche ore scrivere Campo Minato. Qualcuno una volta ha trovato un'intera versione online e ha apportato piccole modifiche. Non abbiamo offerto loro il lavoro, perché non sapevamo quanto bene potessero programmare da quello. D'altra parte, qualcun altro ha utilizzato un widget per visualizzare il timer in modo carino. È stato assolutamente fantastico con noi. C'è una parte algoritmicamente difficile in Campo Minato (l'algoritmo per aprire i quadrati adiacenti in modo efficiente quando fanno clic su uno 0). Non avevano bisogno di portarlo alla versione più efficiente, ma non credo che avremmo superato nessuno che non lo avesse scritto da solo.



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...