Come guidare uno sviluppatore junior


99

Questo titolo è un po 'ampio, ma potrei aver bisogno di dare un po' di informazioni prima di poter porre correttamente la mia domanda.

So che domande simili sono già state poste qui . Ma nel mio caso non sto chiedendo se dovrei fare da mentore a qualcuno o se la persona è adatta per essere uno sviluppatore di software. Questo non è il mio posto per giudicare. Non mi è stato chiesto apertamente, ma è evidente che io e altri colleghi sviluppatori senior dobbiamo guidare i nuovi sviluppatori che iniziano qui. Non ho alcun problema con questo e, in molti casi, mi dà una nuova prospettiva sulle cose e finisco per imparare nel processo. Inoltre, ricordo quanto sia stato utile all'inizio della mia carriera quando qualcuno avrebbe impiegato del tempo per insegnarmi qualcosa.

Quando dico "nuovo sviluppatore" potrebbero essere ovunque, da appena usciti dal college ad avere un anno o due di esperienza.

Recentemente abbiamo avuto persone che iniziano qui che sembrano avere un atteggiamento verso lo sviluppo / programmazione diverso dal mio e difficile da riconciliare; estraggono solo le informazioni sufficienti per svolgere l'attività, ma non imparano davvero da essa. Mi ritrovo a ripassare gli stessi problemi con loro. Capisco che parte di questo potrebbe essere una cosa di personalità, ma sento che è il mio lavoro fare del mio meglio e spingerli fuori dal nido mentre sono sotto la mia ala, per così dire.

Come posso impartire informazioni sufficienti affinché possano imparare ma non dare così tanto da risolvere il problema per loro?

O forse:

Qual è la risposta adeguata alle domande che sono progettate per prendere la strada della minor resistenza e, in sostanza, costringerle ad imparare invece di prendere la via d'uscita facile?

Queste domande sono probabilmente domande di insegnamento più generali e non hanno molto a che fare specificamente con lo sviluppo del software.

Nota: non ho voce in capitolo su quali compiti stanno lavorando. La direzione risolve il problema e potrebbe essere qualsiasi cosa, da una semplice correzione di bug all'avvio di un'intera applicazione da soli. Anche se questo non è l'ideale in alcun modo e presenta ovviamente il proprio guanto di sfide, ritengo che sia un argomento da lasciare a un'altra domanda. Quindi il meglio che posso fare è aiutarli a risolvere il problema e cercare di aiutarli a scomporlo in problemi più semplici e controllare anche i loro registri di commit e segnalare gli errori che hanno commesso.

I miei obiettivi principali sono:

  • Aiutali e fornisci loro gli strumenti di cui hanno bisogno per iniziare a diventare più autosufficienti.
  • Guidali nella giusta direzione e rompi presto le cattive abitudini di sviluppo.
  • Riduci il tempo che trascorro con loro (il tipo di personalità sopra descritto tende a richiedere molto di più uno a uno e non fa bene su messaggistica istantanea o e-mail. Anche se generalmente va bene, non riesco sempre a fermare ciò che ' sto lavorando, rompendo il passo e aiutandoli a eseguire il debug di un errore in un momento; ho i miei progetti che devono essere realizzati).

1
puoi solo aiutare qualcuno a diventare ciò che loro stessi vogliono diventare. Guida coloro che vogliono essere guidati.
Darknight

14
Hai ragione sul fatto che ci sono molte cose che non sono specifiche per lo sviluppo del software, ma si tratta di essere un buon insegnante (anche se non è il tuo lavoro principale). Nel contesto dell'insegnamento, ho scritto un piccolo pezzo nella Cronaca di Ed. Superiore che dice che il successo può accadere quando reciti tre ruoli: essere un buon modello di ruolo, fungere da supporto tecnico (fino a quando non capiscono come porre buone domande e dove ) ed essere una cheerleader (paziente e di supporto).
jcmeloni,

1
C'è un sacco di grandi feedback su questo argomento qui: programmers.stackexchange.com/questions/137708/…
KodeKreachor

Perché stai acquistando la retorica del "mentoring"? Usa la parola "formazione": stai descrivendo "formazione per il lavoro" , questa non è roba filosofica, il tuo modo di vedere la vita nell'universo e tutto il resto, ecco come dovrebbero essere fatte le cose nella tua azienda. (e la tua azienda dovrebbe pensarci un po 'di più sul darne uno ufficiale)
ZJR

3
E ... assicurati che il loro cubo sia a metà strada sul percorso dal tuo cubo al bagno ...
vrdhn

