- Uzun süre kullanılabilecek programlar seçme ve güvenilir altyapı kurma yöntemlerinden söz ettiğini, ancak hâlâ bunu iyi yapamadığını kabul ediyor
- Son 2 yıldır kullandığı programın çekirdeğini bir ay boyunca yeniden yazdı ve bu süreçte hayatı boyunca programlama anlayışındaki değişimi geriye dönüp değerlendirdi
2015
- Soyutlamadan şüphe duyuyor, testlere ve sürüm kontrolüne önem veriyor
- Sorunların nedeninin soyutlamanın aşırı kullanımı ile test/sürüm kontrolü eksikliği olduğunu düşünüyor
- Testleri ve katmanları temel kısıtlar olarak alan Mu1 platformunu tasarlıyor
2017
- Mu1'i bugünkü Mu'ya dönüştürmek için yeniden çalışma başlatıyor
- Başlangıçta yeni test ve katman fikirlerinin tamamını kullandı, ancak zamanla bunları kullanmayı bıraktı
- Mu'da çok sayıda test var, ancak bunlar geleneksel türde; katman altyapısını ise taşımadı
2022
- Freewheeling Apps üzerinde çalışmaya başlıyor
- İlk başta testsiz başladı, sonra metin düzenleyicinin çekirdek bölümleri için kapsamlı testler yazdı
- Geri kalan kısımlar test etmesi zordu, ama iyi çalıştı
2024
- Bir ay önce tüm testleri sildi
- Diğer Freewheeling Apps ile birleştirme çakışmalarından kaygı duyduğu biçimde, metin düzenleyiciyi radikal şekilde yeniden çalıştı
- Artık sürüm kontrolü hakkında düşünmez oldu
- Testleri ve sürümleri bırakarak çok daha iyi bir program ortaya çıkardı
Sürdürülebilir programlamaya dair bugünkü bütünleşik görüş
- Çok sayıda insan için sürdürülebilir biçimde inşa etmek fazla zordur; bu yüzden buna hiç kalkışmayın
- Çoğu yazılım, kısa vadede çok sayıda insana hizmet etme teşvikinin etkisi altındadır. Daha az logolu, yapımı kolay, daha az bağımlılığı olan ve otomatik güncelleme yapmayan yazılımlara odaklanın
- Bağlamdaki küçük bir değişim, bir programın bağlama ne kadar iyi uyduğunu temelden değiştirebilir
- Yeni bir program, bir şekilde bilinmeyene doğru ilerler. Çoğu zaman hangi yönde olursa olsun tam olarak ne yaptığınızı bilmezsiniz
- Türler, soyutlamalar, testler, sürümler, durum makineleri, değişmezlik, biçimsel analiz vb.; aşina olunmayan bir arazide kullanılabilecek araçlardır
- Kaçınılmaz olarak bu araçların bir kısmını aşırı kullanırsınız. İdeal kullanım miktarı düşündüğümüzden çok daha küçüktür. Aşırı kullanım teknik borçtur
- Bağlama dair anlayışınız istikrara kavuştuğunda, programın önemli bir bölümünü atıp en baştan yapmak değerlidir
- Yeniden yazmaya başlamadan önce, programdan istediğiniz her şeyi ve programın ele alması gereken tüm senaryoları aynı anda zihninizde tutmalısınız
- Her şeyi bir kerede inşa edin
- Testler ve sürüm kontrolü, bu evrimin son aşamasına ulaşmayı engeller
- Testler kaygıları unutmanıza yol açar, sürüm kontrolü ise geçmişe takılı kalmanıza neden olur
GN⁺ görüşü
- Program fazla karmaşık hâle geldiğinde, 8. adımda her şeyi akılda tutmak imkânsız olabilir. Bu, çoğu yazılım için, özellikle de birden fazla kişinin yazdığı yazılımlar için geçerlidir
- Her yazılımın mutlaka 9. adıma ulaşması gerekmez. Birçok Freewheeling App, ilk tasarım tercihleri ne olursa olsun, yalnızca birkaç kişi kullansa bile hatasız bir duruma oturacak kadar yeterince basit ve yavaş evrilir
-
- adıma ulaşmada veri odaklı tasarımın açıkça yararlı olduğu görülüyor. Körü körüne uygulanabilecek bir araç değil;
immediate data structure choices ötesine geçip programın veriye erişme biçiminin büyük resmine bakan bir düşünme biçimidir
- Bu adımlar tamamen doğru olmayabilir. Daha az deneyim sahibi olduğu araçları olduğundan düşük değerlendiriyor olabilir
- Bu adımların ötesinde nasıl bir aşama olabileceğini merak ediyor
1 yorum
Hacker News görüşleri
Test yoksa, sorunu göremezsiniz ve sorun ortadan kalkmış gibi görünür
Testlerden ve sürümlerden vazgeçince daha iyi bir program elde edildi
Başta yazarın haksız olduğunu düşündüm ama iyi içgörüler var
Sürüm kontrolü ve otomatik testler gerçek problemleri çözüyor
Büyük programlar yazarken/refactor ederken yazıp atmak ve yeniden yazmak önemlidir
Bu makale kafa karıştırıcı
Küçük değişiklikler bir programın uygunluğunu büyük ölçüde değiştirebilir
Tek başına yazılım yapmakla ekip içinde yapmak tamamen farklı
2022'de Freewheeling Apps üzerinde çalışmaya başladı
Küçük değişikliklerin bir programın uygunluğunu büyük ölçüde değiştirebileceği fikrine katılmıyorum
Yazarı seviyorum ve Mu projesini seviyorum
Yazılım mühendisliğinin karmaşıklığı karşısında bunalmış