Cinque nuovi sviluppatori junior e un sacco di compiti complessi. 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 dei bug in arrivo richiedono in genere una conoscenza più approfondita rispetto a uno sviluppatore recentemente laureato (threading / 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, mentoring / gestirle, rivedere il loro codice consumano tutto il mio tempo e spesso sento che potrei risolvere i problemi in minor tempo rispetto all'intero il processo di delega prende (contando solo il mio tempo). Inoltre, non ho il tempo di risolvere i compiti che richiedono una conoscenza approfondita del sistema / competenze più avanzate e non sembra che cambierà nel prossimo futuro.

Quindi, che cos'è adesso? Cosa dovrei fare per usare efficacemente loro e il mio tempo?

    
posta mxe 29.08.2012 - 00:22
fonte

5 risposte

2

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

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

Consideralo in questo modo, se trascorri i sei mesi successivi mentoring in modo efficace e i junior imparano abbastanza da diventare sviluppatori intermedi, quindi hai 5 sviluppatori intermedi e un senior. Se fai tutto il lavoro duro da solo perché è più veloce, tra sei mesi farai 5 pollici junior ballando loro i pollici (beh, il migliore di loro sarà passato ad altri lavori se non gli hai dato alcun lavoro stimolante, quindi tu potrebbe avere un numero minore o minore di giovani sviluppatori) e un anziano sovraccarico e irritabile.

Sapete quali interazioni complesse si trovano tipicamente nei bug, quindi sviluppate un po 'di formazione specifica su quei tipi se le cose, come risolvere i problemi e trovare il problema reale e poi i tipi di metodi tipicamente necessari per risolverli. Quindi dai loro questi problemi mentre escono. Sì, impiegheranno più tempo per risolverli e dovresti tenerne conto nelle stime del tuo tempo.

L'idea di programmazione della coppia è fantastica. Abbinalo con uno diverso per ogni problema veramente avanzato. Anche se non conoscono ancora abbastanza per risolvere il problema, avere il giovane alla tastiera mentre dici loro cosa provare in termini di ricerca della causa aiuterà a insegnare loro il processo di risoluzione dei problemi. Certo, non aspettarti solo che prendano il dettato. spiega cosa vuoi che cerchino e perché. Chiedi le loro idee e ascoltali. Spiega perché la loro idea non è una buona scelta se non lo è. Utilizzare il metodo socratico di insegnamento ponendo domande importanti. Ricorderanno meglio la soluzione con la quale sono venuti fuori attraverso le domande principali di quella che hai dettato loro senza spiegazioni. Ricorderanno anche meglio se hanno tipicamente digitato la soluzione invece di guardarti mentre la digiti. Uno dei principali principi dell'apprendimento è che le persone conservano di più se lo fanno piuttosto che semplicemente ascoltare.

Una volta che il minore 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 si presenterà questa classe di problemi e solo essere disponibile per la consultazione, non rimanere in piedi le loro spalle mentre provano cose diverse.

Hai cinque nuove persone che sono davvero difficili. Devi essere onesto con tutti loro e ruotare con chi accoppi o dare la guida. Non giocare preferiti. BUt devi anche essere una persona che fornisce "Tough love" se qualcuno non ha successo e sta facendo progressi. Potrebbe essere necessario chiamare uno o più di loro e dire loro che hanno bisogno di migliorare e perché sentono che non ci stanno riuscendo. SOme peopel ti consentirà di fare tutto il lavoro se accoppiato e non puoi permetterlo, perché è più semplice. Se la persona non può fare il lavoro, è più gentile con loro e molto meglio per la tua squadra se non la porti con sé una volta che è ovvio che non possono o non impareranno ad essere più indipendenti.

Ricorda, ottieni ciò che ti aspetti. Se non ti aspetti molto, non otterrai molto. Aspettatevi che brillino e la maggior parte di essi arriverà al vostro livello.

    
risposta data 29.08.2012 - 17:10
fonte
20

Programmazione coppie suona come una grande possibilità qui.

  • Dai a quattro di loro due dei più semplici di questi bug, lasciali abbinare e fai in modo che ogni coppia ne affronta uno.
    • Includi questa richiesta come "riesci a capire che cosa sta causando questo?". Non farli iniziare a pensare a come per risolverlo ancora.
    • Una volta che hanno un livello di spiegazione, quindi chiedi loro come potrebbe essere corretto. In questo modo non saranno così sopraffatti da un compito enorme tutto in una volta. Lasciali andare e sperimentare il codice se non lo hanno già fatto, e una volta che hanno un piano, anche un vago, puoi guidarli verso una buona soluzione.
  • L'altro, puoi accoppiarlo e iniziare a lavorare su uno dei più difficili con lui. Questo può essere più difficile data la sua inesperienza con il codice, ma avrà anche il beneficio 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 funzione.

Per un aneddoto / esempio di questo suggerimento funzionante: questo è stato il modo in cui sono stata introdotta nella parte più caotica del codice base su cui lavoro - con l'altro sviluppatore relativamente nuovo con cui sono stato abbinato, abbiamo finito per fare qualcosa del genere:

  • Ci è stato dato un bug, e dopo circa 10 minuti di introduzione, è stato detto di provare a capire cosa stava succedendo.
  • Circa un'ora dopo, ci siamo divisi e scavato in due diversi pensieri.
  • Circa due ore dopo, ho capito in generale come funzionava il codice, ma non sapevo esattamente dove veniva generato il cattivo output. Ha capito come veniva generato, scavando nei dati grezzi e denormalizzati, ma non riusciva a capire il codice.
  • Abbiamo eseguito il pairing di backup e seguito i percorsi del codice insieme e ottenuto una risposta esatta. Da questo, abbiamo analizzato con il nostro manager alcune possibili soluzioni e abbiamo finito per implementarlo in seguito.

Da allora ho ereditato il mantenimento di tutta la parte del codebase, dato che sono davvero l'unico a capire come funziona (gli sviluppatori originali che sono ancora in giro non ricordano nemmeno completamente).

    
risposta data 29.08.2012 - 02:49
fonte
7

Insegnali. Assegna loro compiti che possono facilmente risolvere.

In parole povere, il problema è che la forza lavoro suddetta non è abbastanza abile da essere molto produttiva con il compito che ha. Pertanto, puoi 1) facilitare l'attività 2) cercare di aumentare l'abilità della forza lavoro.

