Ho incontrato molte persone che sono dogmaticamente contro tutto ciò che può essere considerato "ottimizzazione" nel senso generale della lingua inglese della parola, e molto spesso citano alla lettera la citazione (parziale) "l'ottimizzazione prematura è la radice di tutto il male "come giustificazione per la loro posizione, sottintendendo che interpretano qualunque cosa di cui sto parlando sia" ottimizzazione prematura ". Tuttavia, questi punti di vista sono a volte così ridicolmente trincerati da eliminare quasi ogni tipo di deviazioni algoritmiche o di struttura dei dati dalla più pura implementazione "ingenua" ... o almeno da qualsiasi deviazione dal modo in cui sono " Ho già fatto cose prima. Come si può avvicinare le persone in questo modo in modo da far loro "aprire le orecchie" di nuovo dopo aver interrotto l'ascolto delle "prestazioni" o "ottimizzazione"? Come discuto un argomento di design / implementazione che ha un impatto sulle prestazioni senza che le persone pensino immediatamente: "Questo tizio vuole passare due settimane su dieci righe di codice?"
Ora, la posizione di "se l'ottimizzazione è prematura e quindi malvagia" o meno ha già trattata qui così come negli altri angoli del Web , e è già stato discusso come riconoscere quando l'ottimizzazione è prematura e quindi cattiva , ma purtroppo ci sono ancora persone nel reale mondo che non è così aperto alle sfide per la loro fede nell'anti-ottimizzazione.
Tentativi precedenti
Alcune volte, ho provato a fornire la citazione completa di Donald Knuth per spiegare che "l'ottimizzazione prematura è male "↛" l'ottimizzazione è pessima ":
We should forget about small efficiencies, say about 97% of the time: premature optimization is the root of all evil. Yet we should not pass up our opportunities in that critical 3%.
Tuttavia, quando si fornisce l'intera citazione, a volte queste persone diventano più convinte che quello che sto facendo è Premature Optimization ™ e scavare e rifiutare di ascoltare. È quasi come se la parola "ottimizzazione" li spaventi: in un paio di occasioni, sono stato in grado di proporre modifiche al codice effettive per migliorare le prestazioni senza che venisse posto il veto semplicemente evitando l'uso della parola "optimiz (e | ation)" ( e "performance" pure - anche quella parola è spaventosa) e invece usa espressioni come "architettura alternativa" o "implementazione migliorata". Per questo motivo, sembra davvero che questo sia veramente dogmatismo e non li valutano di fatto ciò che dico in modo critico e poi lo liquidano come non necessario e / o troppo costoso.