Nuove attività per sviluppatori senior


21

Ho uno sviluppatore senior con otto anni di esperienza .NET a partire da domani per lavorare su un'applicazione da 11.000 righe di codice. Nella squadra ci sono io e un altro programmatore. Entrambi abbiamo circa tre anni di esperienza ciascuno.

È il mio primo progetto come manager (sono anche uno sviluppatore del progetto) e questa è la prima volta che ho mai dovuto presentare qualcuno a una base di codice già stabilita. Ovviamente esaminerò ogni modulo, il processo di distribuzione, ecc., E consegnerò loro la posizione del repository di controllo del codice sorgente, la documentazione (che non è la migliore), ecc.

Quanto tempo devo concederli prima che siano pronti per iniziare a scrivere nuove funzionalità e correggere bug?


1
Dipende davvero da quanto complicate siano le 11.000 righe di codice. Mi aspetterei che qualcuno con 8 anni (il che significa che ha iniziato a usarlo nel 2003) sarà in grado di funzionare a tutta velocità entro una settimana.
Ramhound,

Come punto dati, poche settimane fa, abbiamo riassegnato uno sviluppatore a un progetto con 13.700 righe di codice JavaScript e abbiamo ipotizzato che sarebbe stato produttivo in uno sprint (una settimana) senza nemmeno pensarci davvero.
Gort the Robot

@StevenBurnap: Mi piace :) Accendi i piedi e vedi se brucia la casa.
Joel Etherton,

Sono davvero l'unico a pensare che le linee 11k non siano molto? Avrei dato un giorno, per pura bontà del mio cuore.
Louis Kottmann,

Parte della tua scelta di incarichi può anche dipendere da quanto tempo sarà il tuo progetto. Per alcune idee su come limitare l'impatto del nuovo personale sul personale esistente, dai un'occhiata a programmers.stackexchange.com/questions/164781/…
DeveloperDon

Risposte:


38

Assegnerei un paio di bug a bassa priorità il primo giorno, in questo modo nessuno urla se non viene fatto subito, dando al nuovo sviluppatore un po 'di tempo per familiarizzare con la base di codice.

La cosa più importante da fare è avere una revisione del codice di tutto il suo lavoro nelle prime due settimane. Non vuoi scoprire che il ragazzo sta andando nella direzione sbagliata o non sta seguendo gli standard di codifica dell'azienda da mesi a cose. È meglio assicurarsi che sappia cosa ci si aspetta dall'inizio e le revisioni del codice lo garantiscono. Naturalmente penso che le revisioni del codice siano valide per tutti i dipendenti (esaminiamo il 100% del nostro codice prima della distribuzione), ma sono fondamentali per i nuovi dipendenti e dovrebbero essere fatte di persona in cui è possibile rispondere alle domande e indirizzarle alla documentazione che potrebbero non avere visto ancora se necessario.

Quello che non vuoi è un nuovo ragazzo che entra e usa uno stile diverso dal resto di te. Le persone spesso cercano di continuare a utilizzare lo stile di codice del loro lavoro precedente anche quando è in conflitto con lo stile di codice utilizzato nel nuovo posto, il che può creare confusione e fastidio da parte degli altri sviluppatori.

Una cosa che ho notato anche con sviluppatori esperti è che alcuni di loro non sono così buoni come sembravano essere nel colloquio, la revisione del codice ti aiuterà a scoprirlo velocemente, quindi puoi risolverlo. Li incoraggerà anche a fare effettivamente qualcosa, ho visto nuovi dipendenti che non sono stati sottoposti a revisione del codice a trascinare fuori un progetto senza mostrare ciò che stavano facendo a nessuno e poi sono partiti una settimana prima della scadenza che sapevano che non avrebbero colpito perché erano sopra le loro teste e in realtà non avevano completato alcuna parte del progetto. Meglio controllare presto e spesso con nuove persone fino a quando non si è davvero sicuri che stiano funzionando.

