Domanda:
Reclutare persone che mantengono e migliorano, non solo inseguono il nuovo e brillante
StackExchange What The Heck
2018-12-24 18:01:01 UTC
view on stackexchange narkive permalink

Il mio lavoro sarà presto reclutamento e una cosa che vorrei fare è escludere le persone che sono più entusiaste di scrivere un codice nuovo ed entusiasmante che correggere il codice più vecchio e, più in generale, le persone che riconoscono che il buon codice riguarda più di righe di codice scritte al giorno e che anche il design, la documentazione e i test fanno parte dell'essere un programmatore.

Se lo chiedo apertamente "Come ti senti a lavorare con il codice di altre persone e correggere i bug invece di scrivere nuovo codice? ", sospetto che molte persone diranno quello che pensano di dover dire, cioè" correggere i bug è importante ", ma questo potrebbe non riflettere le loro pratiche di lavoro effettive.

Quali domande o test educati (non eccessivamente dispendiosi in termini di tempo) chiederesti per trovare qualcuno interessato e disposto a mantenere e migliorare il codice?

Modifica per aggiungere: il ruolo implicherebbe sicuramente un nuovo lavoro - non voglio dare l'impressione che sia solo manutenzione! Si tratta più di escludere le persone che preferiscono eliminare e riscrivere ogni volta, piuttosto che correggere un bug ...

