Arayüzler uzun süre niyetimizi makinenin uygulayabileceği prosedüre çevirdi. Yazılım bu prosedürün daha büyük kısmını kendi taşıyabildiğinde, sıradan işlerin uygulamanın içinde yapılması gerekmeyebilir.
Yazan Dogu Taskiran·
Son zamanlarda kendi işlerimin etrafındaki altyapının önemli bir bölümünü yeniden kuruyorum. Bunu yaptıkça daha önce de fark ettiğim bir şey iyice görünür hale gelmeye başladı: “yazılım kullanmak” dediğimiz şeyin şaşırtıcı bir kısmı, aslında çoktan verdiğimiz bir kararı makinelerin anlayacağı prosedüre çevirmekten ibaret.
Bir yazıyı yayınlamak bunun basit bir örneği. “Bu yazı yayınlansın” dediğim noktaya gelene kadar işin önemli kısmı zaten bitmiş oluyor. Yazıyı yazmışım, başlığı birkaç kez değiştirmişim, aslında ne anlatmaya çalıştığıma karar vermişim, yapıyı düzeltmişim, description ve metadata üzerinde çalışmışım ve sonunda adımı koymaya razı olduğum bir hale getirmişim.
Bundan sonrası veritabanı, image generation, object storage, metadata, web sitesi, belki sosyal medya ve e-posta dağıtımı gibi birkaç farklı sistemi ilgilendiriyor olabilir. Bunların hepsi gerçek işler. Ama hiçbiri yeni bir karar değil.
Zaten verdiğim kararın mekanik sonuçları.
Yazılım tarihinin büyük bölümünde bu ayrımın çok fazla önemi yoktu. Çünkü yazılım benim kararımı anlayamıyordu. Prosedüre ihtiyacı vardı. Bir şeyi yayınlamak istiyorsam niyetimi sistemin anlayacağı dile benim çevirmem gerekiyordu: şu alanı doldur, dosyayı buraya yükle, status’ü değiştir, bu değeri kopyala, şu işlemi tetikle, sonra da sonucu kontrol et.
Arayüz dediğimiz şey biraz da bunun için vardı. İnsan niyetini makinenin uygulayabileceği kadar kesin bir prosedüre çeviren katmandı.
Bu düzen o kadar uzun süredir hayatımızda ki yazılımın doğal hali buymuş gibi düşünüyoruz.
Ben artık bundan çok emin değilim.
Arayüz aslında tercümanın bir parçasıydı
Buradan “dashboard’lar gereksiz, bütün arayüzleri kapatalım” gibi bir sonuç çıkarmıyorum. Tam tersine, arayüzü çok faydalı bulduğum birçok durum var.
Bir şeyi ilk kez kuruyorsam ne olduğunu görmek isterim. Bir şey bozulduysa state’i incelemek isterim. Birkaç seçeneği karşılaştırıyorsam önüme düzgün bir şekilde koyulması işime gelir. Önemli bir değişiklik yapıyorsam sistemin mevcut durumunu ve neyi değiştireceğimi açıkça görmek isterim.
Benim sorguladığım şey başka: Neden rutin bir işi yapmanın normal yolu hâlâ arayüzden geçmek zorunda?
Mesela bir domain’in belirli bir uygulamaya gitmesini istediğimi varsayalım. Benim verdiğim asıl karar bu. Domain şu uygulamaya bağlanacak.
Bundan sonrası implementation. Bir sistemde bir değer var, diğerinde DNS kaydı gerekiyor, sertifikanın oluşması gerekebilir, propagation beklenir ve sonunda gerçekten çalışıyor mu diye kontrol edilir.
Bunların hepsini yapabilirim. Defalarca da yaptım. Ama bunları yapmayı biliyor olmam, her seferinde benim dikkatimin bu prosedürü çalıştırmak için kullanılmasının doğru olduğu anlamına gelmiyor.
Baktım, Middleware Ben Olmuşum yazısında daha çok sistemler arasında hâlâ insanın taşıdığı bilgiyle ilgileniyordum. Bir paneldeki token’ı başka yere götürmek, bir IP’yi DNS’e yazmak, bir doğrulama kodunu bir sistemden diğerine geçirmek gibi.
Şimdi aynı problemin bir katman yukarıda da olduğunu görüyorum.
Biz sadece bilgiyi taşımıyoruz.
Çoğu zaman prosedürün tamamını taşıyoruz.
Yapay zekanın bana hangi menüye gireceğimi, nereden hangi değeri alıp nereye yapıştıracağımı anlatması bu problemi çok fazla değiştirmiyor. Dokümantasyon okumaktan daha rahat olabilir ama sonuçta sistemi yine ben çalıştırıyorum.
Runtime hâlâ benim.
Sistem sonucu anlayınca ne değişiyor?
Yapay zekayla ilgili benim için ilginç olan şey, yazılımın konuşmaya başlaması değil. Chat arayüzünün tek başına çok büyük bir değişim olduğunu düşünmüyorum.
Daha önemli değişim şu: Yazılım artık ne yapılacağını anlamak için prosedürün bütün adımlarının önceden eksiksiz tarif edilmesine eskisi kadar muhtaç değil.
Doğal dilde yazılmış bir isteği anlayabiliyor. Birkaç farklı kaynağa bakabiliyor. Tool kullanabiliyor. Mevcut state ile istenen state’i karşılaştırabiliyor. Birkaç işlemi peş peşe yapıp sonunda gerçekten istediğimiz şey olmuş mu diye kontrol edebiliyor.
Bunların hiçbiri kusursuz değil. Yetki sınırları, doğrulama, güvenlik ve hataların nasıl ele alınacağı çok önemli. Ama yine de yazılımın taşıyabileceği işin sınırı değişiyor.
Eskiden “bu prosedürü bir insan uygulamalı” dediğimiz işlerin bir kısmı, “insan sonucu tarif etsin, sistem prosedürü taşısın” tarafına geçebiliyor.
Bu benim kurduğum sistemlere bakışımı da değiştiriyor.
Bir yazıyı yayınlarken ilk düşünmek istediğim şey veritabanı değil. Image generator değil. Storage değil. Web sitesi de değil.
Benim açımdan bunlar tek bir işin parçaları.
Veritabanı yazıyı saklayabilir. Media sistemi görselleri üretip doğru yere koyabilir. Web sitesi yayınlanmış revision’ı gösterebilir. Dağıtım sistemi gerekiyorsa sosyal medyaya ve e-postaya taşıyabilir.
Bunların hâlâ ayrı sistemler olması gayet normal. Ayrı sınırları, ayrı sorumlulukları ve düzgün contract’ları olmalı.
Ama benim her birini ayrı ayrı işletmem gerekmeyebilir.
Bu açıdan bakınca uygulamalar biraz farklı görünmeye başlıyor. Gittiğim “yerler” olmaktan çok, daha büyük bir sistemin kullanabileceği kabiliyetlere dönüşüyorlar.
Kendimi Döngünün Dışına Çıkarmaya Çalışıyorum yazısında da aslında benzer bir şeyi düşünüyordum. Ama amaç insanı mümkün olan her yerden çıkarmak değil. İnsanın neden orada olduğunu daha doğru tarif edebilmek.
Muhakeme yapıyorsam, sorumluluk alıyorsam, zevkimi katıyorsam, sıra dışı bir durumla uğraşıyorsam sistemin bana dönmesi gayet anlamlı olabilir.
Ama üç yazılım arasında standart bir prosedürü ben taşıyorum diye oradaysam başka bir problem var.
Konuşmadan daha önemli olan şey bağlam
Burada işin kolay görünmesini sağlayan önemli bir detay var.
“Bu yazıyı yayınla” ancak etrafındaki sistem ne demek istediğimi zaten biliyorsa iyi bir komut.
Hangi web sitesinden bahsediyorum? Yazı nerede tutuluyor? Yayınlama kurallarım ne? Hangi credential’ların kullanılmasına izin veriyorum? Görseller nasıl ele alınmalı? Hangi değişiklikler kendi başına yapılabilir? Başarılı olduğunu nasıl anlayacağız? Hangi durumda bana geri dönmesi gerekiyor?
Bunların hepsini her seferinde yeniden anlatmam gerekiyorsa aslında çok da ileri gitmiş değiliz.
Doğal dil karmaşıklığı ortadan kaldırmamış oluyor. Yalnızca configuration ekranını uzun bir sohbete çevirmiş oluyor.
Yirmi alan doldurmuyorum da yirmi soruya cevap veriyorum.
Bu yüzden son dönemde “memory” ya da chat history’den çok operational context ile ilgileniyorum. Bir sistemin belirli bir ortamda kısa bir komutun ne anlama geldiğini gerçekten bilmesini sağlayan state, kurallar, ilişkiler, geçmiş kararlar ve yetkiler.
Bağlam ne kadar iyiyse benim o kadar az tekrar etmem gerekiyor.
Her seferinde altyapımı, hesaplarımı, varsayılan tercihlerimi, hangi servisin ne için kullanıldığını ve daha önce verdiğim kararları yeniden açıklamam gerekiyorsa sistem aslında çok fazla yük taşımıyor. Ben görevi vermeden önce onun etrafındaki dünyayı tekrar kurmamı bekliyor.
Bunun iyi bir test olduğunu düşünüyorum.
Rutin bir işlem, sistemin makul biçimde zaten bilmesi gereken bir bilgi için tekrar tekrar insana dönüyorsa önce “yapay zeka yeterince akıllı değil” demek yerine bunun bir bağlam problemi olup olmadığına bakmak lazım.
Arayüz tamamen ortadan kalkmıyor
Bütün bunların sonunda arayüzsüz bir dünyaya gideceğimizi düşünmüyorum.
Hatta bazı işler için arayüzün değeri daha da artabilir.
Bir şeyin ne durumda olduğunu anlamak istiyorsam, seçenekleri karşılaştırıyorsam, araştırıyorsam, deneme yapıyorsam ya da ne istediğime henüz karar vermediysem doğrudan etkileşim çok değerli. Amaç execution değil exploration olduğunda iyi tasarlanmış bir interface hâlâ son derece güçlü.
Bir de kontrol meselesi var.
Yazılım kendi başına daha fazla hareket edebildikçe, ne yaptığını görebilmek daha az değil daha önemli hale geliyor. Ne değişti? Neden değişti? Hangi yetki kullanıldı? Sonuç ne oldu? Bir hata varsa nasıl geri alınır?
Bunları görebileceğimiz yer yine bir interface olabilir.
Dolayısıyla değişen şey arayüzün varlığı değil, rolü.
Bugün arayüz çoğu zaman iki işi aynı anda yapıyor. Sistemi anlamamı sağlıyor ve aynı zamanda sistemin prosedürünü bana uygulatıyor.
Bence bu iki iş zamanla birbirinden ayrılabilir.
Ne olduğunu anlamak için arayüz kullanmak istiyorum. Seçenekleri görmek, state’i incelemek, bir karar vermek için de.
Ama kararı verdikten sonra, sırf yazılım tarihsel olarak ekranlar etrafında organize edildi diye her rutin adımı elle taşımam gerektiğine artık daha az inanıyorum.
Bir sistem benim dikkatimi serbest bırakıyor diye o dikkati otomatik olarak bana geri vermiyor.
Arayüzlerden ve rutin prosedürlerden kurtulmak tek başına özgürlük değil. Belki sadece aynı anda daha fazla sistem işletmemizi sağlayacak. Açılan kapasitenin nereye gideceğine yine içinde bulunduğumuz düzen ve bizim neyi optimize ettiğimiz karar verecek.
O yüzden burada savunduğum şey maksimum otomasyon değil.
Daha bilinçli bir görev dağılımı.
Belki ürünün sınırı değişiyor
Uzun süre bir yazılımla onun arayüzü neredeyse aynı şeydi.
Bir ürünü kullanmak demek o ürüne gitmek demekti.
Login olursun. Dashboard açılır. Menüden ilgili bölüme gidersin. İşini yaparsın. Sonra başka ürüne geçersin.
Başka bir sistem benim adıma o ürünün kabiliyetlerini kullanabildiğinde bu varsayım zayıflamaya başlıyor.
Ürünün çok iyi bir arayüzü hâlâ olabilir. İnsanlar onu doğrudan da kullanabilir. Ama ürünün yaptığı işin giderek daha büyük bir bölümü, insanların arayüzünde dolaşmasından değil, insanlar adına hareket eden başka yazılımların onun kabiliyetlerini kullanmasından gelebilir.
Böyle olunca ürün kalitesine dair başka sorular önem kazanıyor.
Ürün ne yapabildiğini başka sistemlere açık biçimde anlatabiliyor mu? Yetki dar bir şekilde devredilebiliyor mu? Mevcut state okunabiliyor mu? Operasyonlarının sonucu öngörülebilir mi? Yapılan şey doğrulanabiliyor mu? Gerektiğinde insan ne olduğunu anlayıp müdahale edebiliyor mu?
Bunlar birkaç yıl önce bana daha çok API ya da infrastructure soruları gibi gelirdi.
Şimdi giderek ürün soruları gibi geliyor.
Kendi işimdeki değişim aslında çok basit.
Eskisine göre daha az “hangi uygulamayı açmam gerekiyor?” diye soruyorum.
Daha çok “ben aslında ne olmasını istiyorum?” diye soruyorum.
Arayüz, bir şeyi anlamama, keşfetmeme ya da karar vermeme yardımcı olduğunda hâlâ çok değerli.
Ama karar verildikten sonra sistemin bundan sonrasını daha fazla taşıyabilmesini bekliyorum.
Niyetin arayüzün yerini alması derken kastettiğim şey bu.
Arayüzün ortadan kaybolması değil.
Her niyetin geçmek zorunda olduğu kapı olmaktan çıkması.
Sohbeti sürdür
Yeni notlar, doğrudan benden.
Yapay zeka, sistemler, iş, üretmek ve hayat üzerine denemeler ve saha notları.