1 puan yazan GN⁺ 2025-01-12 | 1 yorum | WhatsApp'ta paylaş
  • Makefile etkisinin farkına varmak

    • Makefile etkisi, karmaşık veya aşina olunmayan araçları sıfırdan yazmak yerine, daha önce iyi çalışmış bir örneği kopyalayıp değiştirerek kullanma olgusunu ifade eder.
    • Bu etki, çeşitli mühendislerin Make gibi araçları kullanırken sıkça ortaya çıkar.
    • Geçmişte benzer bir iş yapılmışsa, mühendis önceki Makefile'ı kopyalayıp yeni duruma uyacak şekilde düzenler.
  • Sorunlar ve etkiler

    • Tasarım aşamasındaki sorunlar: Aracın fazla karmaşık olması veya en baştan kullanmanın zahmetli olması.
    • CI/CD yapılandırması: GitHub Actions veya GitLab CI/CD içinde YAML ayarlarının sıkça kopyalanıp değiştirilmesi.
    • Linter ve biçimlendirici yapılandırması: Temel kural setleri projeler arasında kopyalanır, sonra ihtiyaca göre sıkılaştırılır veya gevşetilir.
    • Build sistemleri: Sıradan olmayan her şeyin önceki build sistemine benzemeye başlaması.
  • Bu olgunun neden önemli olduğu

    • Tanılama ve hata ayıklama desteğinin yetersizliği: Araçların tekrar tekrar çalıştırılması gerekir ve az bilgi sağlar.
    • Öğrenmeyi engellemesi: Yalnızca bazı uzmanlar aracı gerçekten iyi bilir; diğerleri ise asgari bilgiyle kopyalayıp değiştirir.
    • Güvenlik sorunları: Güvenlik işleri derin bilgi gerektirir ve Makefile etkisinin görüldüğü sistemler, kod ile veri arasında karışıklığa yol açabilir.
  • Araç tasarlanırken dikkate alınması gerekenler

    • Aracın yapılandırılabilir olması gerekip gerekmediği.
    • Kendine ait bir sözdizimi gerekip gerekmediği.
    • Mevcut sözdizimlerinin veya deyimlerin yeniden kullanılıp kullanılamayacağı.
    • Kopyala-yapıştırın sık yaşanıp yaşanmadığı.
  • Makefile etkisine benzeyen olgular

    • Cargo culting veya sapmanın normalleşmesi ile benzerlik taşır; ancak Makefile etkisi, belirli bir tasarımın sonucu ile ilgilidir.
    • Makefile etkisi özünde verimsiz ya da kötü bir şey değildir. Araçlar ve sistemler tasarlanırken farkında olunması gereken bir durumdur.

1 yorum

 
GN⁺ 2025-01-12
Hacker News görüşleri
  • Karmaşık sistemler çoğu zaman basit sistemlerden evrilir. Baştan karmaşık tasarlanan sistemler genelde iyi çalışmaz; basit bir sistemle başlamak gerekir.

  • Make ve Makefile'lar, autoconf tarafından otomatik üretilmedikleri sürece oldukça basittir. autoconf ile üretildilerse dokunmamak, mümkünse de autoconf kullanmamak daha iyidir. Biraz kod yazıp ya da kopyalayıp projede kullanır, sonra ihtiyaç oldukça iyileştirirsiniz. Ardından başka projelerde de o kodu kopyalayıp düzenler, değişiklikleri asıl projeye geri yansıtırsınız. Zamanla bu, birden çok proje üzerinden bir kütüphaneye dönüştürülebilir ve açık kaynak olarak yayımlanabilir.

  • Geliştiricilerin yaklaşık %10'u bir şeye sıfırdan başlayabilme becerisine sahiptir. %40'ı işi kopyala-yapıştır kodla halleder, %50'si ise LeetCode bulmacaları dışında pek bir şey bilmez. Birçok Makefile, kopyala-yapıştır ile oluşmuştur.

  • Cargo Cult Development, teknolojinin temel prensiplerini anlamadan yalnızca görünen kısmını taklit eden geliştirme yaklaşımını ifade eder. Kopyala, yapıştır, dene, ayarla ve çalışmasını um yaklaşımıdır.

  • Makefile yanlış bir benzetme olabilir. Web'den kopyalanan birçok kodda kullanılmayan çok sayıda parça bulunur. Gereksiz kısımları silmek iyi bir alışkanlıktır.

  • Geliştiricilerin etkileşime girmesi gereken araçlar veya sistemler, günlük olarak öğrenmeye değecek kadar değerli görülmez. CI yapılandırması gibi şeyler "bir kez kur, sonra unut" olarak algılanır ve karmaşık kısımlar başka ekipler tarafından ele alınır. Geliştiricilerin kolayca yaklaşabilmesi için uygun araçlar ve belgeler sağlanmalıdır.

  • LaTeX gibi araçlarda, kullanım sıklığı düşük olduğu için işe çoğu zaman kopyala-yapıştır ile başlanır. Seyrek kullanılan araçları hatırlamak zordur.

  • Make iyi belgelenmiştir ve kullanıcı belgeleri okursa onu kolayca anlayabilir. Ancak birçok araç yetersiz belgelendiği için kullanıcıların aracı anlamasını zorlaştırır.

  • Karmaşık araçlara ihtiyaç vardır, ancak basit bir uygulamada Makefile etkisi görülüyorsa bu, aracın fazla karmaşık olduğu anlamına gelir. Küçük projeler için Makefile uygun olabilir.

  • "Copy-Pasta Driven Development", kod kopyala-yapıştır nedeniyle ortaya çıkan sorunlara dikkat çeker. Copilot gibi araçlar bu sorunları daha da kötüleştirebilir.