Sei sicuro che ci siano persone più entusiaste di correggere il codice più vecchio?Direi che fornire correzioni e altre soluzioni senza riscrittura è più simile a un lavoro devops.Ma a mio parere, eliminare e riscrivere è ciò che dovrebbe essere fatto nella maggior parte dei casi.Almeno refactoring.Vedi 2.11 in [questo] (https://arxiv.org/ftp/arxiv/papers/1702/1702.01715.pdf)
Per il commento di @Džuris, la soluzione migliore è spesso * riscrivi ed elimina *: astrarre il codice inferiore esistente, scrivere un'implementazione sostitutiva parallela migliore, cambiare il codice client e quindi rimuovere la vecchia implementazione.
@Džuris Lavoro in un'azienda da molti anni e ho visto gli stessi tipi di bug introdotti in tre generazioni di alcuni software.A mio avviso, eliminare e riscrivere è pericoloso a meno che gli sviluppatori non abbiano esperienza nelle funzionalità richieste (quindi non nuovi assunti).D'altra parte, sono d'accordo che il refactoring sia una buona idea e anche un ottimo addestramento.
Un'altra domanda è perché devo essere sempre interessato a quello che sto facendo.Dopotutto è lavoro.Le persone lo fanno per guadagnare soldi.
@Džuris: Da uno dei fondatori di questo sito ... https://www.joelonsoftware.com/2000/04/06/things-you-should-never-do-part-i/
@mehrdad Voglio solo copiare e incollare interi paragrafi di quell'articolo nella domanda grazie, è geniale!
Se hai intenzione di porre l'accento sul codice legacy, tieni presente che in realtà è un male per la carriera di uno sviluppatore di software rimanere troppo indietro con le tecnologie attuali.Hai bisogno di una bella storia per questo.
Otto risposte:
Joe Strazzere
2018-12-24 18:09:02 UTC
view on stackexchange narkive permalink

Quali domande o test educati (non eccessivamente dispendiosi in termini di tempo) chiederesti per trovare qualcuno interessato e disposto a mantenere e migliorare il codice?

In generale, trovo che la chiave è fare più domande aperte, piuttosto che domande a cui si può rispondere con un semplice Sì o No, o una risposta molto breve.

Qualcosa di più sulla falsariga di "Parlami del tipo di lavoro che ti piace fare" ti darebbe indizi migliori. Se si tratta solo di creazione / invenzione e niente di miglioramento / test / perfezionamento, allora il candidato potrebbe non essere contento di ricoprire il ruolo che hai.

Una volta superata la domanda, puoi approfondire con qualcosa di simile "Raccontami di una volta in cui hai dovuto approfondire e mantenere un codice difficile."

Ad un certo punto del processo di intervista, vuoi rendere chiari i dettagli del ruolo. E vuoi essere chiaro per quanto tempo durerà quel ruolo e cosa potrebbe portare. Sarebbe sciocco stabilire aspettative sbagliate per un nuovo assunto.

Come altri hanno sottolineato, una buona descrizione del lavoro aiuterà ad attrarre il giusto tipo di candidato e permetterà agli altri di auto-selezionarsi. Una descrizione del lavoro che incorpori i pensieri di "le persone che riconoscono che un buon codice è più che righe di codice scritte al giorno e che anche il design, la documentazione e il test fanno parte dell'essere un programmatore" potrebbe aiutare.

Questa è un'ottima risposta, ho iniziato a scrivere la mia ma alla fine ho capito che stavo solo riformulando questa.
Le domande come "Raccontami di una volta in cui hai dovuto approfondire e mantenere un codice difficile" implicano che il candidato lo abbia già fatto.C'è un gruppo di casi in cui i candidati sono sempre stati soggetti a specifiche di lavoro per creare nuovo codice, mentre la loro vera vocazione è decifrare i codici degli altri.Mi propongo a domande come "Sentiresti qualche motivazione per scavare e mantenere un codice difficile? Quali potrebbero essere?".Non sono particolarmente favorevole all'ipotesi che un buon dipendente sia _in sé e per sé_ uno che replica qua e là la propria "comprovata esperienza"
"quali motivazioni ti guiderebbero?"Ad esempio una passione per la verifica e la convalida, un interesse per le sintassi di linguaggi diversi, un'ammirazione per il codice scritto alla grande (non puoi correggere il lavoro degli altri se non hai un'idea di "corretto"), gioia nell'usare unità e regressionetest e simili.Grazie per aver sollevato questo punto poco chiaro.
@davnicwil È un buon approccio, ma attenzione.Se la risposta fosse "ho strappato tutto e riscritto" potresti non avere una persona che fa la manutenzione in modo sicuro.Potresti avere una persona che fa un lavoro greenfield su un progetto esistente.Ci sono momenti in cui un modulo dovrebbe essere riscritto da zero, ma sono rari e in genere vengono riscritti per soddisfare le suite complete di unit test.
@JoeStrazzere Fantastico!Ho appena visto la richiesta di porre la domanda, ma non ho notato alcun suggerimento su come valutare le risposte.Molte persone hanno bisogno di quest'ultima parte, anche se questo OP e tu non sei in quel gruppo di persone :)
Sì, questo è il modo per farlo.Mi piace chiedere qualcosa del genere: "cosa ti è piaciuto di più e di meno in quel particolare lavoro e perché?"Quando il candidato risponde "Ho odiato / amato mantenere applicazioni legacy perché devo lavorare con codice che non è mio", prendi un suggerimento.
"Se si tratta solo di creazione / invenzione e niente di miglioramento / test / perfezionamento, allora il candidato potrebbe non essere contento di ricoprire il ruolo che hai." Oppure considerano il test, il perfezionamento, il refactoring ecc. Come una parte implicita dello sviluppo enon pensare nemmeno di menzionarlo.
@Michael questo è in realtà un problema interessante nel reclutamento, supponendo che i reclutatori sappiano che utilizzerai qualcosa.Un buon esempio potrebbe essere il controllo della versione o la riga di comando di Linux.Molte persone sanno come usarlo, ma qualcuno che rivede il tuo CV / curriculum non può essere sicuro che tu lo sappia e potrebbe non essere in grado di selezionarti a causa di questa mancanza.Lo stesso vale per le interviste: menzionare abilità che sembrano ovvie - idealmente solo brevemente - è importante.
"Stiamo cercando qualcuno che mantenga la nostra vecchia applicazione ASP.NET."Sto già correndo come un matto, non preoccuparti delle domande dell'intervista!
BinaryTox1n
2018-12-24 21:28:54 UTC
view on stackexchange narkive permalink

Nella mia esperienza, l'atteggiamento degli ingegneri di solito non è il motivo per cui il codice legacy non vede miglioramenti. Se sei in grado di promuovere un ambiente in cui la manutenzione, il refactoring e il miglioramento del codice esistente sono apprezzati e incoraggiati, otterrai i risultati che stai cercando.

In genere vedo pressioni da parte dell'azienda per fornire funzionalità o critiche da parte del management (Roger ha trascorso tutto questo tempo in codebase X e non c'è differenza funzionale! Perché abbiamo speso tutto questo tempo / denaro?).

