Fai domande basate sull'esperienza
Il mio strumento più potente è quello di porre domande basate sull'esperienza. Quando il programmatore junior arriva con un progetto e vedi un problema con come funzionerà nella realtà, fai la domanda "come funzionerà, dato l'X elemento della realtà?" Non dire - "questo non funzionerà a causa dell'elemento X della realtà".
Spesso questo ha concluso la discussione senza conflitti mentre l'ingegnere junior torna al tavolo da disegno.
Sii aperto alla risposta
Una volta che hai fatto la domanda, sii aperto a sentire una risposta. Gli sviluppatori junior mi hanno insegnato molto sulle nuove tecnologie di cui non sapevo abbastanza. Non credo sulla parola - faccio anche le mie ricerche - ma a volte vedono cose che non conosco. Sii aperto alla risposta al tuo problema del mondo reale - potrebbero semplicemente sorprenderti.
Entra nella grande immagine del progetto
Una delle mie più grandi battaglie è di solito gli sviluppatori che vogliono fare il proprio modello per la progettazione che è al di fuori del modello utilizzato nel resto della base di codice. Potrebbe, in effetti, andar bene solo in termini di quell'area isolata, ma è incredibilmente diversa rispetto al resto della base di codice, e la mia esperienza mi dice che sarà un incubo di manutenzione.
A questo punto, spingo lo sviluppatore a vedere l'immagine grande con qualche altra domanda:
- Stai dicendo che tutto il codice dovrebbe essere refactored in questo modo?
- Se sì, allora quanto costerebbe? Continueremo a rispettare il programma?
- Se no, allora perché quest'area è così straordinariamente unica che dovrebbe funzionare diversamente dalla soluzione tipica?
- Quali sono i vantaggi di questo rispetto al modo esistente di implementare le cose?
- Quale sarà l'impatto quando qualcuno che non è te lo deve mantenere?
Questo non vuol dire che ogni nuova idea di implementazione sia cattiva ... ma c'è un valore nel non modificare una quantità nota e gli sviluppatori devono pensarci prima di cambiare i modelli midstream.
Qual è la cosa peggiore che può succedere?
Non c'è insegnante come esperienza. Se l'ingegnere junior sta sviluppando qualcosa di centrale e critico nei confronti del problema, in nessun modo lascerò volare un progetto radicale senza un sacco di controllo del team. Ma se l'ingegnere lavora in un prototipo, uno strumento o qualche altra area laterale, può essere una buona opportunità per provare qualcosa che suona strano, ma potrebbe funzionare - dopo tutto, devi provare cose nuove a volte ...