Come sviluppatori siamo, la mentalità dovrebbe rimanere sempre aperta e scettica allo stesso tempo.
Aperti, perché non sappiamo quando uno sviluppatore potrebbe sorprenderci e scettici sulle nostre idee perché spesso dimentichiamo che nell'ingegneria del software non esiste un solo modo corretto per implementare una soluzione. La logica alla base delle nostre soluzioni potrebbe avere senso per noi e non averne nessuno per gli altri. Dietro un odore di codice potrebbe esserci una grande idea. Forse lo sviluppatore non ha trovato il modo di esprimerlo correttamente.
A causa nostra (umani) siamo terribili nel comunicare, non fare false assunzioni, sii disposto a chiedere al proprietario del codice il codice che stai esaminando. Se non riesce a codificare l'idea sotto gli standard dell'azienda, come sviluppatore principale sarà disposto a guidare anche lui / lei.
Qui l'approccio soggettivo. L'approccio oggettivo, IMO, è molto ben spiegato in questa domanda .
Oltre al link sopra, l'insieme di obiettivi da raggiungere (manutenibilità, leggibilità, portabilità, elevata coesione, accoppiamento lento, ecc.) Non sono necessariamente i Dieci Comandamenti. Tu (il team) dovresti essere in grado di adattare questi obiettivi a un punto in cui l'equilibrio tra qualità e produttività rende il lavoro confortevole e "abitabile per gli sviluppatori".
Suggerirei l'uso di strumenti di analisi del codice statico per misurare il progresso della qualità in base a questi obiettivi. Strumenti come SonarQube ci forniscono cancelli di qualità e profili di qualità che possono essere personalizzati in base alle nostre priorità. Ci fornisce anche un tracker di problemi, in cui gli sviluppatori possono essere presi di mira con problemi relativi a odore di codice, bug, pratiche dubbie, ecc.
Questo tipo di strumenti può essere un buon punto di partenza, ma come ho detto mantieniti scettico. Potresti trovare alcune regole in Sonar per te insignificanti, quindi sentiti libero di ignorarle o rimuoverle dal tuo profilo di qualità.