La maggior parte degli ingegneri con cui ho lavorato odia essere ostacolata dall'infrastruttura legacy e la rifattorizzerà o la sostituirà felicemente nell'ambiente giusto. Prova i seguenti passaggi:

  • Incoraggia il refactoring mentre procedi
  • Discuti regolarmente il valore della manutenzione
  • Riconosci il successo dei progetti di manutenzione, sia agli ingegneri e gestione
  • lotta per il tempo di manutenzione del tuo team, anche se devi calcolarlo in stime per nuove funzionalità

Una volta che hai creato un ambiente che valorizza il miglioramento continuo, puoi elencarlo come un vantaggio nella descrizione del lavoro. "La nostra azienda apprezza i test, il refactoring, CI / CD e il miglioramento continuo. Non lasciamo che il codice si decomponga e non ti lasceremo neanche marcire."

-1
@syn1kk assolutamente.Ho * finalmente * convinto la direzione che tutte le nuove brillanti funzionalità che desiderano richiederanno 10 volte più tempo per svilupparsi a causa dell'infrastruttura legacy che abbiamo.Ora sono felice perché posso essere io a sostituire quella schifezza del passato con qualcosa che andrà a vantaggio simultaneamente dell'azienda e della mia capacità di tollerare la base di codice.
IMO questa è l'unica vera risposta alla domanda.Il 95% degli sviluppatori che conosco vorrebbe avere un po 'di tempo per migliorare la base di codice con cui sta lavorando.La direzione non approva nella maggior parte dei casi.Per risolvere il problema, non è necessario modificare il processo di reclutamento.Devi far capire alla direzione che il debito tecnico, proprio come il debito monetario, tornerà a morderti * MOLTO * duramente a meno che tu non lo ripaghi
@syn1kk "quasi molto molto difficile" Prova attivamente scoraggiato.
Questo ha ampiamente mancato il punto della domanda posta, che riguardava il trovare persone disposte a * lavorare con il codice esistente * ed evitare coloro la cui risposta a tutto è ** strapparlo e sostituirlo **.Non si tratta di allocazione del tempo per la manutenzione rispetto alle funzionalità, si tratta della volontà dell'ingegnere di fare * manutenzione * invece di apportare impulsivamente cambiamenti * mal concepiti *.
Il "debito tecnico" è ancora qualcosa di molto intangibile quando si può vedere che _fun_.
È davvero facile puntare il dito su ciò che non va in un sistema esistente semplicemente osservandone una piccola parte.Ci vuole tempo per esaminare e lavorare sull'intera cosa per capire cosa fosse giusto, soprattutto in termini di come interagisce con i sistemi e gli utenti esterni.Immergiti in una riprogettazione prima di farlo e non hai saldato il debito tecnico, ma piuttosto creato un nuovo debito ... e un sistema che non funziona nel modo in cui è necessario.
@ChrisStratton Esiste già un'ottima risposta alla domanda "come chiesto".Ho scelto di fornire una risposta che affronti quello che credo possa essere un problema di fondo.Dimostrare il valore della manutenzione in un'organizzazione sana e di successo è abbastanza probabile che questi sviluppatori "solo nuovi" apprendano che esiste un modo migliore, facilitando le assunzioni perché sai che la tua organizzazione fa le cose bene e può assimilare qualsiasi sviluppatore ragionevole.Quindi il tuo compito diventa semplicemente come filtrare le persone irragionevoli, che dovrebbe già essere l'obiettivo di qualsiasi intervistatore.
Come molti hanno affermato, le aziende sembrano non comprendere il concetto di debito tecnico.Per molti, finché funziona, l'applicazione / funzionalità è abbastanza buona.Questo porta, in un ambiente agile, a chiudere la funzionalità e ad aggiungerne di nuove all'elenco delle cose da fare.Quello che non capiscono è che questo debito sta rallentando le caratteristiche future.Nella mia esperienza, questo malinteso costringe gli sviluppatori a saltare il debito e ad aggiungere nuove funzionalità poiché la direzione si aspetta che vengano aggiunte.
Owen C. Jones
2018-12-24 18:37:43 UTC
view on stackexchange narkive permalink