Risposte:


121

C'era una volta una domanda qui intorno che conteneva questo tipo di informazioni, e il pezzo che mi ha colpito di più era non toccare la tastiera

In breve, dì ai tuoi figli come realizzare ciò che stanno cercando di fare, ma non farlo per loro.

Ma oltre a questo, ecco alcuni altri suggerimenti:

  • Incoraggia Google (o qualsiasi altro strumento di ricerca). Se sai che la risposta può essere trovata facilmente online, di 'loro di cercarla invece di dire loro la risposta. Alla fine, vuoi insegnare loro come insegnare a se stessi e non farli dipendere da te.
  • Renditi disponibile per rispondere alle domande. Se non si è mai disponibili o non si desidera essere interrotti, chiarire loro che dovrebbero tenere le loro domande fino a un determinato momento.
  • Esegui regolarmente le revisioni del codice per dire loro cosa stanno facendo nel modo giusto / sbagliato. Usalo come un'opportunità per sottolineare le migliori pratiche
  • Inizia presto con le migliori pratiche. È meglio impiegare più tempo per insegnare loro nel modo giusto, piuttosto che provare a cambiare i loro metodi in seguito.
  • Iniziali presto con la pianificazione / documentazione di ciò che faranno invece di lasciarli iniziare scrivendo codice.
  • Sii aperto all'apprendimento da loro. Probabilmente trascorrono più tempo di quanto tu impari, ed è possibile che imparino qualcosa che non sapevi.
  • Aiutali a imparare dai loro errori. Ci saranno errori, quindi assicurati di mostrare loro che gli errori fanno parte dell'apprendimento e che dovrebbero usarli come un'opportunità per imparare.

  • (Da RuneFS in basso) Invece di dire loro come fare qualcosa, cerca di aiutarli a capirlo da soli. Ciò contribuirà a migliorare la loro capacità di risolvere logicamente un problema e aumenta la loro capacità di apprendimento

  • (Da RuneFS di seguito) Invece di dire loro cosa hanno fatto di sbagliato, raccontagli come possono migliorarlo. Assicurati di includere perché la tua strada è migliore della loro. Ciò aumenterà la loro fiducia invece di indebolirla. Certo, se non ti stanno ascoltando, non aver paura di dire loro di farlo nel modo giusto :)

68
+1 per non toccare la tastiera. In parte perché insegnare loro come fare qualcosa è più importante che farlo in una situazione di mentoring, ma proprio perché odio assolutamente le persone che mi rubano la tastiera.
fire.eagle

3
So che è già stato detto ma "non toccare la tastiera". È un punto MOLTO buono
Tom Squires

3
Mi sembra che molto di questo sia solo insegnare allo sviluppatore junior a porre domande più intelligenti. Grande risorsa per questo: catb.org/esr/faqs/smart-questions.html
TALlama

4
Difficilmente concordo con la maggior parte dei tuoi punti, ci sono due parti in cui mi impegno molto per insegnare agli allenatori e ad altre persone responsabili dello sviluppo delle altre persone. Non dire mai loro come fare qualcosa. Aiutali a capirsi da soli e non dire mai loro cosa hanno fatto di sbagliato, digli come possono invece migliorare. Il primo perché questo aumenta il loro apprendimento, il secondo perché invece di indebolire la fiducia può aumentarlo
Rune FS

1
@Jae: il consiglio è per il mentore di non toccare la tastiera del junior.
dal

21

Ho circa 4 anni di esperienza e posso dirti dalla mia esperienza come sviluppatore junior cosa vorrei avere in termini di tutoraggio. Sembra che tu stia effettivamente descrivendo il tipo di sviluppatore che ero quando ho iniziato :)

In sostanza, vuoi incoraggiarli ad imparare. Alcune persone pensano che dopo aver finito con il college, non devono più leggere libri o imparare. Questo tipo di atteggiamento può portare a cercare scorciatoie e semplicemente "farlo".
Prendi "The Pragmatic Programmer" e faglielo leggere. Questo libro li aiuterà a capire che la programmazione è un mestiere / carriera e non solo un lavoro. Raccomanda ai libri di leggere ogni trimestre circa. Aiutali a costruire il loro "portafoglio di conoscenze" (come indicato in Pragmatic Programmer). Consiglio vivamente Safari Books Online che contiene molti libri CS / di programmazione.

Con il loro portafoglio di conoscenze, sapranno dove cercare se hanno problemi. Insegna loro a dove guardare. Io stesso ho scoperto l'utilità di StackOverflow di recente (e come sapete, è meglio guardare qui quindi solo Google).

