2010-01-29 10 views
11

Abbiamo uno stagista che inizia la prossima settimana. Ha una laurea in Informatica ma nessuna esperienza di sviluppo in .NET o SQL Server. Vorremmo portarlo al punto in cui è almeno semi-produttivo in C# e SQL Server. Quali suggerimenti potrebbe avere qualcuno di voi, che ne è stato informato, sul modo migliore per iniziare a formarlo in C# e SQL Server? Voglio rendere questa una buona esperienza per lui e per noi.Allenamento interno: miglior approccio?

+4

Wiki di comunità? –

risposta

10

Alcune delle migliori esperienze che ho avuto con questo (da entrambe le prospettive) è un approccio duplice.

Formazione sul prodotto. Mostra al nuovo sviluppatore qual è il prodotto su cui lavorerà e cosa fa dal punto di vista dell'utente finale. Aiuta a costruire il contesto per il codice che è sotto il cofano. Questa è una cosa che solitamente viene trascurata molto; tuttavia, aiuta immensamente poiché aiuta anche i nuovi sviluppatori a essere più fiduciosi nel testare il codice su cui sta lavorando invece di inciampare nel codice.

Secondo: associazione programmazione/ombreggiatura/mentoring. Avere lo sviluppatore di lavorare con una persona più veterana in una situazione di programmazione coppia con un leggero aspetto di mentoring. Ciò consentirà di valutare il vero skillset dello sviluppatore e fornire tempestivamente azioni correttive alle abitudini del team. Fornisce anche un modo per imparare e non preoccuparsi di interrompere i veterani con domande e cosa no.

Una volta fatto, inizia a dare alla nuova persona compiti più piccoli o bug più facili e costruisci da lì.

+0

Sicuramente una buona idea per fare queste cose, perché rende lo stagista si sente coinvolto con il resto della squadra. Ma funzionerà solo quando avrà una conoscenza di base di C# e SQL, che non sembra avere in base alla domanda. Altrimenti non comprenderà completamente il codice che gli viene mostrato durante le recensioni di accoppiamento/codice. Quindi, a mio parere, prima fai partire subito un progetto per animali domestici e poi usa il tuo approccio. –

+0

@tomlog È vero; tuttavia, è difficile assumere esattamente lo scopo della conoscenza che lo stagista ha nella domanda. La maggior parte dei gradi CS che ho visto hanno una programmazione di base e classi SQL, quindi presumo che abbia delle conoscenze di base in cui il mentoring/l'accoppiamento può aiutarlo non solo a ottenere conoscenze ma a modellarlo negli standard del team. Se il tirocinante ha 0 conoscenze di programmazione, allora starei seriamente mettendo in discussione il grado CS a quel punto. – JamesEggers

3

Parlare come qualcuno che è internato per due società diverse, uno dei modi migliori per farlo diventare veloce è dargli un piccolo progetto per animali da compagnia con un mentore per supervisionare i suoi progressi. Questo gli permetterà di iniziare a familiarizzare con le tecnologie con cui lavorerà, mentre il mentore può guidarlo in un modo che gli insegnerà le pratiche e le procedure della tua azienda.

Dopo aver acquisito sufficiente familiarità con C# e SQL Server, puoi iniziare a fargli fare un vero lavoro di sviluppo. Fallo partire da piccolo con una serie di correzioni di bug, quindi aumenta la difficoltà finché non puoi chiamarlo sviluppatore a tutti gli effetti. Con un po 'di fortuna, non lo chiamerai nemmeno uno stagista entro un mese o due.

1

Se si dispone di progetti di tipo "animale domestico" (progetti per i quali la propria azienda non può mai giustificare realmente il tempo trascorso, ma sarebbe utile e abbastanza semplice), li darei a loro.

Sarebbe un buon modo per iniziare a imparare il materiale, dal momento che è un lavoro reale (è sempre più difficile imparare qualcosa e ricordare il materiale, se si tratta solo di un programma di esempio e non di qualcosa effettivamente utile). Sarà un buon inizio per imparare come usare google per domande/tutorial e costruire una relazione con il tuo team ponendo domande. Da lì, dovrebbero avere uno sfondo abbastanza decente da iniziare a lavorare su applicazioni reali.

Se il progetto dell'animale domestico è abbastanza piccolo, è possibile che si desideri che rivedano l'applicazione verso la fine dello stage per riscrivere/migliorare l'applicazione. Saranno probabilmente sorpresi di ciò che hanno raccolto durante lo stage

1

Iniziare identificando alcune aree di complessità facile e media e identificare chiaramente quale sia l'obiettivo per ogni attività. Dare loro un senso del business/dominio in modo da capire come le cose vanno d'accordo. Una volta completata un'attività, chiedigli di esaminarla con uno sviluppatore a tempo pieno per assicurarti che soddisfi i requisiti e identificare le aree deboli in cui è possibile utilizzare le migliori pratiche (questo offre un'opportunità di tutoraggio/educazione).