Inoltre, è normale che il nuovo ragazzo rimanga sconvolto dallo stato del tuo progetto legacy. Non è progettato come pensa che avrebbe dovuto essere. Aspettati questo, ascoltalo e non respingere automaticamente tutto ciò che dice. In particolare, questa persona sembra avere più esperienza di te o degli altri sviluppatori, potrebbe vedere cose che non avevi considerato. Tuttavia, come manager, devi bilanciare le modifiche proposte con il carico di lavoro e le scadenze attuali. Tutti voi potreste voler investire un po 'di tempo nell'apprendimento del refactoring del codice esistente e investire alcune ore nelle vostre stime del tempo per farlo, specialmente se il nuovo ragazzo ha delle preoccupazioni valide. Probabilmente non puoi supportare una riscrittura totale (molte persone che arrivano nuove pensano che dovremmo ricominciare da capo e farlo meglio),

Se hai un po 'di tempo in cui non ci si aspetta che stia contribuendo completamente (e tenendo pienamente conto del suo tempo da parte del cliente), potrebbe anche essere un momento in cui può iniziare su alcune di quelle cose di refactoring che avresti voluto fare ma non hai avuto " non ho avuto tempo di fare. A volte, è una buona cosa usare il periodo di formazione per nuove persone per affrontare alcune cose che non sono nel piano del progetto. Possono imparare la base di codice e se ciò che vogliono fare non funziona, non hai influenzato le pianificazioni esistenti perché non le hai ancora incluse nella pianificazione esistente. E se funziona, potresti avere una grande vittoria rendendo la manutenzione futura più semplice o migliorando la sicurezza o qualunque sia il problema.


Questa è un'ottima risposta, in particolare la parte sulle revisioni del codice e l'opinione degli sviluppatori sullo stato corrente del progetto. Fortunatamente non è un progetto legacy, in realtà è molto nuovo e si muove a un ritmo molto rapido.
MrBliz,

1
+1 - Molti punti positivi, ma vorrei ribadire che è assolutamente essenziale rivedere tutto il loro lavoro in modo da poter valutare il loro livello di abilità e assicurarsi che arrivino sulla stessa pagina del team. Sfortunatamente, ciò richiede molto più tempo rispetto alle prime due settimane. Un altro +1 per non buono come durante l'intervista. Quello che succede a molte persone tra l'intervista e il giorno in cui si presentano è un mistero per me. Le lobotomie sono davvero così comuni come sembrano? Questa è l'unica spiegazione che posso trovare.
Dunk

Sì, rivedi il loro lavoro per assicurarti che non stiano deviando dagli standard stabiliti. Ma se hanno otto anni di esperienza e tu ne hai tre , probabilmente ne sanno più di te . Assicurati di non costringerli a fare le cose a modo tuo.
DJClayworth

2
@DJClayworth, mentre concordo sul fatto che è probabile che la nuova persona abbia più conoscenze e che l'OP dovrebbe prestare molta attenzione a ciò che vuole fare diversamente, ci sono momenti in cui la tua conoscenza del sistema e i requisiti possono superare le sue migliori conoscenze generali e potrebbe essere necessario indirizzarlo a seguire un percorso non ottimale per motivi basati sulla cronologia del sistema e sui requisiti. A volte è necessario insistere sul fatto che fanno le cose a modo tuo per motivi che potrebbero non essere ancora a conoscenza. Ovviamente quando lo fai, devi spiegare perché, non solo lo facciamo sempre così.
HLGEM

@Dunk: secondo la mia esperienza, anche le persone peggiori del mondo possono comportarsi per alcune ore durante un'intervista, quando sono alla disperata ricerca di lavoro. Ecco perché i contratti di assunzione, i tirocini e gli esempi di codice sono così importanti con i nuovi assunti.
Giordania,

18

Avviali immediatamente per piccoli compiti, cose che non richiedono un quadro più ampio.

Man mano che acquisiscono maggiore sicurezza e familiarità con la base di codice, portali a compiti sempre più grandi. La velocità con cui ciò accade dipende principalmente da loro.


Questo è praticamente quello a cui sto pensando.
MrBliz,

+1, questo è un gioco da ragazzi, soprattutto perché la base di codice è piccola.
Louis Kottmann,

8

Mi piace sempre ottenere compiti assegnati a me subito, con la consapevolezza che ci vorrà molto più tempo per scavare nel codice e molte domande verranno poste durante i primi giorni / settimane.

