Cinque nuovi sviluppatori junior e molte attività complesse. Che si fa?


10

La nostra azienda ha assunto cinque nuovi sviluppatori junior per aiutarmi a sviluppare il nostro prodotto. Sfortunatamente le nuove funzionalità e le correzioni di bug in arrivo di solito richiedono una conoscenza più approfondita di quella di uno sviluppatore di recente laurea (thread / concorrenza, colli di bottiglia delle prestazioni di debug in un sistema complesso, ecc.)

Delegare (e pianificare) attività che (probabilmente) possono risolvere, rispondere alle loro domande, tutorare / gestirle, rivedere il loro codice utilizzano tutto il mio tempo e spesso sento di poter risolvere i problemi in meno tempo di quanto l'intero processo di delega richieda (contando solo il mio tempo). Inoltre, non ho tempo per risolvere i compiti che richiedono una conoscenza più approfondita del sistema / competenze più avanzate e non sembra che cambierà nel prossimo futuro.

Allora, che succede adesso? Cosa devo fare per usare il loro tempo e il mio tempo in modo efficace?


1
Tutti e 5 i giovani sono stati coinvolti nel tuo progetto? Sei l'unico sviluppatore senior a supervisionarli?
Tyanna,

@Tyanna: Sì, sono l'unico anziano in questo progetto. Gli altri anziani sono stati trasferiti in altri progetti qualche tempo fa.
mxe

2
la prima cosa da fare è spiegare al management che sarete leggermente meno produttivi man mano che aumenterete i neofiti
jk.

Come neolaureato, sono molto sorpreso che esista un programma che non copre la concorrenza o le prestazioni.
Daniel Joseph,

+1. Il mio unico rimpianto è che non posso votarti di più.
Drago di Shivan,

Risposte:


2

Sì, puoi risolvere le cose più velocemente di loro, ecco perché sei più anziano e loro no. Tuttavia, un buon anziano vuole portare anche i suoi junior a livello senior e l'unico modo per farlo è far loro imparare come fare le cose.

Il mentoring è l'uso più efficace del tuo tempo in questo momento, non la codifica.

Guarda in questo modo, se trascorri i sei mesi successivi in ​​modo efficace e gli studenti imparano abbastanza per diventare sviluppatori intermedi, allora hai 5 sviluppatori intermedi e uno senior. Se fai tutto il duro lavoro da solo perché è più veloce, in sei mesi avrai ancora 5 junior agitando i pollici (beh, i migliori si saranno trasferiti ad altri lavori da allora se non gli dai un lavoro impegnativo, quindi tu può avere un numero minore o più recente di devloper junior) e un senior sovraccarico di lavoro e irritabile.

Sai quali interazioni complesse si trovano in genere nei bug, quindi sviluppa un addestramento specifico su quei tipi di cose, come fare il troublshoot e trovare il problema reale e quindi i tipi di metodi in genere necessari per risolverli. Quindi dai loro quei problemi mentre si presentano. Sì, ci vorrà più tempo per risolverli e dovresti tenerlo presente nelle tue stime del tempo.

L'idea di programmazione della coppia è fantastica. Abbinalo a uno diverso per ogni problema veramente avanzato. Anche se non sanno ancora abbastanza per risolvere il problema, avere il junior alla tastiera mentre dici loro cosa provare in termini di ricerca della causa aiuterà a insegnare loro il processo di risoluzione dei problemi. Naturalmente, non aspettatevi solo che prendano dictaion. spiega cosa vuoi che cerchino e perché. Chiedi le loro idee e ascoltale. Spiega perché la loro idea non è una buona scelta se non lo è. Usa il metodo di insegnamento socratico ponendo domande importanti. Ricorderanno meglio la soluzione che si sono inventati attraverso le tue domande principali rispetto a quella che hai dettato loro senza spiegazioni. Ricorderanno anche meglio se hanno tipicamente scritto la soluzione piuttosto che guardarti mentre la digiti.

Una volta che il junior ti ha aiutato a risolvere una particolare classe di problemi come parte di una coppia con te, puoi accoppiarlo con qualcun altro la prossima volta che quella classe di problemi si presenta ed essere disponibile solo per la consulenza, non in piedi sopra le spalle mentre provano cose diverse.

Hai cinque nuove persone che è davvero difficile. Devi essere onesto con tutti loro e ruotare con chi accoppi o dai la guida. Non giocare ai preferiti. Dovrai anche essere una persona che fornisce "amore duro" se qualcuno non ha successo e sta facendo progressi. Potrebbe essere necessario metterne da parte uno o più e dire loro che devono migliorare e perché ritieni che non ci riescano. SOme peopel ti consentirà di fare tutto il lavoro se ti accoppi e puoi farlo; lascialo solo perché è più facile. Se la persona non può fare il lavoro, è più gentile con loro e molto meglio per la tua squadra se non li porti una volta è ovvio che non possono o non impareranno ad essere più indipendenti.

Ricorda, ottieni quello che ti aspetti. Se non ti aspetti molto, non otterrai molto. Aspettati che brillino e la maggior parte di loro raggiungerà il tuo standard.


20

