- Yakın zamanda tanınmış bir teknoloji CEO’su ve mühendisle yaptığım bir sohbette ilginç bir yazılım geliştirme metodolojisi duydum. Bu metodoloji, diğer sezgisel yöntemler ve genellemeler üzerine düşünmeme yol açtı.
Onun yöntemi
- Güne bir özellik üzerinde çalışmaya başlayarak başla. Günün sonuna kadar bitiremezsen hepsini sil ve ertesi gün yeniden başla. Yazdığın birim testlerini koruyabilirsin.
- Birkaç gün sonra hâlâ özelliği hayata geçiremediysen, bunu mümkün kılacak temel yapı, altyapı veya refactoring ihtiyacını düşün ve bunları uyguladıktan sonra özelliğe geri dön.
- Bu yöntem, 90’ların sonu ve 2000’lerin başındaki extreme programming hareketine benziyor.
Yöntem üzerine düşünceler
"Her şeyi iki kez yaz"
- Junior mühendislere verilen bir tavsiye: problemi çöz, kodu branch’e kaydet, sonra tekrar yaz.
- Bu yöntemi, dizüstü bilgisayarım bozulduktan sonra tesadüfen keşfettim. Yeniden yazım, ilk uygulamanın yalnızca %25’i kadar zaman aldı ve sonuç çok daha iyiydi.
- Zamanın 1,25 katına karşılık 2 kat daha yüksek kaliteli kod elde edebilirsin. Uzun vadeli bakım gerektiren projelerde faydalıdır.
- "Her gün yeniden başla" yöntemi bunun daha da uç bir hâli. Her yeniden yazışta daha pürüzsüz bir çözüm buluyorsun.
"Nicelik kendi başına bir niteliktir"
- Stalin’in sözü yazılım mühendisleri için de geçerli. Junior mühendisler için ilk 100 bin satır kod yazmak zorunlu.
- "Her gün yeniden başla" yöntemi, bu 100 bin satırı daha hızlı yazmana yardımcı olur.
- Aynı problemi tekrar tekrar çözmek, kalıpları hafızaya yerleştirmek açısından faydalıdır.
- 5 bin satır mükemmel kodla tüm ana kalıpları görebilirsin. Kalan 95 bin satır ise tekrar yoluyla nöronları yeniden düzenler.
"Silah başına dayanmışken" sezgisel yöntemiyle karşılaştırma
- Bir problem için çözüm öneren kişiye, "Bunu 24 saat içinde bitirmen gerekse ne yapardın?" diye sor.
- Bu yöntem, çerçeveleme ve anchoring bias etkisini kırar. Çoğu zaman birkaç dakika içinde, bir günde bitebilecek bir plan ortaya çıkarabilir.
- Pratikte bu plan gerçekten bir günde tamamlanabilir olmayabilir, ama yeni çözüm çoğu zaman birkaç gün içinde bitirilebilir.
- Bu düşünce deneyinin amacı gerçek çözümü üretmek değil, çözüm için alt sınırı belirlemektir.
Yol bulma
- Asıl mesele, problem uzayında bir yol bulmaktır. Her yol bir çözümdür ve mühendisin görevi en iyi yolu bulmaktır.
- Bu sezgisel yöntemlerle çeşitli yol bulma algoritmaları arasındaki benzerlikler üzerine düşünmeye değer.
- Mühendislik sezgileri için de aynı şey geçerlidir: daha iyi bir mühendis olmak, problem uzayında daha iyi yollar bulmak demektir.
GN⁺ özeti
- Bu yazı, yazılım geliştirmede verimli metodolojileri ve sezgisel yöntemleri inceliyor.
- "Her gün yeniden başla" yöntemi ile "Her şeyi iki kez yaz" yaklaşımı, kod kalitesini artırmada faydalıdır.
- Tekrarlayan problem çözümü, örüntü tanıma ve nöronların yeniden düzenlenmesine yardımcı olur.
- "Silah başına dayanmışken" sezgisel yöntemi, çözümün alt sınırını belirlemede faydalıdır.
- Problem uzayında en iyi yolu bulmak, mühendisin temel rolüdür.
5 yorum
Delirdiniz mi? Buna ancak vakitten geçilmeyen insanlar kalkışabilir; bunun gerçek hayatta yapılabilir bir şey olduğunu mu sanıyorsunuz?
Kore'deki SI ortamında bu imkansızdır herhalde.. haha, olsa olsa kişisel projelerde
Bu yaklaşım gerçekten hiç aklıma gelmemişti.
Bir kez denemem gerekecek haha
Yeniden yazma konusunda size fazlasıyla katılıyorum.
Bir keresinde üzerinde çalıştığım kodu yanlışlıkla silmiştim ve yeniden yazarken
ortada tasarımı değiştirmeye üşendiğim için görmezden geldiğim şeyleri de hesaba katarak geliştirdim,
sonuç ise aksine daha iyi oldu.
Hacker News görüşleri
Yeni bir özelliği iki kez yazmak iyi bir strateji olabilir. Ancak iş geliştirme uzmanlarına veya proje yöneticilerine gereksiz bir gecikme gibi görünebilir
"24 saat içinde bitirmek zorunda olsaydın?" sorusu, proje yöneticisinin sorabileceği bir soru değildir
İyi kod, doğru soyutlamaları seçerek yazılır
Yetkin ekip arkadaşları varsa, kısa sürede neler yapılabileceğini gösterebilirler
Yazılımı iki kez yazmanın iyi olduğu fikrine katılıyorum
Bir özelliği birkaç gün sonra bile uygulayamıyorsan, önce gerekli altyapıyı ya da refactor işlemlerini yapman gerekir
"24 saat içinde" ile "her şeyi iki kez yaz" birbiriyle bağlantılıdır
Bu gönderi, en iyi "programlama tavsiyeleri"nden biri
Bazen bir sorunu çözmek için arka planda bir thread çalıştırmak gerekir
Şu yaklaşım faydalıdır