Trovo che non sono in grado di farmi avvolgere completamente la testa attorno a un progetto fino a quando non devo davvero entrare e riparare o cambiare qualcosa.

Inoltre ... Non importa quanto pensi di aver spiegato come funziona un progetto, c'è sempre il "oh sì, ho dimenticato di dirtelo", "ci siamo imbattuti in questo problema, quindi abbiamo fatto questo" momenti che non vengono presi in giro fino a quando in realtà inizi a lavorare.


+1 Quanto prima il nuovo assunto può iniziare a setacciare il progetto, tanto prima il nuovo noleggio sarà a suo agio (disposto a prendere la proprietà / responsabilità) di ciò che sta facendo.
Chad Harrison,

3

Per quanto?

Quanto dura una corda?

Quando si sente a suo agio: quando corregge il suo primo bug -> è pronto .


3

Nella comunità open source, tutti coloro che volevano unirsi al progetto prima affrontano alcuni piccoli problemi. Se lui o lei è in grado di gestire il problema molto bene, gli verrà assegnato il compito più importante. In questo modo, sarebbero diventati uno sviluppatore principale del progetto.

Questo sviluppatore senior ha otto anni di esperienza in .NET, quindi puoi assegnargli alcuni semplici bug da correggere. Se è facile per lui gestirli, potresti assegnargli problemi complessi per aiutarlo a familiarizzare con l'intera applicazione. Successivamente, potrebbe iniziare a scrivere nuove funzionalità e ad analizzare strani problemi. Fallo e basta, non c'è tempo di installazione!


2

8 anni di esperienza. Vorrei solo buttarlo dentro. Dovrebbe essere in grado di nuotare. Come altri hanno notato, iniziare con piccoli compiti facili. Gli permetterà di armeggiare attraverso il processo di check-in / check-out del codice e qualsiasi altro processo di sviluppo che hai.

Ho cambiato lavoro molte volte e ho contribuito a tutti loro entro la prima settimana. Il più difficile mi ha richiesto una settimana per compilare il codice (almeno 100k + righe di codice). Una build completa ha richiesto 8 ore per quel progetto.

Ho lavorato per circa 80 ore la prima settimana (il progetto era seriamente indietro).


Interessante che tutti
stiano

1. Direi che in inglese il pronome predefinito è maschile, digitando "lui o lei" tutto il tempo sarebbe corretto ma più sforzo di quanto la maggior parte delle persone voglia mettere in campo. 2. Quale percentuale di programmatori è di sesso femminile? In questo caso, il default del maschile ha delle statistiche dalla sua parte ... Quindi immagino che sia più semplicemente usando il modo semplice predefinito di riferirsi a un individuo casuale, non assumendo specificamente che siano maschi o femmine.
Thymine,

Sono un ragazzo e quindi anche tutti gli altri devono essere :-). Solo il mio modo di scrivere, non sono abbastanza disciplinato da scriverlo sempre.
Bill Leeper,

1

Per un'app così piccola e uno sviluppatore che ha sperimentato, penso che un giorno sia sufficiente per i bug di base. Bug coinvolti o piccole funzionalità più vicini a una settimana (una volta chiariti il ​​dominio e l'architettura problematici).


2
Penso che i miei standard siano probabilmente troppo alti, ma i tuoi ... 1 giorno ... e 1 settimana per essere davvero produttivi? IME, questo non è molto realistico.
Dunk

@Dunk: essere assegnato compiti ed essere in grado di affrontarli senza perdersi completamente? Non sto dicendo che saranno a tutta velocità, ma a quel punto dovrebbero essere in grado di dare la caccia alla base di codici, sapere chi chiedere per saperne di più, ecc.
Telastyn,

si, seriamente. 11k LoC non è molto grande. Fallo impostare in modo che si compili e funzioni nel debugger e poi mostragli come funziona. Questo dovrebbe essere abbastanza.
gbjbaanb,

1

La risposta è, dipende. Se vuoi che risolva un off da un errore su qualcosa o cambi il colore di un elemento GUI, quindi circa 5 minuti (qui è dove conserviamo il nostro codice), se vuoi una riprogettazione totale dell'intera architettura dell'app che richiede un po 'di più.

Dipende davvero dal compito che ti aspetti che esegua.

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.