Yüzde 70 sorunu, üretimin bir yazılım derlemesini çalışır hâle genellikle büyük oranda taşıdığı, ardından otomasyona dirençli bir kalanla karşılaşıp durduğu gözlemidir. O son kısım, aynı kodun daha küçük ölçekli bir tekrarı değildir. Nitelik olarak farklı bir iştir: entegrasyon, uç durumlar, üretime dayanıklılık ve kimsenin tanımlamaya zahmet etmediği kısım. İlk bölüm akıcılığı ödüllendirir; son bölümse yargıyı ödüllendirir ve yargı, şablon kodunun sıkıştırılabildiği biçimde sıkıştırılamaz.
- İlk %70 iyi tanımlanmış yüzeydir; kalan ise tanımlanmamış iç kısmıdır.
- Bir demo mutlu yolu kanıtlar ve kırılma koşullarını gizler.
- Uç durumlar, hiçbir istemin hepsini sayamayacağı hızda çoğalır.
- Entegrasyon sürtünmesi sistemler arasındadır; tek bir üreticinin göremediği yerde yaşar.
- Üretime dayanıklılık çoğunlukla kimsenin tanımlamadığı girdilere karşı savunmadır.
- Rakam zaman içinde kayar, ama zorluğun şekli değişmez.
Son Aşama Neden İlkinden Niteliksel Olarak Farklıdır?
Bir derlemenin ilk bölümü, binlerce kez tanımlanmış yapı açısından yoğundur. Formlar, listeler, yönlendirme, durum, öngörülebilir alanlara sahip bir veri şekli. Üretim burada güçlüdür çünkü kalıplar yaygındır ve niyet okunabilir. Sıralanabilir bir tabloya veya doğrulanmış bir forma ne yapılacağı konusunda çok az belirsizlik vardır.
Kalan ise tür bakımından farklıdır. Bu, spesifikasyonun tükendiği ve gerçekliğin devam ettiği bir sistemin özelliğidir. İki yazma işlemi yarıştığında ne olur? Yukarı akış yüzeyi asla dönmeyeceğini vaat ettiği bir şekli döndürdüğünde ne olur? Bir kullanıcı makul ama beklenmeyen bir şey yaptığında ne olur? Bu sorular, ilk soruların daha zor versiyonları değildir. Bunlar ayrı bir kategoridir; daha çok kod yazmaktan ziyade, ilk talebin adını bile koymadığı koşullar altında kodun ne anlama gelmesi gerektiğine karar vermekle tanımlanırlar.
Ayrıca bir geri bildirim etkisi vardır. Erken kod hızlı üretilir, dolayısıyla hızlı birikim yapar ve hacim kendisi geçilecek bir arazi hâline gelir. Dakikalar içinde ortaya çıkan bir derlemenin yine de saatlerce anlaşılması gerekir. Okuyucu, yazmadığı, tercih etmediği konvansiyonlarla bir yapıya gelir ve anlama maliyeti tam da zor kararların başladığı anda düşer.
İşte bu yüzden yüzde kaygan görünebilir. Modeller geliştikçe sınır genelde hareket eder, ama aynı fay hattı boyunca hareket eder: açıkça belirtilen yerin bittiği yerde otomasyon yavaşlar. Açıklama inceldiği yerde eğim keskinleşir. İlerleme gibi görünen bir rakam aslında, hep en az okunabilir olan parçalara doğru kaymaya devam eden bir sınırın işaretidir.
Bir Demo'nun Gizlediğini Üretim Nelerle Ortaya Koyar?
Demo kontrollü bir gösteridir. Seçilmiş girdilerle, affedici bir ağda, başarılı olmasını isteyen bir izleyici önünde tek bir yolu çalıştırır. Üretim bunun tersidir: her yol birden, düşmanca girdiler, kısmi hatalar ve kimsenin yönlendirmediği bir ortam. Bu iki durum arasındaki mesafe demo-üretim boşluğudur ve son mil çabasının çoğunun aslında harcandığı yerdir.
Boşluk geniştir çünkü çalışan bir demo ile çalışan bir sistem görünüm açısından benzer ama yapı açısından farklıdır. Demo görüneni optimize eder. Sistem görünmeyeni hesaba katmak zorundadır — tekrar denemeler, idempotentlik, haftada bir tetiklenen zaman aşımı, trafik devam ederken çalışması gereken migrasyon. Bunların hiçbiri ekran kaydında görünmez.
Ortaya çıkan bir takas hızı dayanıklılıkla değiştirir. Üretim hızlı, makul bir eser sunar. O eseri gerçek yükle temas ettiğinde ayakta kalacak bir şeye dönüştürmek daha yavaştır ve nadiren daha fazla kod üretmek gibi görünür. Genellikle mevcut olanı okumak, izlemek ve sınırlamak gibi işlerdir.
Boşluğun algısal bir maliyeti de vardır. İkna edici bir demo işi neredeyse bitmiş gibi gösterir; bu da kalan çabayı regresyon gibi hissettirir, oysa kalan iş işin büyük kısmıdır. Paydaşlar çalıştığını gördüler. O an ile güvenilir bir sistem arasındaki mesafe gerçektir, ama sadece gösteriyi izleyen herkes için görünmez olduğu sürece savunulması zordur.
En Zor Kalan Neden Kimsenin Tanımlamadığı Kısımda Yaşar?
Tanımlanmamış kalan, hiçbir isteğe yazılmamış bir sistem davranışını ifade eder. Bu, son mil maliyetinin en büyük kaynağıdır çünkü onu içermeyen bir istemden üretilemez. Bir üretici sorulan soruyu yanıtlar. Zor olan, kimsenin sormayı düşünmediği sorudur.
Spesifikasyon, önem kazandığı yerde pahalıdır. Ödeme yüzeyi onay verdiğinde ama sipariş yazımı başarısız olduğunda ödeme akışı ne yapar, kimse bunu önceden düşünmek istemez. Bu yüzden beyan edilen niyet ile gereken davranış arasındaki boşluk işi yaratır. Birinin yokluğu fark etmesi, adlandırması ve üzerine karar vermesi gerekir.
Farketmek burada az takdir edilen bir beceridir. Bir üretici kendisine verilenleri doldurur ve verilmemiş olan üzerinde susar; bu sessizlik sadece mutlu yolu kontrol eden herkes için tamamlama gibi okunur. Kalan başlangıçtan itibaren görünmezdir. Onu yüzeye çıkarmak, stres gelmeden önce sistemi stres altında hayal etmeyi gerektirir; bu da herhangi bir aracın sunduğu bir özellikten çok bir dikkat alışkanlığıdır.
- Mutlu yol
- Her bağımlılığın beklendiği gibi davrandığı, demo'nun göstermek üzere kurulduğu tek olay dizisi.
- Tanımlanmamış kalan
- Hiçbir istek, istem veya ticket'ın tanımlamadığı şekilde sistemin sergilemesi gereken davranış.
- Entegrasyon dikişi
- İki sistem arasındaki sınır; her birinin diğerine dair varsayımları söylenmemiş olan yer.
- Üretime dayanıklılık
- Üretilmiş yapıyı, gösterilmediği girdilere, hatalara ve yüke karşı hayatta tutma işi.
Üretim İlk %70'i Karşıladığında İnsan Çabası Nereye Taşınır?
Çaba yok olmaz; göç eder. Bir derlemenin erken, iyi tanımlanmış kısmı dakikalar içinde üretildiğinde, eskiden onu yazmaya giden insan saatleri üretimin zayıf olduğu faaliyetlere kayar. Alışılagelmiş olmayan kodu okumak birincil beceri hâline gelir. Bir sistemin kenarlarında ne yapması gerektiğine karar vermek kıt katkı olur.
Bu yer değiştirme bir günün şeklini değiştirir. İlk taslakları üretmeye daha az zaman, onları sorgulamaya daha fazla zaman ayrılır. Dar boğaz üretimden doğrulamaya kayar — makul görünen şeyin, üreticinin hiç test etmediği koşullar altında da doğru olduğunun teyidi. Yargı, hata modları hakkında zevk, ve haftada bir çıkan hatayı kovalamak için sabır ağırlık taşıyan işler olur.
Ayrıca hangi deneyimin değerli olduğu değişir. Birçok sistemin nasıl çöktüğünü görmüş olmanın değeri bir üreticiye geçmez; o değer, tanımadığın bir kodda tanıdık bir koku sezen kişide kalır. Bu tanıma, birinin üretilmiş akışı bir bakışta test çalışmadan önce nerede çökeceğini sezmesine izin verir. Erken kod emtialaşır; onun kenarlarına dair içgüdü emtialaşmaz.
| Özellik | İlk %70 (üretilmiş) | Son %30 (insan) |
|---|---|---|
| Spesifikasyon | Açık, yaygın, okunabilir | İmpliсit, nadir, tartışmalı |
| Ağırlıklı etkinlik | Yapı üretme | Davranışı sınırlama |
| Hata görünürlüğü | Demoda belirgin | Üretime kadar gizli |
| Maliyet sürücüsü | Kod hacmi | Yargının derinliği |
| Sıkıştırılabilirlik | Yüksek | Düşük |
Ekipler Son Aşamayı Bilinçli Olarak Nasıl Aşar?
Son mili geçmek genelde bir reçeteden çok bir sıraya uyar; çünkü hatalar öngörülebilir bir sırayla gelir. Disiplin, üretilmiş eseri bir hipotez olarak ele almak ve kalan işi yanlışlanma olarak görmekten ibarettir.
- Dikişleri haritalayın: derlemenin kontrol etmediği her sisteme dokunduğu sınırı listeleyin.
- Demonun hiç kullanmadığı girdileri sayın; özellikle bozuk, boş ve yinelenmiş olanları.
- Her hata yolunu bir karara izleyin: tekrar dene, reddet, düşür ya da yüzeye çıkar.
- Kimsenin belirtmediğini yazıya dökerek örtük olanı açık hale getirin, sonra onun hakkında karar verin.
- Bittik demeden önce gerçek eşzamanlılık ve gerçek hacimle sonucu zorlayın.
Her adım bilinmeyeni belirlenmiş bir niyete dönüştürür. Üretilmiş %70 size sorgulayacağınız bir gövde verir; bu prosedür sorgulamadır. Tasarım gereği üretimden daha yavaştır, çünkü ürünü yüzey değil kesinliktir.
Sıra tek tek adımlardan daha önemlidir. Önce dikişleri haritalamak, sınırları savunmasız bırakarak iç kısmı sertleştirme gibi yaygın hatayı önler. Hataları izlemeden önce girdileri saymak ise işi gerçekte gelen şeylere dayandırır, hayal edilene değil. Bu sıra, dikkati kodun okumaya en uygun olduğu yer yerine bir sonraki hatanın en olası kaynağına harcamanın yoludur.
Üretim İyileştikçe Son Mil Sınırı Ne Oluyor?
Sınır çözülmüyor; yukarı taşınıyor. Üretim iyi tanımlanmış orta kısmın daha fazlasını ele aldıkça, insan sınırı her zaman en az tanımlanabilir olan parçalara — yargı kararlarına, hata semantiğine, bir şey kırıldığında sistemin kullanıcılarına ne borçlu olduğuna dair kararlara — doğru kayar. Yüzde artabilir. Kalanın karakteri daha zorlaşır, kolaylaşmaz; çünkü geriye kalan, tanımlamaya direnmiş her şeyin artık kalıntısıdır.
O zaman daha kıt olan şey kodlama yeteneği değil, bir sistemin kenarlarını akılda tutma ve onlar hakkında iyi karar verme kapasitesidir. Alan, hızlı okuyabilen, üretken kuşku duyabilen ve bitirebilenleri ödüllendirmeye meyillidir. Üretilmiş bir derlemenin son aşaması, her sistemin bir kısmı tanımlanmamaya devam ettiği sürece insan kalacaktır — yani uzun bir süre boyunca.
Takımların nasıl organize olduğuna dair daha sessiz bir çıkarım da vardır. Üretilmiş orta kısım büyümeye devam ederse, bitmiş bir sistemi makul olandan ayıran iş daha az ve yoğun saatlere yoğunlaşır. Bu derinliği verimliliğin önüne geçirir ve bir şey arızalandığında sistemin ne yapması gerektiğini söyleme yeteneğini daha değerli kılar. Sınır hareket eder; kapanmaz.
S.S.S.
