Boş bir App.js ve yanıp sönen bir imleç, saf bir potansiyel hissi verir. Kısıtlama yok. Ne yapmanız gerektiğini söyleyen bir boilerplate yok. Ancak o boş tuval bir özgürlük değildir. Evreni sıfırdan inşa etmeniz için açık bir davettir.

Boş Ekran Vergisi

Bir projeye sadece bir derleyici ve bir metin düzenleyici ile başlayın. İlk gün elektrikli hissettirir. Klasör yapısını, isimlendirme kuralını, devre dışı bırakılmış butonların tam gri tonunu siz seçersiniz. Üçüncü güne gelindiğinde heyecan söner ve asıl iş ortaya çıkar.

Basit bir liste oluşturmanın sadece bir map fonksiyonu yazmaktan ibaret olmadığını fark edersiniz. Veriler yüklenirken iskeletin nasıl görüneceğine, nabız gibi mi atacağına yoksa kayarak mı geleceğine ve görünmeden önce ne kadar gecikme olması gerektiğine karar vermeniz gerekir. Kaydırma sırasında ağ bağlantısı koptuğunda ne olacağına karar vermelisiniz. Otomatik olarak tekrar mı denemeli? Bir buton mu göstermeli? Önceki sayfayı sonsuza dek önbelleğe mi almalı? İki aktif filtrenin nasıl etkileşime gireceğine ve bu kombinasyon sıfır sonuç döndürdüğünde boş durumun nasıl görüneceğine karar vermelisiniz. Hatta sıfır sonucun kullanıcınız için ne anlama geldiğine bile karar vermelisiniz.

Bunlar formalizasyon problemleridir. Belirsiz bir kavramı belirli, tutarlı ve tekrarlanabilir bir davranışa dönüştürmek, yazılım inşasının en zor kısmıdır. Kodun kendisi sadece bu seçimlerin bir dökümüdür. Bu yüzden sonsuz özelleştirme bir özellik değil, bir vergidir; ve fatura, beklediğinizden daha hızlı katlanan mikro kararlar şeklinde gelir.

Sürekli Talep Eden Kararlar

Her mimari seçimi bir abonelik gibi değerlendirin. İlk taksiti, ilk uygulamayı yazdığınızda ödersiniz. Sonra ay ay ödemeye devam edersiniz.

Yeni bir mühendis işe başladığında ve neden standart bir kütüphane yerine özel bir yeniden deneme mantığı seçtiğinizi sorduğunda ve kimse bunu hatırlamadığında ödersiniz. Bir tarayıcı güncellemesi, o eşiğin neden kırk sekiz piksele ayarlandığı belgelenmediği için el yapımı bir dokunmatik işleyiciyi bozduğunda ödersiniz. Bir güvenlik yaması, refresh token rotasyonunu hiç öngörmediği için size özel kimlik doğrulama akışınızı refactor etmeyi zorunlu kıldığında ödersiniz.

Eğer sizin yerinize hiçbir şey karar verilmemişse, her şey sizin probleminiz haline gelir. Tam olarak istediğinizi inşa etme özgürlüğü, ona sonsuza dek sahip olma yükünden ayrılamaz. Sektörün yıllar önce çözdüğü desenler (patterns) konusunda tek otorite siz olursunuz. Evi inşa etmek yerine, temelleri korumakla saatlerinizi harcarsınız.

Yapay Zeka: Hız Tuzağı

Yapay zeka bu dinamiği daha az değil, daha tehlikeli hale getiriyor. Büyük bir dil modeli, otuz saniye içinde eksiksiz bir kimlik doğrulama modülü oluşturabilir. Kahveniz soğumadan bir state katmanı oluşturabilir, bir önbelleğe alma stratejisi taslaklayabilir ve navigasyon korumaları (navigation guards) yazabilir.

Ancak işin püf noktası şurada: Yapay zeka, karar verme maliyetini düşürürken, bu kararlara sahip olma maliyetini her zamanki kadar yüksek tutar. Artık tarihteki herhangi bir ekipten daha hızlı teknik borç (technical debt) yaratabilirsiniz. Kod, demo gününde çalışır. Smoke testten geçer. Altı ay sonra, OAuth sağlayıcısı bir endpoint'i kullanımdan kaldırdığında veya önbellek geçersiz kılma mantığı yavaş bir bağlantı sırasında yarış durumuna (race condition) girdiğinde, bir makineye devrettiğiniz kararları debug etmek zorunda kalırsınız.

Gizli fatura her zaman ödenmek zorundadır. Mühendislik saatleri, bağlam değiştirme (context switching) ve hızın yavaş yavaş aşınmasıyla ödenir.

Sıkıcı Olanı On Yıllık Paketlerle Satın Alın

İyi bir framework veya platform bir kafes değildir. Bir zaman satın alımıdır.

Neredeyse her modern uygulamada standart olan şeyleri düşünün. Kullanıcıların giriş yapması gerekir. Verilerin ekranlar arasında hareket etmesi gerekir. Arayüzün durma noktasına gelmemesi için uzak bilgilerin yerel olarak saklanması gerekir. İnsanların bağlamı kaybetmeden gezinmesi gerekir. Bunlar farklılaştırıcı değil, temel gereksinimlerdir.

Olgun bir framework bu desenleri bir kez resmileştirir. Şunlara karar verir:

  • Yükleme durumlarının nasıl görüneceğine ve ne zaman görüneceğine
  • Ağ hatalarının arayüze nasıl yansıyacağına
  • İki navigasyon parametresi veya aktif filtre çakıştığında nasıl çözüleceğine
  • Temel hizmet güncellendiğinde yerel verilere ne olacağına

Sonra davranışı belgeler, uç durumları (edge cases) test eder ve siz uyurken yamalar yayınlar. Enerjinizi gerçekten size ait olan o son yüzde birlik kısma harcayabilirsiniz. Özgün etkileşim. Belirli iş...