Quello che non vuoi è mandarli via codifica un po 'di cose poi scoprire che il codice non è aggiornato. Per quanto riguarda il database, fai attenzione. Limitare le autorizzazioni (es. Woops, non intendevo per DELETE/DROP!) O, si spera, tu abbia un ambiente di sviluppo dedicato dove le cose che vanno male non sono devastanti da cui recuperare. Forse un progetto parallelo con un database di esempio da testare prima di incorporare il lavoro nell'ambiente reale.

0

Abbiamo uno stagista nel nostro team di circa 6 mesi. Lo assegno ed è una veramente buona esperienza. Quando l'ho intervistato Ciao risposta su tutte le domande CS, ma quando ha iniziato a lavorare con noi era orribile tutte le pratiche peggiori: commettere codice non funzionante, bloccare file svn, copypasting ogni dove e ogni cosa, namespace con nomi come Classi, lungo molto lunghi metodi con ENORME testa di freccia all'interno di antipattern. e infine miglior codice C# che abbia mai visto:

bool b = DoSomeThing(); 
switch(b) 
{ 
case true: 
    Do(); 
    break; 
case false: 
    DonotDo(); 
    break; 
default: //!!! 
} 

mio unico suggerimento è controllo lo.

+1

ahahahhahaahahhaahhaah –

+0

+1 per DonotDo! – abhilash

1

Alcuni buoni suggerimenti già, ma ho intenzione di aggiungere, farlo sedere su recensioni di codice per altri sviluppatori. Può imparare molto dall'ascolto di persone che passano attraverso il loro codice l'uno per l'altro.

Non dargli i diritti di fare nulla, tranne selezionare dal database di produzione. Fagli fare tutte le codifiche in sql e le modifiche agli script e chiedigli di aggiungerli al tuo controllo sorgente. Assicurati di leggere il codice tutto ciò che fa.

Probabilmente la cosa più importante è però dargli uno o più compiti reali da svolgere (assicurandosi di dedicare molto tempo al monitoraggio di ciò che sta facendo, per impedirgli di andare troppo avanti nel percorso sbagliato). Semplicemente non impari tanto quando sai che ti è stato assegnato un compito che è occupato e che nessuno intende realmente implementare.

Se si desidera passare a un ambiente in cui sono disponibili più test automatici ma non è stato possibile trovare il tempo per scrivere i test per il codice esistente, è possibile impostarlo per eseguire alcuni di questi. È qualcosa di utile da fare che è relativamente a basso rischio e quando il codice reale muore in uno dei suoi test e trova un bug di cui nessun altro è a conoscenza, ci sarà un vero senso di accompllishmnet. Ciò richiederà anche a lui di iniziare a capire i requisiti aziendali e come leggere il codice esistente e test e molti altri concetti.

Per uno stagista, imparare a usare il controllo del codice sorgente e fare test e lavorare con gli altri sono le abilità critiche da apprendere.

2
  • Piccoli progetti per aiutarlo a dormire.
  • Get lui l'altro codice sviluppatori nei progetti
  • Point lui wiki interno (se utilizzato)
  • on-line di formazione o di 2-5 giorni corso di formazione Microsoft (in attesa di bilancio)
  • Al di fuori della IT dipartimento, si assicura che sviluppi le sue conoscenze su come funziona/funzioni
  • Assicurati che abbia accesso ad alcuni buoni libri, così come alle risorse internet
  • Fallo sentire a suo agio nell'ambiente di lavoro in modo che, se ottiene bloccato chiederà aiuto a qualcuno. (IT Devs può essere molto sottotono chiedendo aiuto a volte)
+0

Buoni pensieri - grazie. –

+1

"letto in" mi scusi? –

1

Con gli sviluppatori junior, mi piace inserirli nel mix il prima possibile. Ho trasformato il mio sviluppatore junior nel master di configurazione e configurazione del server del nostro team. È il ragazzo ideale per far funzionare le nostre app.

Una delle cose migliori che abbiamo fatto con lui è stato portarlo a documentare esattamente come ottenere l'ambiente di sviluppo attivo e funzionante. Ha dovuto imparare tutto per documentarlo e ora usiamo il suo documento quando nuove persone entrano nel team.

Forse siamo solo fortunati, ma ho avuto un grande successo solo inserendolo nel codice. Non lo coccoliamo affatto. La pratica rende perfetti. Revisione del codice e frequente, ecc. :)

0

Fargli creare un diagramma di struttura statica UML per il codice di uno dei progetti esistenti di dimensioni moderate. Questo (1) lo costringerà ad avere una comprensione strutturale di alto livello di almeno un progetto e (2) fargli leggere il codice di qualcun altro, qualcosa che un tirocinante potrebbe non aver mai fatto prima.

+0

questa è la migliore risposta qui –

Problemi correlati