Ho incontrato molte persone che sono dogmaticamente contrarie a qualsiasi cosa possa essere considerata "ottimizzazione" nel senso generale della parola inglese, e molto spesso citano alla lettera la citazione (parziale) "l'ottimizzazione prematura è la radice di tutti i mali" come giustificazione per la loro posizione, sottintendendo che interpretano qualsiasi cosa di cui sto parlando sia "ottimizzazione prematura". Tuttavia, queste visioni a volte sono così ridicolmente radicate che respingono praticamente qualsiasi tipo di deviazione algoritmica o della struttura dei dati dalla più pura implementazione "ingenua" ... o almeno qualsiasi deviazione dal modo in cui hanno fatto le cose prima.Come si può avvicinare le persone in questo modo in modo da farle "riaprire le orecchie" dopo aver smesso di sentire "prestazioni" o "ottimizzazione"? Come posso discutere di un argomento di progettazione / implementazione che ha un impatto sulle prestazioni senza che le persone pensino all'istante: "Questo ragazzo vuole passare due settimane su dieci righe di codice?"
Ora, la posizione secondo cui "tutta l'ottimizzazione è prematura e quindi malvagia" è stata già discussa qui e in altri angoli del Web , ed è già stato discusso come riconoscere quando l'ottimizzazione è prematura e quindi malvagia , ma purtroppo ci sono ancora persone nel mondo reale che non sono altrettanto aperte alle sfide per la loro fiducia nell'antimottizzazione.
Tentativi precedenti
Alcune volte, ho provato a fornire la citazione completa di Donald Knuth per spiegare che "l'ottimizzazione prematura è cattiva" ↛ "tutta l'ottimizzazione è cattiva":
Dobbiamo dimenticare le piccole efficienze, diciamo circa il 97% delle volte: l'ottimizzazione prematura è la radice di tutti i mali. Tuttavia non dovremmo rinunciare alle nostre opportunità in quel 3% critico.
Tuttavia, quando si fornisce l'intero preventivo, queste persone a volte diventano più convinte che quello che sto facendo è Premature Optimization ™ e scavano e si rifiutano di ascoltare. È quasi come se la parola "ottimizzazione" li spaventasse: in un paio di occasioni, sono stato in grado di proporre cambiamenti di codice effettivi per migliorare le prestazioni senza che venissero posti il veto semplicemente evitando l'uso della parola "optimiz (e | ation)" ( e anche "performance" - anche questa parola fa paura) e usa invece espressioni come "architettura alternativa" o "implementazione migliorata". Per questo motivo, sembra proprio che questo sia davvero dogmatismo e non loro che valutano in realtà ciò che dico in modo critico e poi lo respingono come non necessario e / o troppo costoso.