Sembra che non puoi passare molto tempo con loro, ma la programmazione delle coppie è molto utile. Se non riesci a farlo, fai almeno delle revisioni del codice usando CodeCollaborator o un altro strumento simile. Non impiegano tanto tempo quanto pensi che facciano.

Anche i test unitari sono molto importanti. Possono rivelare rapidamente cattive pratiche di sviluppo, specialmente se le abbini a un'integrazione continua.


10

Poni di nuovo le domande più importanti per indirizzarlo alle risposte piuttosto che dirgli semplicemente (bene puoi dirgli alcune cose di base come il nome del server e quale database memorizza le informazioni). Mostragli come trovare le sue risposte.

E non riscrivere mai il suo codice quando è sbagliato, digli cosa è sbagliato e aspettati che lo risolva. Ottieni quello che ti aspetti. Non aiuti nessuno rendendolo dipendente da te.

Anche le revisioni del codice sono fondamentali. E se abbini un programma, lascia che abbia la tastiera frequentemente. Anche se gli stai dicendo che cosa digitare, imparerà dal fare di più digitando che imparerà semplicemente seduto accanto a te mentre programmi.

Prendi alcuni esempi dal software tipici di come è strutturata l'applicazione e analizzali riga per riga assicurandoti di capire perché ogni riga è necessaria e cosa fa. Il tuo compito è assicurarti che conosca gli standard di codifica e come sia organizzato il codice e perché tu (come azienda) fai le cose come fai tu.

Se ha un modo diverso di suggerire, ascolta attentamente. In primo luogo potrebbe avere ragione. In secondo luogo, l'ascolto ti dirà dove sono le sue debolezze nella comprensione se ciò che suggerisce non è pratico. Inoltre, le persone tendono a rispettarti di più se le ascolti. Quando ha torto, torna alle domande principali per convincerlo a capire perché l'idea è sbagliata. SE è anche vicino all'essere giusto, vai con le sue idee a volte, niente è più scoraggiante di quanto gli venga sempre detto che le tue idee sono inutili.

Poni domande sul suo passato. Potrebbe sapere alcune cose con cui non hai avuto la possibilità di lavorare. Se è così e l'opportunità di usarli si presenta, fargli domande sulla sua conoscenza.

Se la tua applicazione è per niente vecchia, probabilmente ha alcuni "trucchi" subdoli di quelli che qualcuno di nuovo non avrà modo di conoscere. Quindi, quando sta iniziando a lavorare in aree in cui hai uno o più di questi gotcha, potresti parlargli di loro mentre si sta accelerando prima di scrivere un codice, quindi cerca di vedere se è caduto nel gotcha quando ha codificato.

Infine, ottieni rispetto in parte dando rispetto. Tratta tutti con rispetto il tuo mentore. Non farli sentire sminuiti o stupidi. Ti ascolteranno molto meglio se li tratterai con rispetto.


1
Quasi identico alla risposta che mi sarei dato, ma aggiungerò anche: Lascia che i tuoi juniors commettano errori (offri opportunità per renderli pari) perché gli errori offrono la migliore opportunità di apprendimento. Il fallimento provoca uno stimolo emotivo che ha maggiori probabilità di tradursi in un'associazione di memoria che incoraggia l'apprendimento e, si spera, i tuoi giovani saranno incoraggiati dai loro fallimenti a porre più domande. Dico spesso ai miei ragazzi che è OK provare ancora a fallire all'inizio se provano anche a imparare dai loro fallimenti, e uso test e revisioni del codice per guidare i loro sforzi di apprendimento.
S.Robins

Fare domande importanti è una delle migliori tecniche che ho trovato per portare qualcuno a un altro livello di maturità. Il tuo obiettivo principale non è quello di portarli alla risposta giusta, è di portarli in un posto dove possano riconoscere la risposta giusta quando la trovano (e come tale, essere in grado di scartare le risposte sbagliate lungo la strada.)
canapa il

1
@ S.Robins, ho scoperto che aiuta anche a sottolineare che conosci queste cose a causa degli errori in cui sei caduto.
HLGEM

8
  • Mi assicuro sempre che lo sviluppatore voglia il mio aiuto e faccio molta attenzione a non approfondire le spiegazioni di quanto la loro pazienza possa tollerare. Come tutti, adoro il suono della mia voce!
  • Li tratto come uguali e mi assicuro di chiedere la loro opinione tutte le volte che sembro.
  • Catturali facendo qualcosa di giusto e faglielo sapere.
  • Imparo sempre qualcosa quando lo faccio bene: sulla mia arte, sulla mia professione, sullo sviluppatore e sull'insegnamento.
  • La prima lezione è sempre: quando sapere che lo hai provato da solo per troppo tempo. Molte persone sono orgogliose di trovare le proprie risposte e bruciano tempo prezioso andando in cerchio.

