Questa domanda è stata ispirata da questo . Mentre quell'altra domanda era ritenuta localizzata, credo che il problema di fondo sia qualcosa di estremamente comune nel nostro settore. So che ci sono alcuni sviluppatori, che leggeranno questo e penseranno che sto inventando questa roba e poi potrebbero rispondere a come tutti si preoccupano del loro lavoro e vogliono imparare, ma solo guardando altri post di Programmers SE (case in point ), So che non è universalmente vero.
Quindi diciamo che hai qualcuno nel tuo team (o forse la maggioranza) chi è la procedura operativa standard è quella di copiare / incollare e chi crede che tutto possa essere risolto se solo aggiungi abbastanza chiamate e variabili di funzione. Questa persona non ha mai sentito parlare di TDD, DRY o SOLID e al di fuori delle 40 ore di lavoro quando sono impegnati a lavorare, non ha mai letto una sola metodologia / pratica / libro di progettazione.
In passato io (e altri) ho chiesto, come insegnare OOD . Ma ora penso che non sia la domanda giusta. La vera domanda è: come ti avvicini a una persona / squadra e li incuriositi dal modo migliore di fare le cose? Come li ispirate a imparare? Senza di esso, sembra che tutto l'insegnamento, gli incontri, le conferenze, le discussioni siano inutili se sono perfettamente felici di tornare alla loro scrivania e fare ciò che hanno sempre fatto.
Lavoro con un gruppo di persone del genere. In realtà sono individui abbastanza brillanti, ma odio quando sento "Ho finito di scrivere codice, ho solo bisogno di refactoring e diviso in più classi per rendere DXM felice". Non fanno refactoring per un codice più pulito, leggibile e manutenibile, ma solo perché altrimenti verranno sgridati. So che sono capaci di imparare, sembra solo che ci sia una generale mancanza di motivazione.
Quando consegno lavoro, in genere ha molti meno bug e il lavoro che ho posseduto non è mai diventato una mostruosità di 5000 righe di una classe. Gli altri farebbero commenti del tipo: "il tuo codice è molto più pulito e leggibile delle nostre cose", quindi vedono la differenza. Ma allo stesso tempo, credo che credano di essere pagati per 40 ore indipendentemente da quello che fanno, quindi in realtà non importa se trascorrono 3 giorni interi in QA alla ricerca di un bug che non dovrebbe essere stato introdotto in il primo posto. O che richiedono una settimana per modificare una classe perché ci sono così tante dipendenze che finiscono per toccare. Anche se "forse quella classe avrebbe dovuto essere scritta in modo diverso" non sembra mai apparire.
Qualche cosa può essere fatto in queste situazioni? Qualcuno ha avuto successo? O è meglio isolare tale mentalità in parti non critiche del progetto e minimizzare il danno?
NOTA: quando dico "mancanza di motivazione". Non penso che sia mancanza di motivazione a lavorare o fare un buon lavoro perché hanno semplicemente smesso di preoccuparsi. La maggior parte del nostro team è in realtà il contrario. Hanno sicuramente a cuore il prodotto. Abbiamo ragazzi che lavoreranno di notte e nei fine settimana. La parte che sto cercando di superare è con le abitudini e le abilità migliorate, in realtà non dovrebbero lavorare tanto. Immagino che l'argomento "40 ore" abbia reso questo post un po 'troppo negativo.