La programmazione della coppia suona qui come una grande possibilità.

  • Dai a quattro di loro due dei più semplici di questi bug, lasciali accoppiare e fai in modo che ogni coppia affronti uno di essi.
    • Frase questa richiesta come "Riesci a capire cosa sta causando questo?". Non farli iniziare a pensare a come risolverlo ancora.
    • Una volta che essi hanno un certo livello di una spiegazione, poi chiedere loro come potrebbe essere risolto. In questo modo non saranno così sopraffatti da un compito enorme tutto in una volta. Lasciali andare e sperimentano il codice se non lo hanno già fatto, e una volta che hanno un piano, anche se vago, puoi guidarli verso una buona soluzione.
  • L'altro, puoi accoppiarti e iniziare a lavorare su uno dei più difficili con lui. Questo potrebbe essere più difficile data la sua inesperienza con il codice, ma avrà anche il vantaggio di qualcuno con esperienza che lo attraversa con lui.
    • Penso che una nuova funzionalità potrebbe essere un buon modo per farlo, data la tua esperienza. Puoi mostrargli l'API esistente mentre viene sviluppata la nuova funzionalità.

Per un aneddoto / esempio di questo suggerimento funzionante: ecco come sono stato introdotto nella parte più pelosa della base di codice su cui lavoro - con l'altro sviluppatore relativamente nuovo con cui sono stato accoppiato, abbiamo finito per fare qualcosa del genere:

  • Ci hanno dato un bug e dopo circa 10 minuti di presentazione ci hanno detto di provare a capire cosa stava succedendo.
  • Dopo circa un'ora, ci separammo e scavammo in due diversi treni di pensiero.
  • Circa due ore dopo, ho capito in generale come funzionava il codice, ma non sapevo esattamente dove veniva generato l'output errato. Capì come veniva generato, scavando nei dati grezzi e denormalizzati, ma non riuscì a capire il codice.
  • Abbiamo eseguito il backup e seguito i percorsi del codice insieme, ottenendo una risposta esatta. Da questo, abbiamo fatto un brainstorming con il nostro manager alcune possibili soluzioni e abbiamo finito per implementarlo in seguito.

Da allora ho ereditato la manutenzione dell'intera parte della base di codice, dal momento che sono davvero l'unico a capire come funziona più (gli sviluppatori originali che sono ancora in circolazione non ricordano nemmeno del tutto).


+1. L'unico problema potrebbe essere quello di dividere 5 persone in coppie di 2 ;-)
Doc Brown,

@DocBrown Bene, 5 sviluppatori inesperti + 1 sviluppatore esperto significa che puoi creare 3 gruppi di 2 (vedi il secondo punto principale). Potrebbe diventare più un tutorial su quale tipo di codice (UI, business logic, ecc.) Va dove, ma imparerà cose diverse rispetto alle altre 4. Quindi, nella prossima serie di attività, ruota.
Izkata,

7

Insegna loro. Assegna loro compiti che possono facilmente risolvere.

In poche parole, il problema è che la suddetta forza lavoro non è abbastanza competente per essere molto produttiva con il compito che ha. Pertanto, è possibile 1) facilitare l'attività 2) provare ad aumentare le capacità della forza lavoro.

Un problema simile si verifica quasi sempre (in una certa misura) ogni volta che una nuova persona si unisce a una squadra e inizia a lavorare su una base di codice di cui non ha esperienza. Questo diventa più un problema se gli strumenti e le metodologie sono sconosciute. Formando la persona a familiarizzare con gli strumenti e le metodologie, il problema può essere risolto più rapidamente.

Tuttavia, risolvere un problema del genere richiede tempo: non ci si può aspettare che gli altri sappiano tutto o imparino tutto in un solo momento. Forse l'introduzione di alcuni libri sulla concorrenza, l'ottimizzazione del software e le metodologie generali necessarie sarebbe un buon inizio.


3

Sembra che non fossi parte della decisione di assunzione. Fai una valutazione equa delle loro capacità di gestire le attività correnti. Scrivi un rapporto con una raccomandazione (formazione esterna e tali attività purché non influisca sui tempi di consegna), invia il rapporto al tuo manager che può iniziare a parlare con chiunque abbia assunto quei ragazzi. Una nuova persona può essere assorbita in una squadra ma 5 nuove persone contemporaneamente, non suona bene se non si dispone di un negozio rilassato. Qualunque cosa tu faccia, non cercare di insegnare loro nel tempo del tuo progetto, a meno che ciò non sia spiegato nel piano.

Modifica: potrebbe essere opportuno menzionare la legge di Brook in questa situazione.


2

Forse puoi dedicare un po 'di tempo alla creazione di un ambiente sandbox in cui puoi lanciarli per affrontare alcuni dei difficili problemi senza fare del male. Invitali a testare le loro soluzioni il più accuratamente possibile. Metti più di 1 sullo stesso problema.

Tutte queste cose danno loro la possibilità di diventare abbastanza abili da essere utili, inoltre richiedono meno tempo. Naturalmente se li hai (per lo più) affondano o nuotano e praticamente affondano, allora devi ripensare le cose.

Nella professione di programmatore le persone che non riescono ad apprendere principalmente per conto proprio probabilmente non valgono davvero lo sforzo necessario per insegnare loro. Ma penso che probabilmente ti sorprenderanno per lo più con il modo in cui vanno d'accordo quando riduci l'aiuto.


Sembra una perdita di tempo se l'ambiente sandbox non esiste già.
Ramhound,
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.