Quindi, direi che alcune cose ti aiuteranno in questo:

  • Sii disposto ad assumere sviluppatori più esperti (e quindi più costosi ), in quanto questi avranno spesso superato la fase "ooh nuova tecnologia brillante" della loro carriera
  • Creare un pacchetto di benefici rivolto maggiormente a questo gruppo (pensa più pensioni, retribuzioni, atmosfera lavorativa e meno tennis da tavolo, fussball e X-box)
  • Dato che vuoi che le persone facciano un bel po 'di lavoro su codice legacy, miglioramenti, attività come al solito, ecc., prova a introdurre opportunità per fare un po' di lavoro più all'avanguardia per una piccola porzione di tempo. Consentire alle persone di dedicare del tempo a progetti personali è un buon modo per farlo. Ricorda che se hai bisogno che i tuoi sviluppatori utilizzino la tecnologia attuale o meno recente, rimarranno indietro con la tecnologia che farà progredire la loro carriera nel loro prossimo lavoro, quindi lascia che anche loro continuino.

Avere un - senza offesa - un progetto più noioso per cui hai bisogno di sviluppatori, è una delle sfide più grandi nel reclutamento IT, perché non puoi evidenziare tutte le parole d'ordine di cui hai bisogno, quindi la maggior parte del modo in cui puoi ottenere un buon personale è avere altre cose da fare appello a loro.