Ri: "Catturali facendo qualcosa di giusto": Non sono sicuro di essere d'accordo con questo, dal momento che implica che ti guardi sempre alle loro spalle, o almeno, controllandoli regolarmente. Potrebbero esserci delle relazioni laddove necessario, ma non credo che la relazione mentore / protetto sia una di queste; e contraddice il tuo eccellente consiglio di "trattarli come uguali".
Ruakh

Ruak, fai un punto eccellente. Mi è stato insegnato dal mio manager quando sono diventato manager io stesso (era il mio mentore, ma era di Brooklyn ...) e non ho mai messo in discussione la formulazione fino ad ora. Più appropriatamente: "Nota qualcosa di giusto su ciò che stanno facendo." Con questo mi avvio. Quando l'inevitabile problema "off by 1" si presenta con programmatori C, potrei notare che la sua costruzione in loop era compatta e ben commentata, e quindi chiederle di guidarmi attraverso la logica. Grazie.
Thomas McNamee,

OK, sì, sono d'accordo con quello. +1. :-)
ruakh

7

Sono uno sviluppatore junior e penso che il mio mentore si occupi molto bene di queste cose. In generale, mi dirà un paio di modi per fare qualcosa, ma non come farlo. Quindi mi sedevo lì e provavo in entrambi i modi e decidevo quale fosse la soluzione più pulita al problema.

Inoltre, se mai stesse facendo qualcosa che potrebbe essermi utile, mi chiamerebbe solo per dare un'occhiata a ciò che stava facendo e perché.

Ciò ha comportato una piccola quantità di tempo trascorso con me e essenzialmente significa che dovevo imparare da solo le risposte giuste e come implementare le cose. Certo, se mai mi fossi bloccato, sarebbe stato lì per dare una mano, ma questa è stata una manciata di volte. Dopo solo 5 mesi di lavoro con lui probabilmente ho acquisito una maggiore conoscenza delle cose rispetto all'intero corso universitario.

La cosa importante da ricordare è che sono solo un individuo e questo ha funzionato bene per me per come sono e come è. Si tratta di trovare una struttura adatta che possa aiutare entrambi.


5
+1 Ho imparato di più sul lavoro che avrei mai potuto avere all'università, solo perché la gente ha avuto il tempo di insegnarmi.
James Khoury,

7

A seconda dell'attività assegnata, sarei tentato di adottare alcuni approcci diversi:

  • Chiedi loro cosa proverebbero dopo per completare l'attività. Questo può dare un'idea di dove dalla categoria "Non so cosa fare" a "Beh, proverei questo ma ..." categoria sono in termini di avere la propria idea che può essere utile come punto di partenza .

  • Dai una rapida occhiata a cosa vogliono fare e offri suggerimenti in modo che possano capire il problema. Questo piuttosto che dare la risposta di "Basta prendere questa riga di codice", suggerisce di guardare a ciò che c'è ed è tutto necessario.

  • Se la prima coppia non funzionerà, proverei a convincerli a seguire le mie indicazioni su cosa fare per risolvere il problema. Questo è il prossimo passo nella progressione in cui se non hanno idea di dove iniziare e i suggerimenti non funzionano, questo è il punto successivo.

  • Infine, se nient'altro funziona, allora farei il lavoro per loro, ma proverei a evitarlo il più possibile poiché è così che vengono creati problemi come una persona che conosce intimamente un sistema in quanto qualcuno può avere una visione del lavoro di scarico su di me per questo sistema che mi sembra di conoscere così bene.


+1 Stavo per scrivere qualcosa ma questo lo riassume nel mio approccio.
Jason Sebring,

5

Una cosa che ho fatto qui nel mio lavoro che ho trovato davvero utile è stata quella di impostare un forum (ad esempio PHPbb) per domande e risposte interne e seguire la regola secondo cui se la domanda e / o la risposta richiede più di 5 minuti, dovrebbe essere chiesto e risposto tramite il forum. I benefici:

  • Obbliga lo sviluppatore junior a dichiarare chiaramente la domanda, il che rende più facile rispondere, per non parlare dei tempi in cui trova la risposta lui stesso, solo riflettendoci un po 'di più
  • Evita le domande duplicate, poiché lo sviluppatore junior dovrebbe iniziare cercando domande simili già fatte
  • Aiuta a costruire una base di conoscenza che sarà utile per assunzioni future e per documentare molte piccole cose che potrebbero essere perse nel tempo.

