Yılın başlarında, 8090'daki ekibimiz büyük bir kuruluşun faturalama motorunu parçalarına ayırdı. Bu motor, bazı mühendislerimiz doğmadan önce birikmeye başlamış 18 milyon satırlık COBOL ve Assembly kodundan oluşuyordu. Artık kimse tam olarak anlamıyordu ama Yazılım Fabrikamızı (Software Factory) kullanarak, 40 gün içinde bunu 100.000'den fazla sade İngilizce kuralına dönüştürdük. Bu işi bitirirken, "yazılım fabrikası" ifadesinin neden birdenbire herkes tarafından kullanılmaya başlandığını anladım.
Bu kavram, kurumların istediği ancak alamadığı belirli bir endüstriyel güvenilirlik düzeyini ima ettiği için sahipleniliyor. Yazılım fabrikalarının arkasında elli yıllık bir geçmiş var ve bunun en belirleyici özelliği, kurumların her zamankinden daha fazla ihtiyaç duyduğu bir şey: çıktıyı garanti eden bir üretim sistemi. Bu durum, bireyleri güçlendiren ancak tüm sistemleri daha kaotik hale getiren geniş bir araç yığınına duyulan artan hayal kırıklığıyla tam bir tezat oluşturuyor.
Terim, çoğu kişinin sandığından daha eski
Hitachi, 1969 yılında "Software Works"ü (Yazılım İşleri) gerçek bir fabrika olarak açtı: yazılımın istatistiksel kalite kontrolü altında üretildiği, kusur oranlarının her bin satır kod için ölçüldüğü, standartlaştırılmış süreçlerin olduğu ve çıktı kalitesinden sorumlu bir yönetim ekibinin bulunduğu bir bina. Toshiba, NEC ve Fujitsu da aynı yolu izledi ve 1970'ler ile 1980'ler boyunca bu Japon yazılım fabrikaları, şimdiye kadar yazılmış en güvenilir kodlardan bazılarını üretti. Ürettikleri sistemler, bankacılık, demiryolu ve enerji altyapısını onlarca yıl boyunca çalıştırdı.
2004 yılında iki Microsoft mimarı, yazılımın arabaların üretildiği gibi üretilmesi gerektiğini savunan "Software Factories" (Yazılım Fabrikaları) adlı bir kitap yayınladı: kanıtlanmış bileşenlerden, tekrarlanabilir üretim hatlarında ve değişimin sonradan kahramanca çabalarla düzeltilmek yerine baştan tasarımla kontrol edildiği bir sistem. ABD Hava Kuvvetleri bugün yazılım fabrikaları işletiyor. Kessel Run, Savunma Bakanlığı için görev yazılımları geliştiriyor ve işletiyor ve bu yazılım bozulduğunda sorumluluğu üstleniyor.
Altmış yıl boyunca, bu AI dalgasına kadar tutarlı olan tek bir şey vardı. Bir fabrika, ne kadar iyi olursa olsun, asla bir araç ya da bir üretkenlik hilesi değildi. Bir fabrika, girdileri alan, bitmiş ürünler üreten ve bu ürünlerin kalitesinin arkasında duran bir üretim sistemiydi. Başka bir deyişle, Ford size hiçbir zaman bir anahtar, birkaç parça satıp "iyi şanslar" dilemedi. Ford size bir araba sattı ve araba bozulursa Ford onu geri çağırdı, çünkü onu üreten kendi fabrikasıydı.
İşte standart budur ve modern yazılım fabrikalarının da buna uyması gerektiğini savunuyorum.
Beş test
Bir yazılım fabrikası beş testi geçmelidir. Bunlardan herhangi birinde başarısız olursanız, elinizde başka bir şey var demektir. Bu başka şey büyük olasılıkla bir geliştirici aracıdır; faydalı olabilir, ancak farklı bir yükümlülüğü olan farklı bir üründür.
Birinci test: bir fabrika iş hedefinden başlar. Bir fabrikanın girdisi, işletmenin ihtiyaç duyduğu şeydir ve işletmenin diliyle ifade edilir: gereksinimler, kurallar, mevzuat kısıtlamaları, istenen sonuçlar. Bunun yerine girdi, bir mühendis tarafından başka bir mühendis için yazılmış bir Jira ticket'ı ise, mevcut bir sürece eklenmiş bir güç aletine bakıyorsunuz demektir. Bir fabrikanın bütün amacı, müşterinin ürünü tanımlaması ve fabrikanın üretimi çözmesidir.
İkinci test: bir fabrika sürekli değişim altında bütünlüğü korur. Bu en zor testtir ve AI araç pazarındaki neredeyse hiç kimsenin bahsetmediği testtir, çünkü ürünleri bu durumu daha da kötüleştirir.
Kurumsal yazılımda darboğaz hiçbir zaman yeni kod yazmak olmadı. Darboğaz, gerçek bir sistemin her hafta düzinelerce insan tarafından değiştirilmesidir. Her değişiklik, sistemin dağılması için bir fırsattır. Gereksinimler dokümantasyondan sapar. Dokümantasyon koddan sapar. Kod testlerden sapar. Bu sapmanın yirmi yıl boyunca birikmesine izin verin ve başta tanımladığım faturalama motorunu elde edersiniz: kimsenin tam olarak anlamadığı 18 milyon satır, yılda %5 ila %8 artan satıcılarla yapılan bir bakım sözleşmesi ve artık kendi yazılımını korkusuzca değiştiremeyen bir kuruluş.
Gerçek şu ki, kod üretimi sapmayı hızlandırır. Ajanlarınız, senkronize tutulmayan şartnamelere karşı on kat daha fazla kod üretiyorsa, benzeri görülmemiş bir hızda sapmaya neden oluyorsunuz demektir. 18 milyon satırlık sorunun elle inşa edilmesi kırk yıl sürdü, ancak yönetişimsiz ajan filoları bunu birkaç yıl içinde inşa edecek.
İşleyen bir yazılım fabrikası, hedefi, şartnameyi, kodu, testleri ve üretim davranışını tek bir yönetilen nesne olarak senkronize tutar. Gereksinimi değiştirin, kod değişir. Koda acil düzeltme yapın, gereksinim güncellenir. Bir satıcıdan size bu döngüyü kapalı olarak, gerçek bir sistem üzerinde canlı olarak göstermesini isteyin. Gösteremezlerse, kod üretimi satıyorlardır. Ve faydalı olsa da, bu farklı bir şeydir.
Üçüncü test: bir fabrika belirli bir kişiden bağımsız olarak çalışır. Bir araç, ancak onu kullanan kişi kadar iyidir. Aynı kodlama ajanını iki mühendise verin, prompt'ları kimin yazdığına, farkları kimin incelediğine ve hataları kimin yakaladığına bağlı olarak radikal biçimde farklı çıktılar alırsınız. Bu varyasyon bir araçta kabul edilebilir. Bir üretim sisteminde ise diskalifiye edicidir. Bir fabrika, vardiyada kim olursa olsun, öngörülebilir hız ve kalitede üretim yapmalıdır; Hitachi'nin istatistiksel kontrollerinin tam olarak garanti etmek için inşa edildiği şey budur: kalitenin operatörün değil, hattın bir özelliği olması.
Bir fabrikanın bunu başarma yolu, bilginin bireyler yerine sistemde birikmesidir. Bir kişi katıldığında, fabrika ona daha önce öğrendiği her şeyi sunar. Bir kişi ayrıldığında, hiçbir şey kapıdan dışarı çıkmaz. Çoğu kurumsal yazılım bu testte feci şekilde başarısız olur. Bir faturalama motorunun anlaşılmaz hale gelmesinin nedeni kötü kod değildir. Bunun nedeni, kodun anlaşılmasının insanlarda yaşaması ve yıllar içinde insanların değişmesidir. Bilgileri bir sistem tarafından hiçbir zaman yakalanmazsa, sistem yavaş yavaş bir kara kutuya dönüşecektir.
Açık olmak gerekirse, bu insanların önemsiz olduğu veya bir fabrikanın hesap verebilirlik talep etmediği anlamına gelmez. Bir fabrikada her zaman çıktıdan sorumlu olan belirli bir kişi vardır. Sadece hiçbir zaman onlardan birinin yeri doldurulamaz olmasına bağlı değildir. Çalışması için bir kahramana ihtiyaç duyan bir sistemin ne hesap verebilirliği vardır ne de bir fabrikası. Bir kahramanı vardır ve kahramanlar eninde sonunda yeni maceralar bulur.
Dördüncü test: her çıktı birimi izlenebilirdir. Gerçek bir fabrikada her parçanın bir "parti numarası" vardır. Bir şey bozulduğunda, onu üretim hattında geriye doğru partiye, makineye ve vardiyaya kadar takip edersiniz. Düzenlemeye tabi sektörler yazılımdan tam olarak bunu ister ve bu yüzden AI kodlama araçlarını benimsemekte en yavaş olanlar onlardır. "Model yazdı" ifadesi bir denetçinin kabul edeceği bir cevap değildir. Bir yazılım fabrikası, denetim izini üretimin kendisinin bir yan ürünü olarak üretir: bu kural vardır çünkü bu gereksinim vardır, bu kişi tarafından onaylanmıştır, bu değişiklikle uygulanmıştır, bu testle doğrulanmıştır, bu zamanda dağıtılmıştır. Kaynağın üretim hattına yerleştirilmiş olması gerekir, bu da sonradan yazılan dokümantasyonun geçerli olmadığı anlamına gelir.
Beşinci test: birisi bitmiş üründen sorumludur. Bu, bir yazılım fabrikasını bir geliştirici aracından ayıran testtir, çünkü çoğu araç satıcısının karşılamaya isteksiz olduğu testtir.
Bir fabrika, arkasında durduğu bir ürünü gönderir. Faturalama motoru bir talebi yanlış hesapladığında, ticaret sistemi yanlış bir sayı ürettiğinde, üretim doğrulaması hatalı bir parçayı onayladığında, belirli bir kişi bunun hesabını verir, düzeltir ve maliyeti üstlenir. Şimdiye kadar birçok AI araç sözleşmesi okudum ve fikri mülkiyet bölümleri sayfalarca sürüyor, ancak hesap verebilirlik bölümü genellikle tek bir cümleden oluşuyor ve bu cümle, çıktının olduğu gibi sağlandığını ve doğrulamanın sizin sorununuz olduğunu söylüyor. Bu, bir fabrika için tamamen diskalifiye edicidir.
Halka açık bir sağlık sigortacısı olan müşterilerimizden biri, ödenecek talep kurallarını belirleyici bir ön filtreye dönüştürdü ve yakalama başına ödeme yapan bir satıcıya yönlendirilen talepleri %80'den fazla azaltarak dört yıl içinde 20 milyon doların üzerinde tasarruf sağladı. Bunun gibi rakamlar, ancak işi yapan tarafın sonuçtan sorumlu olmasıyla ortaya çıkar.
Fabrika olmayan şeyler
Testleri uygulayın ve kendisine fabrika diyenlerin çoğunun aslında başka bir şey olduğunu göreceksiniz.
Kodlama ajanları, ne kadar iyi olursa olsun, araçlardır. Mühendislik görevlerini girdi olarak alır, çıktı olarak kod üretir ve tüm doğrulama ve hesap verebilirliği müşterinin mühendislerine devreder. Bunlardan oluşan bir filoya fabrika demek bunu değiştirmez.
Ajan orkestrasyon panoları, denetim araçlarıdır. Ajanların çalışmasını izlemeyi kolaylaştırırlar.
Kıyaslamalar (Benchmark'lar), araçlar için ölçüm araçlarıdır. Yüksek bir puan, size bir aracın kıyaslanan görevlerde iyi olduğunu söyler. Sisteminizin, insanlar ve ajanlardan oluşan karma ekipler tarafından yapılan iki yıllık sürekli değişiklikten sonra tutarlı kalıp kalmadığını size söyleyemez.
Tanım neden şu anda önemli?
Yazılım üretmenin maliyeti çöküyor. Ve üretim maliyetleri çöktüğünde, değer, çıktıyı garanti edebilen kişiye kayacaktır. Bu, daha önceki her sanayileşme sürecinde oldu ve şimdi AI'da da olacak.
"Fabrika" kelimesine sarılan girişimler bunu içgüdüsel olarak anlıyor. Ancak birçoğu, bu güvenilirliği yaratan yükümlülüğü kabul etmeden endüstriyel üretimin itibarına uzanıyor.
Bu yüzden demoları ve kıyaslamaları görmezden gelin ve her yazılım fabrikasına tek bir soru sorun: sistem üretimde bozulduğunda, telefonu kim açıyor?
Bir yazılım fabrikası söz konusu olduğunda, cevap "biz açarız" olmalıdır.





