Come sviluppatori siamo, la mentalità dovrebbe rimanere sempre aperta e scettica allo stesso tempo.
Aperto, perché non sappiamo quando uno sviluppatore può sorprenderci e scettico sulle nostre idee perché spesso dimentichiamo che nella tecnologia del software non esiste un unico modo corretto per implementare una soluzione. La logica alla base delle nostre soluzioni potrebbe avere senso per noi e non renderla 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 di noi (umani) siamo terribili nel comunicare, non fare false assunzioni, essere disposti a chiedere al proprietario del codice il codice che si sta esaminando. Se non è riuscito a codificare l'idea sotto gli standard dell'azienda, come lo sviluppatore principale è disposto a guidarlo anche lui.
Ecco l'approccio soggettivo. L'approccio obiettivo, IMO, è spiegato molto bene in questa domanda .
Oltre al link sopra, l'insieme degli obiettivi da raggiungere (manutenibilità, leggibilità, portabilità, alta coesione, accoppiamento libero, 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 constrongvole 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à. Fornisce inoltre un tracker dei problemi, in cui gli sviluppatori possono essere indirizzati a problemi relativi a odore di codice, bug, pratiche dubbiose, 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 essere prive di significato per te, quindi sentiti libero di ignorarle o rimuoverle dal tuo profilo di qualità.