4

Ho intenzione di invertire la tendenza qui e suggerire di non provare a incoraggiare gli sviluppatori junior a imparare a trovare le risposte da soli. Questo sembra un gioco di "Ce l'ho ma non ho intenzione di dartelo."

Invece, accoppia con loro nel trovare la risposta. Lo farai comunque su Google, quindi fallo mentre sei seduto con loro. Capiranno che questo è il modo di trovare le risposte.

Se lavori a stretto contatto con loro, impareranno come usare l'IDE correttamente; Come normalizzare un database; come ASCIUGARE il codice ... qualunque cosa tu sappia che vale la pena sapere.

Le chiavi sono: una - per renderti disponibile a loro in modo che possano vedere come lavori. E due: dire ad alta voce perché stai facendo quello che stai facendo. "Questo codice si ripete, quindi ho intenzione di riformattarlo", non "usare il metodo extract su quelle tre righe".


Non credo che tu stia contrastando la tendenza. Questo è un buon consiglio; lavorare con loro e mostrare loro come faresti per risolvere il problema (tuttavia, si potrebbe dover fingere di non conoscere già la risposta [non nasconderla] per mostrare il processo per trovarlo).
Josh Johnson,

E per essere chiari, non ho intenzione di nascondere la conoscenza. Ma è diventato chiaro che ciò che so viene sfruttato (consciamente o inconsciamente). E non sto parlando di qualche caverna nascosta della tecnologia che stiamo usando; Sto parlando della differenza tra una primitiva e un oggetto, o una variabile di istanza e locale, o un messaggio di errore che dice esattamente qual è l'errore e da dove iniziare a cercarlo. (per riferimento, il mio attuale allievo ha 5 anni di esperienza professionale; non credo di essere irragionevole.)
Josh Johnson

4

Ho mai dovuto addestrare un programmatore junior solo una volta. Era per aiutare a mantenere un sistema che avevo costruito. L'obiettivo era quello di consegnargli l'intero sistema.

Dopo un breve periodo in cui mi ha oscurato, l'ho gettato nel fuoco. Gli assegnerei dei casi e mi aspettavo che fossero completati. Se avesse avuto problemi, gli avrei chiesto di spiegare qual era il problema e dove aveva guardato. Lo consiglierei quindi nei termini più generali, dove guardare dopo. (Quale app, forse quale modulo guardare ecc.). Non lo lascerei mai in disgrazia, ma non farei mai niente del lavoro. Fornisci solo indicazioni. Se avesse ancora problemi, mi limiterei a scrollare le spalle e dire "Inizia a tracciare il codice". E ogni volta che lo dicevo, si sentiva rabbrividire, sapendo che era un esercizio noioso. Lo ha fatto impazzire, perché entrambi sapevamo che probabilmente avrei potuto trovare il problema in 10 minuti se mi fossi appena alzato di dosso e aiutato.

Anni dopo, è passato a cose più grandi e ora sta allenando i suoi junior. E la sua storia preferita è come gli direi sempre di "rintracciare il codice" e come quegli esercizi di tracciamento del codice fossero cruciali per renderlo il programmatore che è oggi.


3

Ogni volta che mi viene posta una domanda che so possa essere risolta con una rapida ricerca su Google, troverò la documentazione o un articolo relativo e la inoltrerò alla persona che la pone.

Sapere dove cercare le cose è un'abilità importante ed a volte è più difficile di quanto pensi per un nuovo sviluppatore. Potrebbero anche non sapere cosa stanno cercando, ed è qui che devi aiutarli.

Una volta nelle loro mani, articoli e documentazione li costringeranno a leggere la soluzione invece di applaudire ad altri sviluppatori per una rapida risposta.

Ciò compirà quanto segue:

  • Eliminare parte dell'onere degli sviluppatori esperti.
  • Costringere il nuovo sviluppatore ad apprendere.
  • Felicità per tutti.

A volte devi solo dare loro un amore duro, soprattutto se non sembrano voler imparare. Non dare loro la risposta, ma assicurati di puntarli nella giusta direzione.


3

Consiglierei di iniziare a dare parti di incarichi reali che hai e fare di tutto per poter usare il suo codice. In altre parole, allenalo come sostituto di te stesso.