Un altro punto da aggiungere, inizia a premiare coloro che mantengono e migliorano il codice.Spesso questo è visto come un lavoro di secondo livello, quando in realtà è più difficile scrivere codice che sia migliore dell'originale e che si integri perfettamente con le cose disordinate.Se mostri la tua nuova tecnologia internamente all'azienda e accenni a malapena a importanti rielaborazioni, otterrai ciò che ricompensi.
Concordo con tutto questo con due commenti aggiuntivi (che non mi sento degni di un'altra risposta per una domanda che ha già 7 risposte).1) I consulenti esperti sono utili per questo genere di cose in quanto possono essere pagati ($ $) e poi andare avanti.2) Nelle tue interviste chiedi come il candidato gestirà il software di riparazione che era in produzione dove è assolutamente essenziale che il software funzioni 24 ore su 24, 7 giorni su 7 senza tempi di inattività dovuti a regressioni (e senza CI / CD!) - probabilmente a causa del $$$ perdita associata a tali tempi di inattività.(Ho recentemente concluso un contratto di consulenza di 2 anni con questo vincolo ...)
Sono d'accordo con questo, soprattutto perché sono uno di quei consulenti!
O.M.Y.
2018-12-26 05:49:50 UTC
view on stackexchange narkive permalink

Aggiungerò una nuova dimensione alle risposte già fornite. In poche parole, il mio consiglio su questa domanda è: Considera seriamente i lavoratori anziani per questo particolare ruolo.

Il settore IT è stato a lungo colpito dal problema dell ' età / a>, preferendo le giovani menti veloci dei giovani rispetto alle menti leggermente più lente dei lavoratori più anziani. Detto questo, quelle menti leggermente più lente hanno una ricchezza di esperienza e disciplina che spesso manca a molti giovani lavoratori e la codifica di manutenzione richiede proprio tale disciplina.

Assumere nuovi programmatori richiede raramente molta esperienza perché insegnerai loro tutte le idiosincrasie della base di codice e dei metodi di lavoro della tua azienda. Un "ragazzo" appena uscito dal college potrebbe conoscere i modi più recenti e migliori per (come dici tu) inseguire il nuovo e brillante ma non puoi insegnare l'istinto di trovare bug o la mentalità necessaria per arrancare miglia di codice sconosciuto. L'esperienza è ciò che fornisce questi attributi e l'esperienza richiede tempo, quindi anni quindi età.

Prenditi 2 minuti e fai clic sulle seguenti due query di Google. Quindi, per ciascuna di queste due query, scorri rapidamente il contenuto di 3 hit qualsiasi (6 articoli in totale):

Inoltre sappiamo tutti che una volta un programmatore ha imparato una lingua particolare, raramente ha problemi ad apprenderne di nuove. Controlla se la loro storia lavorativa mostra che si adattano bene ai nuovi ambienti. Guarda quante lingue hanno questi lavoratori anziani, non se conoscono quelle più all'avanguardia o forse anche quella esatta di cui hai bisogno. Se la loro esperienza è vicina, impareranno e prospereranno su quell'apprendimento. Li stai assumendo per lavori legacy, esattamente l'opposto di essere all'avanguardia.

Quindi fai la tua due diligence. Non usare mai l'età da sola come motivo per assumere o non assumere, ma in un caso come questo considera che l'età e l'esperienza sono risorse reali e qualsiasi preconcetto che potresti avere sull'assunzione di qualcuno che forse ha 50 anni o più dovrebbe essere esaminato attentamente perché potresti semplicemente perdere esattamente le abilità e le attitudini che hai chiesto nel tuo PO.

Oh e un'ultima cosa. Non sorprenderti se ricevi un respingimento evasivo dal tuo dipartimento delle risorse umane. Per ragioni complicate (ma errate) basate su questi miti, i reparti delle risorse umane sono spesso inclini a cercare di filtrare i candidati più anziani nei reparti IT. Quindi tieni presente che potresti dover istruire il tuo manager e il dipartimento delle risorse umane a rifiutare questi miti, fornire loro alcuni degli studi che troverai facilmente online da quei link sopra e insistere sul fatto che non lo sono respingere le cosiddette persone in cerca di lavoro "troppo qualificate" ma piuttosto inviarle ai colloqui.

Amo davvero questa risposta!L'esperienza e la maturità possono contare così tanto, è strano che le persone le ignorino così volentieri.Detto questo, c'è anche la possibilità che i neofiti vengano istruiti bene se sono * molto * inesperti, suppongo.
@yochannah - Loro "trascurano" l'esperienza a causa della persistenza dei miti del "lavoratore anziano" che ho citato e (indirettamente) collegati.Oltre il 50% della forza lavoro _disponibile_ ha più di 40 anni e tuttavia la fascia demografica delle assunzioni non lo riflette.Una parola del tutto illogica e tuttavia usata sempre è "troppo qualificata", come se fosse una brutta cosa sapere più di quanto il lavoro richieda.
"esperienza e disciplina": nella mia esperienza, questo si è materializzato come arroganza, inflessibilità e resistenza al cambiamento.
"Overqualified" ha molto più senso di quanto si possa pensare.Sì, può essere una brutta cosa sapere più di quanto il lavoro richieda.Un lavoro per il quale sei troppo qualificato è un lavoro che quasi certamente non ti pagherà quanto vale la tua esperienza, il che significa che probabilmente te ne andrai quando una delle tante offerte migliori si presenterà.
@cHao - questo può essere vero per i lavoratori più giovani (età <40) che possono trovare facilmente un nuovo lavoro, ma più un lavoratore diventa anziano, più apprezzano la stabilità e l'occupazione a lungo termine, in parte perché hanno responsabilità come un mutuo e una famiglia, ma soprattutto perchéil * prossimo * lavoro è ** non ** una cosa sicura.Da più di 4 decenni la magistratura degli Stati Uniti ha ufficialmente riconosciuto che le aziende spesso usano la frase "troppo qualificato" come codice per "troppo vecchio" in una serie di casi di discriminazione in base all'età e tuttavia i dipartimenti delle risorse umane continuano a difenderla usando lo _esatto stesso argomento_ tufatto.
@cHao - ancora una cosa.Un tempo ero responsabile degli incidenti di gravità critica per un'importante società internazionale.È stato un lavoro ben retribuito con molta visibilità e un livello di stress molto alto con chiamata 24 ore su 24, 7 giorni su 7.Oggi non accetterei quel lavoro se mi offrissi un milione di dollari all'anno.Anche se potrei facilmente fare il lavoro - sono molto bravo - semplicemente non voglio più quel tipo di stress, le mie priorità sono cambiate: il mio mutuo è finito e non ho quasi nessun debito, la mia famiglia si è dispersai venti e vivo in altre parti del paese, e ho semplicemente bisogno di pochissime entrate.
Dustybin80
2018-12-24 18:52:18 UTC
view on stackexchange narkive permalink

Penso che le altre risposte siano buone, ma aggiungerei un'ulteriore enfasi sul fatto che una buona descrizione / annuncio del lavoro consentirà alle persone di auto-selezionarsi. Dovresti quindi essere in grado di utilizzare le domande dell'intervista per giudicare chi l'ha effettivamente letto correttamente e lo capisce chiaramente.

In effetti, escluderei l'offerta da solo se venisse presentato onestamente che hanno una vecchia base di codice e non la vogliono buttata via e riscritta.
Considerando che probabilmente sceglierei proprio un lavoro del genere poiché in realtà mi piace analizzare il codice e modificarlo per migliorarlo.Da bambino, prima dei giorni dei PC di casa, ho imparato a programmare su carta diventando un emulatore umano / interprete di codice umano di un programma di gioco che amavo e mi è stata data una stampa del [elenco delle fonti] (https: //web.archive.org/web/20150215080553/http://www.dunnington.u-net.com/public/startrek/STTR1).Da allora ho avuto un'affinità per questo tipo di lavoro.
SafeFastExpressive
2018-12-25 08:41:57 UTC
view on stackexchange narkive permalink

Penso che ti stia avvicinando a questo dalla prospettiva sbagliata. Non è un problema di reclutamento, è un problema di leadership. Praticamente ogni lavoro di programmazione è un mix di scrittura di codice nuovo e mantenimento di codice vecchio.

Il modo in cui sono guidati e motivati ​​sarà la chiave per ottenere buoni risultati dalla stragrande maggioranza degli sviluppatori.

Il loro manager comunica loro chiaramente le priorità dell'azienda? La maggior parte degli sviluppatori è motivata e felice di fare ciò che è più importante per il successo dell'azienda.

Ti assicuri che siano ricompensati per i loro contributi e fatti sentire che l'azienda si prende cura di loro e dei loro sforzi?

Le priorità dell'azienda hanno senso? Spostare gli sviluppatori da un progetto all'altro o seppellirli in infinite operazioni di correzione di bug su problemi banali è un ottimo modo per demotivare i tuoi sviluppatori. La tua organizzazione rende regolarmente "urgenti" programmi e problemi e richiede agli sviluppatori di lavorare costantemente nel tempo per risolverli?

Il loro manager e l'azienda promuovono un'atmosfera orientata al team? Quando è il momento cruciale, il loro manager e i dirigenti superiori sono lì per dare una mano o si aspettano solo che gli sviluppatori di rango inferiore lavorino "marce della morte" per risolvere qualunque sia il loro problema "urgente" del giorno?

Il tuo lavoro come reclutatore è comunicare le ragionevoli aspettative dell'ambiente di lavoro. Se si tratta principalmente di lavori di manutenzione, i tuoi candidati si filtreranno bene se non vogliono farlo.
+1 dall'ufficio a caccia di una scadenza del 1 ° gennaio per un bonus di stipendio extra.
AnoE
2018-12-25 00:40:35 UTC
view on stackexchange narkive permalink

Nelle mie interviste, certo, pongo domande tecniche, soprattutto per capire parti poco chiare del CV o per approfondire argomenti in cui dicono di essere esperti.

A parte questo, io dedicare più tempo possibile a parlare semplicemente con loro del nostro campo. Sono aperto e onesto su quale sia l'obiettivo della discussione in corso (cioè, in una telefonata anticipata, direi "questa chiamata è solo per imparare a conoscerci, questo non è un test" ecc. .; oppure in un'intervista in loco potrei dire "parte di questa intervista è scoprire il team esatto della mia azienda in cui puoi iniziare a lavorare, abbinando al meglio i tuoi interessi", e lo dico sul serio).

Questo non è fatto per far abbassare la guardia o ingannarli, ma solo per avviare una discussione onesta. Francamente, questo mi dà le informazioni più utili sulla persona. E come parte di esso, se so che ho bisogno di qualcuno che lavori su software più vecchio (cosa che, in effetti, a volte faccio), descriverò chiaramente e chiaramente ciò di cui ho bisogno. Di solito posso dire dalla loro reazione se a loro piace quel tipo di lavoro, anche se non lo fanno, ma continuano a dire "sì".

Quali domande o test cortesi (non eccessivamente dispendiosi in termini di tempo) chiederesti per trovare qualcuno che sia interessato e disposto a mantenere e migliorare il codice?

Il mio la domanda sarebbe: "Sei interessato e disposto a mantenere e migliorare il codice?" Chiaro e semplice. Onesto e diretto. Tutto il resto sprecherebbe il loro e il mio tempo. Se la loro reazione mi mostra che la risposta è "no", vado avanti da lì. Se è "sì", farò il solito (approfondire, lasciare che spieghino la loro comprensione di questo, ecc.).

La loro reazione va in seguito nella mia valutazione complessiva. Cioè, se non vogliono il lavoro di mantenimento, ma hanno molte altre abilità di cui abbiamo bisogno, e se sono sicuro che l'attuale struttura del team possa gestire qualcuno del genere, allora va tutto bene. Oppure, se lo vogliono, ma in qualche modo non riescono a convincermi che lo intendevano davvero (o lo capivano) e non hanno portato molto altro sul tavolo, allora ci separeremo.

Complimenti @AnoE!Hai riconosciuto quello che fanno così pochi.Lo scopo dell'intervista non è principalmente quello di ricontrollare il loro CV (anche se gioca una piccola parte) poiché ciò può essere fatto da test prima dell'intervista.Piuttosto il colloquio è la migliore opportunità per scoprire se la persona è una buona * adatta * per l'azienda e il team.Grandi abilità con il tipo di personalità sbagliato possono distruggere una squadra esistente.
Quasimodo's clone
2018-12-25 23:16:57 UTC
view on stackexchange narkive permalink

Secondo me non è il punto come le persone si sentono riguardo al refactoring rispetto alla ricreazione del codice. La domanda è perché o quando , una questione di motivi per una decisione in casi particolari. Voglio spiegare perché:

Scrivere nuovo codice che includa la configurazione di un nuovo concetto è spesso vissuto come un lavoro ingrato poiché l'economia di solito mette sotto pressione gli sviluppatori affinché lavorino in modo efficiente allo scopo di generare volume di vendite in tempo più breve.

Non di rado ho avuto un progetto interessante da estendere. Dopo diverse ore di revisione del codice sono rimasto inorridito dalla base di codice mal interpretata. Non era realmente concepito in modo estensibile e presentava diverse vulnerabilità di sicurezza. La creazione di codice aggiuntivo dipendente da quella base aveva portato a un comportamento difficilmente prevedibile.

Ho sperimentato molte situazioni in cui ho dovuto suggerire di fare una rielaborazione completa basata su un nuovo concetto includendo gli algoritmi esistenti del vecchio progetto. E questo non ha suscitato molto entusiasmo nella mia mente di fronte a un compito enorme.

La mia convinzione è che la maggior parte degli sviluppatori ami fare un lavoro facile basato su un framework ben strutturato - finora esiste. Lo voglio. Perché scervellarsi quando esiste un modo molto più comodo per farlo?

Pertanto, quando si cercano nuovi membri del team, dovremmo chiedere ai candidati scenari in cui preferirebbero riscrivere una base di codice esistente prima di refactoring / estensione e per spiegazioni dettagliate delle loro ragioni. Vogliamo sapere se il candidato è in grado di prendere decisioni affidabili in conformità con la nostra politica aziendale.

"" la maggior parte degli sviluppatori ama fare un lavoro facile basato su un framework ben strutturato "" - Sono sinceramente triste di sentire un commento del genere.Nella mia esperienza gli sviluppatori * migliori * amano le sfide e sono disposti a lavorare sodo quanto necessario (se sono adeguatamente compensati e apprezzati) per risolvere i problemi.Se la tua esperienza - ** soprattutto come reclutatore ** - è diversa, allora ho paura per il futuro dello sviluppo del codice.
@O.M.Y.La mia esperienza è limitata a progetti di avvio più piccoli, specialmente in Germania.Il numero di sviluppatori conosciuti personalmente potrebbe non essere rappresentativo così come la Germania è un caso molto speciale.La maggior parte degli sviluppatori qui ha sperimentato che le grandi idee non sono realmente desiderate dal settore.Sono costretti a fare il loro lavoro in modo rapido e sporco per rispettare scadenze molto brevi.Tuttavia, svolgere il proprio lavoro in modo efficiente sulla base di un ** framework ben strutturato ** non è una brutta cosa.
Il problema è che * costruire * un tale framework, * codice generico e riutilizzabile *, consuma tempo che spesso non rientra nel budget dell'azienda.Così la ruota viene inventata ancora e ancora scrivendo codici simili più volte.In Germania sperimentiamo che le persone perdono il lavoro quando non sembrano essere efficienti in un singolo progetto.Quello che volevo dire è che ci deve essere un equilibrio tra l'utilizzo del codice esistente e la riscrittura, se necessario.


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