Optimize Etmek İstemeyen Bir Dünyada Kodu Optimize Etmek
Yayınlanan: 2019-11-22Erken optimizasyon, tüm kötülüklerin köküdür.
Geliştiriciler arasında yaygın bir sözdür. Mantıklı. Zamansız optimizasyon, işin baştan sona yeniden yapılması anlamına gelebilir ve zaman, geliştiricinin en sınırlı kaynağıdır. Bu, bir ürünün kullanıcıları için henüz mevcut olmayan senaryoları optimize etmek için bu değerli zamanı harcamak anlamına gelebilir. Belirsiz performans kazanımlarıyla anlaşılması daha zor olan kod yazmak anlamına gelebilir.
Yaklaşık bir yıl önce WordPress tema inceleme ekibine katılırken, bu tavsiye külçesine bir kez daha rastladım. Erken optimizasyon, tüm kötülüklerin köküdür. Yanıt, temalarının yüklenmesi için gereken komut dosyalarının sayısını ve ağırlığını azaltmak isteyen bir tema yazarına verildi. Bir yandan, tema yazarı işi bitirmek için bağımlılık olmaksızın 1.29 kb'lik bir komut dosyası yükleyebilir. Diğer seçenek, çekirdek WordPress'te bulunan jQuery bağımlı komut dosyasını toplam 105 kb için kullanmaktı çünkü "çoğu" WordPress sitesi zaten jQuery yüklüyor.
Benim için cevap basitti. Çekirdek komut dosyası zaten ön uca yüklenmemişse, daha küçük komut dosyasını kullanın. Erken optimizasyon açısından düşünmedim. Bunu eski, sıradan, günlük optimizasyon olarak düşündüm.
Geliştiriciler, erken optimizasyonu , akıllı tasarım kararlarını sürecin başında alma konseptiyle karıştırmamalıdır. Optimizasyona başlamak için geliştirmenin son aşamasına kadar, yani bir ürünü son kullanıcılara ulaştırmaya odaklanılan bir zamana kadar beklememelidirler. Bu, zayıf bir ürün tasarım sürecinin işaretidir.
Geçen yıl boyunca, bu konuşma benim için kaldı. Sadece WordPress geliştirici topluluğunda değil, genel olarak web geliştirmede de korkunç bir eğilimin daha fazla farkında olmama yardımcı oldu. Çoğu zaman, geliştiriciler normal kullanıcılardan çok uzaktır ve bu kullanıcıların bu optimizasyona güvendiği teknoloji sonradan düşünülmüş olmaktan biraz daha fazlasıdır. Bunun yerine, her zaman herhangi bir geliştiricinin zihninde ön planda olmalıdır.
Bu yanlış kullanılan alıntıya aşırı güven, sayfa ağırlığını kilobayt yerine megabayt olarak ölçme eğiliminin artmasına yardımcı oldu. Dosya sıkıştırma ve üretimde önbelleğe alma ile telafi edilirken geliştirme aşamasında herhangi bir optimizasyon yapılmaması için çok sık bir gerekçe olarak kullanılır.
Kaliteli kod yazmanın bir parçası, geliştirme sürecinin her aşamasında bu kodu optimize etmektir. Yazılım bir araya geldikçe gereksiz şeyleri kesmek için zor kararlar vermekle ilgilidir. Önbelleğe alma, diğer her şey temizlendikten sonra son çare olmalıdır.
Erken optimizasyon, net bir kazanım olmadığında optimize etmeye çalışmak veya yazılımın tasarımını çok az veya hiç fayda sağlayacak şekilde değiştiren mikro optimizasyonlar üzerinde çalışmakla ilgilidir. Bu, geliştirme sırasında bariz performans artışlarını gözden kaçırmak anlamına gelmez.
Herkes Gigabit İnternette Değil
Tanıdığım çoğu geliştirici, genellikle 1 Gbps indirme hızları ve sınırsız veri ile süper hızlı internet bağlantılarında. Bu durumda, dünyanın büyük bir bölümünün veri sınırlarıyla hala yavaş bağlantılarda olduğunu unutmak kolaydır.
Bazıları, milyonlarca insanın 2G cep telefonu teknolojisini kullandığı üçüncü dünya ülkeleriyle yavaş bağlantıları bile ilişkilendirebilir. Bununla birlikte, Amerika Birleşik Devletleri'nde ve diğer gelişmiş ülkelerde, şehirlerde ve banliyölerde yaygın olarak bulunan doğrudan kablo veya DSL hatlarına sahip olmayan geniş alanlar vardır.