In questo modo ti impegnerai ad assegnare del tempo per lavorare con i giovani e lui sarà in grado di vedere la "vita reale". Lavorando su compiti reali e ascoltando un feedback vivace, sarà in grado di accelerare piuttosto rapidamente.


1

Ho insegnato alle persone varie materie in passato e la cosa che mi ha colpito di più è il modo in cui la maggior parte delle persone non ha alcuna capacità di problem solving . Cioè, se mostri loro una soluzione esatta, allora sono in grado di riutilizzarla in seguito se riconoscono o gli viene detto che ne hanno bisogno.

Ma pochissime situazioni nella vita sono così. A meno che il tuo lavoro non sia una "fabbrica mentale" che coinvolge l'attaccamento del widget A al widget B con lo strumento C, dovrai disporre di un paio di elementi:

  • Una cassetta degli attrezzi di competenze e strumenti
  • Un metodo di risoluzione dei problemi

Ad esempio, dai un'occhiata a questa risposta che ho pubblicato . Questo riguarda il metodo di risoluzione dei problemi che molte persone non hanno . Il college non lo ha insegnato a nessuno nel programma CompSci, o lo sapevi già o lo hai capito tu stesso.

Una volta che gli sviluppatori junior hanno capito come risolvere i problemi, hanno bisogno di un set di strumenti con cui farlo.

  • Debugger (il college non l'ha mai menzionato)
  • profilers
  • Editor di testo
  • Shell (e utilità associate)
  • Risorse (libri, google, SO, manpage)

Determina ciò che manca ai giovani sviluppatori e puoi aiutarli a migliorare. Basta essere consapevoli del fatto che alcune persone non sono davvero interessate a imparare a risolvere i propri problemi e vogliono semplicemente consegnare loro una soluzione "ovvia passo dopo passo". Questi non sono buoni sviluppatori.

Spero che non ne avrai nessuno. Se lo fai, renditi conto che non importa quanto tempo passi, non si serviranno tutti da soli. Richiederebbe uno sforzo ed è più semplice chiederti di farlo per loro. È simile al problema del benessere e spiegato dalla teoria economica.

L'interesse personale illuminato afferma che le persone prenderanno quella che considerano l'opzione più vantaggiosa in una determinata situazione. Si noti che è ciò che vedono. Vedo la cosa più importante come autosufficiente e apprendimento. Quindi, faccio le cose da solo. Ma altri potrebbero vedere che devono solo fornire il codice di lavoro entro la scadenza. Quindi cercano il metodo meno costoso per farlo. Fornendo loro "omaggi" hanno bisogno del minimo sforzo per completare il loro obiettivo. Fino a quando non rimuovi quella stampella, non cresceranno.


1

La tua organizzazione come la descrivi è molto diversa dalla mia. Sono in contrasto con il mio lavoro junior e lo vedo come il mio ruolo da giudicare. Quindi molto è diverso.

Una cosa che vorrei consigliarvi di fare comunque è visitare frequentemente la loro scrivania nelle prime due settimane in modo speciale. Qualcosa come tre volte al giorno la prima settimana, gradualmente diminuendo.

Il messaggio che cerco di inviare in questo modo è che mi preoccupo della loro produttività. Mi assicuro che non rimangano bloccati. Mi assicuro che seguano le regole e non reinventino la ruota. Insegno loro a impegnarsi il più spesso possibile. Impara a svilupparsi in modo incrementale e pensa al design in modo incrementale.

Il mio peggior incubo sono gli sviluppatori che ogni giorno ti dicono che hanno solo bisogno di un altro giorno per completare la loro funzione. Dopo settimane di ritardo, ottieni un design complicato, che viene hackerato dall'inizio dal suo autore. Funzioni extra non richieste, vengono gettate nel mix per compensare il ritardo e perché sono stati un effetto collaterale gratuito del design.

Credo che molti sviluppatori siano propensi a questo approccio. Se rimani da solo con un compito di compex, è una reazione naturale provare a provare che puoi farlo da solo. Ma è la risposta sbagliata. La qualità è il lavoro di squadra, e prima imparano, meglio è.


1

Le altre risposte sono molto buone, ma volevo commentare questa frase.

Di recente e in passato abbiamo avuto persone che iniziano qui che sembrano avere un atteggiamento verso lo sviluppo / programmazione che è diverso dal mio e difficile da riconciliare; sembrano estrarre abbastanza informazioni per portare a termine l'attività, ma non imparano davvero da essa.

Molte persone vogliono sapere come fare qualcosa. Questo atteggiamento va bene all'inizio quando sei sopraffatto dall'apprendimento di cose nuove e dall'apprendimento del tuo lavoro.

Le persone rare vogliono sapere perché qualcosa viene fatto. Queste sono le persone che i manager intelligenti vogliono, anche se a volte sono difficili da gestire.

Alcune persone codificano per essere pagate bene. Altri accettano felicemente denaro per la codifica. È molto più bello lavorare con persone appassionate di design e programmazione. Sfortunatamente per me, è stato anche piuttosto raro. Almeno fino a quando non ho trovato Stack Overflow.


1

Una cosa a cui prestare attenzione, per coloro che sono entusiasti della prospettiva di fare tutto questo tutoraggio per gli sviluppatori junior: assicurati che la tua gestione capisca cosa sta succedendo.

Insegnare agli altri è un duro lavoro, in generale. Ci vuole concentrazione e concentrazione, pianificazione e impegno, e soprattutto ci vuole tempo. Qualunque sia l'approccio che segui, se insegni e tutori in modo serio, ti divorerà il tuo tempo.

  • Se il tuo management assume sviluppatori meno esperti con l'aspettativa che gli sviluppatori senior assumano compiti di formazione, assicurati che sia esplicito. Scopri quale sarà il periodo di tempo e assicurati che i tuoi programmi di sviluppo riflettano il tempo e gli sforzi dedicati alla formazione. Accertarsi che la direzione abbia alcuni piani per valutare il successo degli sforzi di tutoraggio in alcuni periodi concordati. (Naturalmente, se stanno assumendo sviluppatori che hanno bisogno di insegnamento e tutoraggio, ma la direzione non lo sta pianificando, allora questo è ovviamente un problema serio.)

  • Non tutti sono un buon insegnante o mentore, e non tutti vogliono esserlo. Non intendo sembrare crostoso o amaro; Mi piace molto insegnare. Ma è sciocco aspettarsi che tutti siano bravi a farlo (nonostante i loro talenti), né possiamo aspettarci che tutti apprezzino il processo (ricorda, non è facile). Inoltre, se sei uno sviluppatore senior a cui non piace il mentoring o se ritieni davvero di essere una cattiva scelta per un insegnante o un tutor, assicurati che la tua direzione capisca che un piano che ti coinvolge nello svolgimento di tali compiti è un piano con un difetto grave. D'altra parte, se vuoi diventare bravo nell'insegnamento o nel tutoraggio, anche questo è qualcosa da comunicare.

  • Se l'insegnamento e il tutoraggio sono oneri condivisi in modo diseguale tra la popolazione di sviluppatori senior, assicurarsi che tali incarichi siano riconosciuti come preziosi per l'azienda nello stesso modo in cui vengono riconosciuti i risultati dello sviluppo del prodotto.


1

Ti darò la mia occhiata.

Fondamentalmente, imparo bene quando:

  1. Mi è stata presentata un'introduzione formale all'argomento. Non posso mai imparare qualcosa di nuovo senza che qualcuno (sì, una persona) risponda a tutte le domande che ho sui nuovi concetti. Una volta che l'ho fatto io ...
  2. Prendi un libro. Come mio mentore, dovresti avere lo stesso libro in modo che io possa sempre dire qualcosa del tipo "Ehi, cosa significa nel capitolo quattro, pagina 72, paragrafo 6 ..." e saprai esattamente di cosa sto parlando di. Una volta che ho un libro, sono più indipendente e faccio solo domande. Quindi io...
  3. Inizia un progetto insieme. Questa è la parte più importante del processo. È qui che puoi iniziare a insegnarmi su Best Practices, Algorithms, funzionalità linguistiche difficili (ma utili), ecc.

Ora avevi detto che hai i tuoi progetti di cui occuparti e che non hai sempre tempo. Ecco perché siamo stati benedetti con StackOverflow . Sono sicuro che sarebbero felici di aiutarlo a eseguire il debug del suo codice. Per quanto riguarda le domande che non sono in argomento lì, può porre qui.

Detto questo, devi ancora lavorare con lui su base regolare. Una "linea temporale" generale dovrebbe essere:

  • 1 mese. Dovrebbe conoscere la sintassi di base. Ancora non indipendente durante la codifica.
  • 3 mesi. A questo punto dovrebbe conoscere la sintassi come il palmo della sua mano e dovrebbe essere in grado di risolvere facilmente problemi semplici. È molto più indipendente, non ancora del tutto presente.
  • 6 mesi. Dovrebbero sapere, oltre a tutto il resto: Best Practices, Common Algorithms, ecc. Dovrebbe essere in grado di realizzare un progetto da solo, forse con un po 'di aiuto da SO.

Oltre a quanto sopra, il modo più semplice per rendere qualcuno indipendente è quello di dare loro un argomento difficile da imparare e non dare loro nulla per aiutarli tranne Internet. Sarà costretto ad imparare da solo e conoscerà le sue cose.

Dopo che sa cosa vuoi che sappia, liberalo. Consenti a lui di andarsene e di imparare cosa vuole imparare (puoi sempre dire che vuoi che continui a lavorare in quella lingua).

Spero che questo possa essere d'aiuto! A proposito, lascia che legga questo: insegnati a programmare in dieci anni .


0

Fai una distinzione tra livelli di apprendimento più bassi e più alti. Se si tratta di conoscenza, comprensione o applicazione, non ho problemi a dare loro la risposta, con una breve spiegazione di come potranno cercarla la prossima volta. Questa non è scuola, non è un imbroglio e non si affideranno a te in quel modo per sempre. Basta non pianificare di fare altro per la prima o la prima settimana, quindi non ti infastidirà quando non lo fai.

Dopo le prime due settimane, se vieni interrotto troppo spesso con questo tipo di domande, usa un timer pomodoro e non rispondere a nessuna domanda fino alla fine di un pomodoro. Google è facile per te ora perché sai cosa cercare. Spesso non lo fanno, quindi se devi dire loro a google qualcosa, di 'loro quali termini di ricerca usare per ottenere i migliori risultati.

Se un problema è legato all'analisi, alla sintesi o alla valutazione, passo più tempo sull'argomento. È qui che fornisci il tuo ragionamento dietro le tue decisioni e li aiuti a raggiungere le stesse conclusioni. Questo si presenta più spesso in termini di design e stile. Non limitarti a dire loro di usare un determinato design, mostra loro perché è superiore alla loro prima scelta. Lascia che commettano errori e permetta loro di correggere i propri errori.


0

Non ho visto nessuno qui menzionare il mio eroe personale, Randy Pausch .

Penso che possa essere utile per chiunque stia effettivamente facendo, insegnando o tutorando la programmazione (o anche per chiunque voglia vivere una vita significativa). Tu e / oi tuoi colleghi potreste trovare che guardare queste lezioni valga la pena del mio tempo


-4

Come sviluppatore junior, penso che se dovessi imbattermi in un problema sarebbe meglio mettere la risposta immediatamente e passare il tempo a capire come è stata risolta.

Sono pagato. il mio datore di lavoro non si aspetta di pagarmi per l'apprendimento. mi aspetto di fare un lavoro alla fine della giornata. Inutile perdere tempo in un ambiente di lavoro, provare a scoprire una soluzione. Questo è qualcosa che prenderò in tempo, si spera rapidamente se sono bravo in quello che faccio.


9
In un modo o nell'altro il tuo datore di lavoro ti sta pagando per imparare
smp7d

13
Hai meno valore per il tuo datore di lavoro se non diventi mai e poi mai meglio di come eri il giorno in cui sei stato assunto come programmatore junior.

10
Max, ti sbagli, a meno che tu non abbia un datore di lavoro schifoso. I buoni datori di lavoro ti pagheranno per imparare, sul lavoro o anche inviandoti a conferenze o lezioni. Se continui con il tuo attuale atteggiamento, non aspettarti mai di uscire da uno sviluppatore junior. Titoli come junior / senior non vengono distribuiti in base esclusivamente alla quantità di tempo in cui hai fatto qualcosa; se hai fatto la stessa cosa per molto tempo ma non hai imparato saresti comunque considerato junior.
Andy,

5
@MaxSan Il problema è che gli sviluppatori senior raramente vorranno nutrirti con il cucchiaio. Non abbiamo assunto stagisti a tempo pieno perché non sono stati in grado di escogitare la soluzione da soli. Ci aspettiamo che passi del tempo a cercare di capirlo, e solo quando hai trascorso un ragionevole lasso di tempo a venire a chiedere aiuto. Come senior ti aspetterai di risolvere i problemi che nessun altro può fare, e non sarai in grado di farlo se ti alleni con un cucchiaio.
Andy,

6
Se vuoi una soluzione "su un piatto" non crescerai mai dal tuo status di sviluppatore junior. Imparare da soluzioni complete fornite potrebbe essere possibile ma certamente non è efficace . Ecco come funziona il cervello: se sperimentate la strada per la soluzione, non solo la soluzione stessa, imparerete molto di più che studiare la soluzione che qualcuno vi ha presentato.
perdian
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.