Quando ero un lead degli sviluppatori l'ultima volta (pieno di juniores, la maggior parte di loro erano studenti dell'anno scorso su CS MSc), ho avuto un terzo approccio:
- Dai la storia allo sviluppatore junior
- Digli di tornare con un piano su come sarebbe risolto
- Dopo aver esaminato il piano, ma solo dopo, inizia a modificare i file.
Non dico che abbia funzionato abbastanza bene.
Per compiti semplici, come, aggiungere una nuova colonna a una tabella di report, hanno fatto un gran casino, modificando tutti i file, poi hanno detto "è già fatto", quindi lo abbiamo revisionato, è risultato che non è così avrebbe dovuto essere eseguito, dovevano ripristinare quasi tutto ( 1 ) e quindi ricominciare.
Sulle grandi attività (5+ classi coinvolte), era dall'altra parte: erano semplicemente in silenzio per un giorno o due, quindi dovevamo esaminarlo insieme, e in pratica ho disegnato un disegno che dovevano strumento.
Sebbene fossi lì e per ogni singola decisione l'ho spiegato a tutti, e avevano già le letture richieste, ed era più simile a una dimostrazione ( 2 ), alla fine del giorno, dovevano ancora implementare il mio design principalmente, e non ne erano così contenti come quando sono lasciati liberi.
So che è difficile differenziare la pianificazione dal fare, ma suppongo che si chiami ingegneria del software perché ci sono ancora poche persone che sanno cosa fanno, al contrario degli artigiani. Il mio compito come allenatore non era quello di creare un altro programmatore medio, ma qualcuno che eccelle nella sua professione. Fortunatamente, oggi, tutti questi sono team leader (o erano, ma si sono uniti a una società diversa, più "agile" senza alcuna leadership)
Quindi, tutto sommato, non so cosa sia meglio, so solo che la qualità del codice è più importante della praticità di un minore: sono lì per imparare, per non lasciare che alcun tipo di codice venga imputato a prod. ..
(1) ( "Perché? Funziona, no?" "Sì, ma stai interrogando il database dal livello vista o tale" )
(2) ( "vedi? abbiamo bisogno di questo, e di solito usiamo questo modello per questo come hai visto in questo altro modulo simile, qui, la nostra linea guida di codifica (che era lunga 2 pagine) dice, fai questo, quindi, facciamolo, e quindi, disegniamo un diagramma di sequenza su come funzionerebbe ... ok, ora disegnamo un diagramma di classe su di esso ")