Bu bağlantı kesilmesi, diğer geliştiriciler benimle sohbet başlattığında doğrudan belirgindir. Son birkaç yılda, görüntülü sohbet istemeleri giderek yaygınlaştı. Böyle bir şeyin mümkün olup olmadığı sorgulanmıyor bile (görüntülü sohbetler benim için en iyi ihtimalle güvenilmez). Herhangi bir zamanda görüntülü sohbet yeteneği kabul edilir.
Yaşadığım bölgede iki internet servis seçeneği var: uydu veya çevirmeli. Yerel telefon şirketi bile, onlarca yıllık telefon hatlarının altyapı maliyetleri nedeniyle bu alanda DSL sunmayı reddediyor. Tipik olarak veri limitleriyle gelen uydu internet erişiminin fahiş maliyetleri nedeniyle, çoğu çevirmeli ağda takılıp kalıyor. Cep telefonu şirketleri, hizmetin güvenilir olduğunu varsayarak oyunu bir dereceye kadar değiştiriyor, ancak bu rotaya gitmenin veri veya etkin nokta sınırlamalarını içerebilecek düşüşler var.
Teknolojik olarak bu kadar gelişmiş bir ülke için, halkının çoğu diğerlerinin on yıl önce olduğu yere zar zor yetişiyor.
Nerede yaşadığımı seçebilecek kadar şanslı olsam ve beni taşınmaktan alıkoyan hiçbir şey olmasa da, çoğunda bu seçenek yok. Ödeyebileceklerinin en iyisi ile sıkışıp kalıyorlar. Kırsal alanlarda bile internet günlük yaşamın kaçınılmaz bir parçası ve geliştiriciler bu insanların işini kolaylaştırmıyor.
Bu anekdot olsa da, ABD'nin ceplerinde kırsal yaşamın katı gerçeğidir.
Alabama'nın arka ormanlarında yaşamanın iyi tarafı, bir geliştirici olarak bakış açımı değiştirmiş olması. Bu, oluşturduğum her eklenti ve tema için her kod kararını sorgulamam gerektiği anlamına geliyordu. Veri sınırları ile çok fazla kaynak kullanmadığımdan emin olmam gerekiyordu.
Her şeyden çok, bir veri sınırına sahip olmak interneti kullanma şeklimi değiştirdi. Şimdi bir reklam engelleyici çalıştırıyorum. Otomatik yüklemeden videoları öldürmek için bir uzantım var. Kullanmam gereken ağır sitelerde JavaScript'i devre dışı bırakıyorum. Bazı siteler ilginç görünüyor, ancak kaynak domuzları oldukları için onlara asla geri dönmüyorum.
Her baytın önemli olduğu bir yerde yaşadığınızda, onları boşa harcamaktan kaçınma eğilimindesiniz.
Her zaman başarılı olmasa da, küçük kasaba yaşamına geçişimden bu yana, ışık hızında internet erişimine sahip olma ayrıcalığına sahip olmayan insanlara hizmet edecek şekilde uygulamalar oluşturmaya çalıştım.
Bunu belirtmek, geliştiricilerin optimizasyonun önemli olduğunun farkında olmasını sağlamakla ilgilidir. Geliştirme sürecinin her aşamasında önemlidir. Önemli çünkü yavaş bağlantılara ve veri sınırlarına sahip bu kişilerin aynı zamanda ürün satın alması, hizmetleri kullanması, içeriği okuması ve insanların web'de yaptığı diğer tüm şeyleri yapması gerekiyor.
Bu kaydırıcıyı, mobil cihazlar için kaydırma mekanizmasını veya başka bir kaygan gadget'ı eklemeyi düşünen bir geliştiriciyseniz, bu özelliğin yüklenmesini beklemesi gerekenleri düşünün. Bağımlılıklarının çok fazla ek kaynak yüklemediğini kontrol edin. Daha hafif bir uygulama bulup bulamayacağınızı görmek için biraz araştırma yapın. Ama önce kendinize bunun gerekli olup olmadığını sorun.
WordPress geliştiricilerinin oluşturduğu temalar ve eklentiler hiçbir zaman bir web sitesi için darboğaz olmamalıdır. Daha iyisini yapabiliriz.
