Burada İcat Edilmedi: Zaten Var Olan Şeyleri Neden Yeniden Yazıyorsun

Gerçekte nasıl görünür
İhtiyacın olan şeyi yapan bir aracın belgelerini açtın. Yirmi dakika içinde beğenmediğin bir şey bulmuştun — arayüzün biçimi, senin seçmeyeceğin bir bağımlılık, sende olmayan bir kullanımı varsayan bir soyutlama. Sekmeyi kapattın. Dört gün sonra hâlâ kendi sürümünü yazıyorsun.
Kod tabanında, bakımı iyi yapılan çözümleri olan en az üç problemin kendi uygulaman duruyor. Kimlik doğrulama. Bir iş kuyruğu. Bir tarih katmanı. Her birinin, mevcut seçeneğin sana neden uymadığına dair bir hikâyesi var; her hikâye doğru ve haftaları hiç toplamadın.
Biri ne üzerinde çalıştığını sorduğunda, son iki haftanın dürüst cevabı kimsenin görmeyeceği altyapı oldu. Bunu anlatırken biraz hızlanıyorsun.
Yığınının kategorisindeki her büyük aracın kusurunu tek tek sayabiliyorsun. O araçların önünü açacağı özelliği ise yayınlamadın.
Kullandığın bir cümle var ve titizlik gibi duruyor: düzgünce anlamak istiyorum. Bunu bir ödeme entegrasyonu, bir dağıtım hattı ve bir editör eklentisi için söyledin. Ardından bir kez bile "kullanalım" kararı gelmedi.
Ve listedeki en net sinyal olan his: bir kütüphane seçmek razı olmak gibi hissettiriyor. Kendin yazmak ise asıl işin başlaması gibi.
Bu kimlerin başına gelir
Bu, zevki gerçekten iyi olan mühendislerde yaygındır.
Yazılımın nasıl inşa edilmesi gerektiğine dair görüşlerin varsa, bunları işlerin kötü yapıldığını fark ederek geliştirdin — ve o fark etme keskinleştiğinde, açtığın her dış araç sana birkaç dakika içinde fark edecek bir şey sunar. Zevk gerçek ve bir varlık. Aynı zamanda şu demek: herhangi bir seçeneği reddetmek için gereken kanıt, istendiğinde, yarım saatin altında her zaman hazır.
İnşa etmeyi yayınlamaya tercih eden kurucularda yaygındır. Bunu kimse yüksek sesle söylemez, ciddiyetsiz durduğu için, ki değildir. İnşa etmek iyi olduğun ve standartları senin koyduğun kısımdır. Başkasının aracını benimsemek bu iyi kısmı atlar ve seni doğrudan daha az sevdiğin kısma taşır: entegre etmek, yapılandırmak ve ardından arkasına saklanacak hiçbir şey kalmadan müşteri tarafındaki işle yüzleşmek.
Bir bağımlılıktan zarar görmüş insanların başına gelir. Bir sağlayıcının kırıcı değişikliğini, bakımı bırakılmış bir kütüphaneyi ya da kod senin olmadığı için düzeltemediğin bir kesintiyi yaşadıysan, kontrol hakkında gerçek bir ders aldın. Ders doğru. Ama öğrenilmediği bir ölçekte uygulanıyor.
Ve en çok tek kişilik ya da çok küçük ekiplerde olur, çünkü harcanan haftası olan başka kimse yoktur. Otuz kişilik bir ekipte kuyruğu yeniden yazmak birinin sorguladığı görünür bir karardır. Yalnızken sadece salı günüdür.
Onu ne tetikler
Yeniden yazma başladığında ne yapmak üzere olduğuna bak.
En yaygın tetikleyici değerlendirmenin kendisidir. Bir araç seçmek için oturursun; bu gerçekten rahatsız edici bir iştir — başkasının kararlarını okumayı, senin seçmediğin kısıtları kabul etmeyi ve tam bilgi olmadan bağlanmayı gerektirir. Kendi sürümünü yazmak bu üç rahatsızlığı aynı anda ortadan kaldırır ve bunu daha az değil daha fazla titizlik gibi görünerek yapar.
Küçük bir kusur bunu düzenli olarak tetikler ve kusurun boyutu fark etmez. Araç ihtiyacının yüzde doksanını karşılıyordur, eksik yüzde on can sıkıcıdır. Başka neredeyse her kararda buna iyi bir takas derdin. Burada o yüzde on bütün konuşmaya dönüşür.
"Tam olarak anlama" isteği ayrı ve baştan çıkarıcı bir tetikleyicidir, çünkü öğrenmek tartışmasız iyidir. Ama ne zaman geldiğine dikkat et: vaktin olduğunda değil, alternatifin dışarıdan yargılanacak bir iş olduğunda. Bir kimlik doğrulama akışının içini anlamak perşembeyi geçirmenin savunulabilir bir yoludur. Onun beklettiği kayıt akışını yayınlamak aynı şekilde savunulabilir değildir — çünkü başarısız olabilir.
Ve en sert vurduğu an, kontrolün dışındaki bir şeyin ters gitmesinden hemen sonrasıdır. Bir sağlayıcıda kesinti oldu, bir paket kırıcı sürüm yayımladı, bir yükseltme bir gününe mal oldu. Her şeye sahip olma çekimi, sahip olmadığın bir şeyin seni yüzüstü bıraktığı haftada en güçlüdür.
Neden devam eder
Mekanizma şu: maliyet görünmez, ödül anındadır.
Çözülmüş bir problemi yeniden yazmak her gün ödeme yapar. Testler geçer, uygulama temizlenir, alanı dünden daha derin anlarsın ve hepsi senin işindir, senin standardınla. Bu gerçek bir ödüldür ve hak ettin. Kütüphaneyi benimsemek o gün hiçbir şey ödemez — belge okursun, bir yapılandırma dosyasıyla boğuşursun ve sabah anladığından daha az anladığın bir sistemle kalırsın.
Maliyet ise asla fatura kesmez. Üç hafta için kimse sana hesap göndermez. Bir kuyruk uygulamasının kalan sürenin beşte birini tükettiğini ilan ettiği bir an yoktur. Gider tamamen, o sırada üretken hissettiren zamandan oluşur; fark etmesi en zor ve geri alınamayan tek tür budur.
Gerekçe de gerçekten iyidir, bunu bu kadar kalıcı yapan şey de bu. Daha iyi anlayacaksın — doğru. Kontrol edeceksin — o da doğru. Senin durumuna tam oturacak — yine doğru. Her argüman tek tek incelemeye dayanır. Dayanmayan şey toplamdır: sınırlı ayı olan bir kurucunun, bu ayların anlamlı bir kısmını zaten hazır olan şeyleri inşa ederek geçirmesi — ve asıl farkını yaratan parçanın bu ilgiden hiç pay almaması.
Açıkça söylenmesi gereken bir şey daha var. Zanaat argümanının altında çoğu zaman daha sessiz bir kanıt meselesi durur: onu inşa edebilecek türden bir mühendis olmanın önemli olduğu ve hazır sürümü kullanmanın bunu kanıtsız bıraktığı. Ama kanıt hiçbir zaman kuyrukta değildi. Beceriyi nereye doğrulttuğunda.
Gerçekten ne işe yarar
Çekirdek olmayan her inşadan önce tek bir soruyu zorunlu kıl: bu, yalnızca benim yapabileceğim şey mi, yoksa çözülmüş bir problem mi? Editörü açtıktan sonra değil, açmadan önce, yüksek sesle sor. On saniye sürer ve kendini duyduğunda dürüst olmayan bir cevap vermek şaşırtıcı derecede zorlaşır.
Değerlendirmeye bir süre ve bir eşik koy, ikisini de başlamadan önce belirle. Yirmi dakika, eşik yüzde seksen — mevcut bir araç ihtiyacının yüzde seksenini karşılıyorsa onu benimser, kalanının etrafından dolaşırsın. Önceden yazılmış bir eşik, birazdan bulacağın kusurla temasa dayanır. O anda kararlaştırılan hiçbir zaman dayanmaz.
Maliyeti kararla aynı sayfaya yaz. İnşaya başlamadan önce hafta tahminini dürüstçe not et, yanına da o haftalarda olmayacak müşteri tarafındaki tek işi. Disiplin olsun diye değil — bilgi olsun diye. Bazen takas doğrudur ve hangi durumda olduğunu ancak iki yarı aynı anda görünürken bilirsin.
Kusuru ciddiye al, ama ayrı tut. Eksik yüzde on gerçekten önemliyse, cevap genelde aracın üstüne yazacağın ince bir katmandır, aracın yerine geçecek bir şey değil. Bu bir aylık değil bir günlük iştir ve senin yazmadığın kısma başkalarının yaptığı her iyileştirmeyi elinde tutar.
Ve zanaatı asıl sana ait olan parçaya doğrult. Gerçek bir becerin ve onu bir yere yöneltmek için sınırlı sayıda ayın var. Ürününde başka kimsenin inşa edemeyeceği tam olarak tek bir parça vardır, çünkü o parça bu problem hakkında senin anladığın ve onların anlamadığı şeyden gelir. Sıradan altyapıya harcanan her hafta, o parçanın alamadığı bir haftadır. Kütüphaneyi benimsemek neyi yapabileceğin konusunda bir taviz değildir. İşinin en çok nerede değerli olduğuna dair bir karardır.


