Erken optimizasyon sorunu yazılım geliştirmede öyle yaygın bir yanılgıdır ki Donald Knuth bunu onlarca yıl önce "tüm kötülüklerin kökü" olarak tanımlamıştır. Söz tarihsel bir referans olarak kalmamış; kanıtlanabilir, tekrar eden bir örüntüyü anlatmaya devam etmektedir. İddia şudur: Bir sistem gerçekte yavaş olduğunu kanıtlamadan önce hız için yazılan kod, doğruluk için yazılan koda göre daha çok zarar verir. Kanıt birinci: Profil çalıştırmadan yapılan optimizasyon çoğunlukla yanlış yeri hedefler. Bir yazılımcı döngünün içindeki nesne oluşturma maliyetini azaltmak için kodunu karmaşıklaştırır; oysa asıl darboğaz ağ çağrısında yatmaktadır. Saatler harcandı, kod okunaklılığı düştü, performans kazancı sıfır. Bu senaryonun gerçek verilere dayandığı onlarca profil raporu mevcuttur: uygulamaların yüzde sekseni, yüzde yirmisinin harcadığı süreyi tüketir. Hangi yüzde yirmi olduğunu yalnızca ölçüm söyler, tahmin değil. Kanıt ikinci: Erken optimizasyon sorunu yalnızca zaman kaybıyla sınırlı değildir. Okunması güç, değiştirilmesi maliyetli kod üretir. Bellek tahsisini azaltmak için yazılan bitwise işlemleri, bir sonraki geliştirici için yorumsuz bırakıldığında anlamsız karakter dizisine dönüşür. Bakım maliyeti artar. Kanıt üçüncü: Sistem henüz üretimde çalışmadan yapılan performans kararları, gerçek yük altındaki davranışı yansıtmaz. Önbellek stratejisi, veritabanı indeksleri ve ağ gecikmesi laboratuvar koşullarında test edilemez; gerçek trafik altında görünür. Sonuç nettir: Önce çalışır hale getirin, sonra doğru hale getirin, ancak yavaş olduğunu kanıtladıktan sonra hızlı hale getirin. Bu sıra tersine çevrildiğinde erken optimizasyon sorunu kaçınılmaz olarak ortaya çıkar.