Un simile problema quasi sempre accade (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 sconosciuti. Addestrando la persona a familiarizzare con gli strumenti e le metodologie il problema può essere facilitato più rapidamente.

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

    
risposta data 29.08.2012 - 00:37
fonte
3

Sembra che tu non fossi parte della decisione di assunzione. Fai una valutazione corretta delle loro capacità per gestire le attività correnti. Annota un rapporto con una raccomandazione (formazione esterna e attività simili purché non influenzi i 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 alla volta, non suona bene a meno che tu non abbia un negozio rilassato. Qualunque cosa tu faccia, non cercare di insegnare loro nel tuo tempo di progetto, a meno che ciò non sia previsto nel piano.

Modifica Potrebbe essere opportuno menzionare legge di Brook in questa situazione.

    
risposta data 29.08.2012 - 01:17
fonte
2

Forse puoi passare un po 'di tempo a creare un ambiente sandbox in cui puoi lanciarli per affrontare alcuni dei problemi più difficili senza fare del male. Invitali a testare le loro soluzioni nel modo più completo possibile. Metti più di 1 sullo stesso problema.

Tutte queste cose danno loro la possibilità di essere abbastanza abili da essere utili, oltre a richiedere meno del tuo tempo. Naturalmente se li hai (per lo più) affondano o nuotano e loro affondano, allora devi ripensare alle cose.

Nella professione di programmazione, le persone che non possono apprendere per lo più da sole probabilmente non valgono veramente lo sforzo necessario per insegnare loro. Ma penso che probabilmente ti sorprenderanno per lo più con il modo in cui vanno d'accordo quando tagli l'aiuto.

    
risposta data 29.08.2012 - 01:55
fonte

Leggi altre domande sui tag