Üretken yapay zekanın sadece talimatlar verilerek fotogerçekçi görüntüler, illüstrasyonlar ve resimler üretebildiği iyi bilinmektedir.
Bu arada, iş dünyasında dikkat, üretken yapay zekanın program üretme yeteneğine odaklanmaktadır.
Sohbet tabanlı yapay zeka, temel bir teknoloji olan büyük dil modelleri tarafından desteklenir ve çeşitli dillerde sohbet etme ve diller arasında çeviri yapma konusunda üstündür.
Program oluşturmak için kullanılan programlama dilleri de bir dil türüdür. İnsan programcılar da bir anlamda sözlü olarak aldıkları yazılım gereksinimlerini programlama dillerine çevirirler.
Bu nedenle, büyük dil modelleri kullanan sohbet tabanlı üretken yapay zeka, programlama konusunda da oldukça yeteneklidir.
Ayrıca, programlama, sonuçların doğruluğunun genellikle otomatik ve anında doğrulanabildiği entelektüel bir görevdir. Çünkü oluşturulan bir program çalıştırılabilir ve istenen çıktıyı üretip üretmediği otomatik olarak kontrol edilebilir.
Aslında, insan programcılar bir program oluşturduklarında, sonuçları doğrulamak için genellikle aynı anda test programları da oluştururlar ve ana programın amaçlandığı gibi çalıştığını kontrol ederek geliştirmeye devam ederler.
Üretken yapay zeka da aynı şekilde test yaparak programlamaya devam edebilir. Bir insan doğru talimatlar verirse, yapay zekanın tüm testleri geçene kadar otomatik olarak yineleyerek programı tamamlaması mümkündür.
Elbette, üretken yapay zekanın programlama yeteneklerinin sınırlamaları ve insan talimatlarının belirsizliği nedeniyle, birçok denemeden sonra bile testlerin geçilemediği durumlar vardır. Dahası, yetersiz veya hatalı testler genellikle tamamlanmış programda hatalara veya sorunlara yol açar.
Ancak, üretken yapay zekanın yetenekleri geliştikçe ve insan mühendisleri talimat verme yöntemlerini iyileştirdikçe, üretken yapay zekanın internet aramaları yoluyla programlama bilgisini artırma mekanizmalarıyla birleştiğinde, uygun programların otomatik olarak üretilme kapsamı her geçen gün genişlemektedir.
Ek olarak, iş dünyasının odaklanmasıyla birlikte, üretken yapay zeka araştırma ve geliştirmesi yapan önde gelen şirketler de üretken yapay zekanın programlama yeteneklerini geliştirmeye yoğun yatırım yapmaktadır.
Bu durumda, üretken yapay zekaya emanet edilebilecek otomatik programlama görevlerinin kapsamının ve hacminin hızlanması beklenmektedir.
Daha önce hiç program geliştirmemiş kişilerin, internet bilgilerini kullanarak temel bir geliştirme ortamı kurup, ardından programlama için üretken yapay zekaya güvenerek, iki kişilik bir ekip olarak projeleri tamamladığı birçok örnek vardır.
Bir programcı olarak ben de programlama için üretken yapay zekayı kullanıyorum. Alıştığımda, programı hiç düzenlemeden, sadece üretken yapay zekanın talimatlarına göre dosyaları kopyalayıp yapıştırarak yazılımı tamamlayabiliyorum.
Elbette, sıkıştığım birçok durum oluyor. Bunlar çoğunlukla bilgisayarımın veya programlama geliştirme aracımın ayarları ile genel yapılandırmalar arasındaki küçük farklılıklardan kaynaklanıyor, ya da ücretsiz yazılım bileşenlerinin üretken yapay zekanın eğitildiği zamandan daha yeni olması nedeniyle bilgi farkı oluşmasından, ya da taleplerimin biraz alışılmadık olmasından kaynaklanıyor.
Bu tür küçük tutarsızlıklar veya özel durumlar olmaksızın ve çok yaygın yazılım işlevleri oluşturmak için talimat verildiğinde, çoğu durumda uygun programlar üretilir.
Likidware Çağına Doğru
Bir yazılım geliştiricisi olarak, oluşturduğum yazılımı yayınlayabiliyorum ve mühendisler olarak yayınladığımız bu yazılım, çeşitli kullanıcılar tarafından kullanılıyor.
Bu yazılım geliştirmenin, üretken yapay zeka ile herkes tarafından yapılabileceği bir gelecek, şimdiye kadarki tartışmanın bir uzantısıdır.
Ancak bu, sadece yazılım geliştirme tarafındaki bir değişiklik değil; kullanıcı tarafına da önemli değişiklikler geliyor.
Üretken yapay zekaya sözlü talimat vererek yazılıma otomatik olarak işlev ekleme veya değiştirme görevi, yazılımın yayınlanmasından önceki geliştirme aşamasında olduğu gibi kullanım sırasında da yapılabilir. Dahası, bu, yazılım kullanıcısının kendisi tarafından da gerçekleştirilebilir.
Yazılım geliştiricileri nelerin değiştirilebileceği ve nelerin değiştirilemeyeceği kapsamını belirleyebilir, ardından üretken yapay zeka destekli özelleştirme özelliklerine sahip yazılımı yayınlayabilirler.
Bu, kullanıcıların yazılım içindeki küçük rahatsızlıkları veya ekran tasarım tercihlerini değiştirmek için üretken yapay zekadan yardım istemelerine olanak tanıyacaktır.
Ayrıca, kullanıcılar diğer uygulamalarda bulunan kullanışlı özellikleri ekleyebilir, birden fazla işlemi tek tıklamayla birleştirebilir veya sıkça erişilen ekranları tek bir ekranda görüntüleyebilirler.
Yazılım geliştiricileri için, böyle bir kullanıcı özelleştirmesini etkinleştirmek önemli faydalar sunar: özellik isteklerini kendilerinin uygulama çabasını ortadan kaldırır ve kullanılabilirlik konusundaki olumsuz yorumları ve memnuniyetsizlikleri önleyerek yazılım popülerliğini artırabilir.
Kullanıcılar ekranları ve işlevleri bu şekilde serbestçe değiştirebildiklerinde, kavram geleneksel olarak "yazılım" olarak adlandırdığımız şeyden önemli ölçüde uzaklaşır.
Donanımdan daha esnek olan yazılımdan bile daha akışkan ve uyarlanabilir, ve kullanıcıya mükemmel şekilde uyan bir şeyi ifade ettiği için buna "Likidware" demek daha uygun olacaktır.
İşlevler bir zamanlar sadece donanım tarafından gerçekleştiriliyordu. Sonra değiştirilebilir yazılım ortaya çıktı ve donanım ve yazılım kombinasyonuyla işlevler mümkün hale geldi.
Buradan hareketle, üretken yapay zeka tarafından değiştirilebilen parçalar anlamına gelen Likidware'in ortaya çıkışını hayal edebiliriz. Sonuç olarak, işlevler donanım + yazılım (geliştiriciler tarafından sağlanan) + Likidware (kullanıcı değişiklikleri) ile gerçekleştirilecektir.
Bu Likidware çağında, kullanıcıların değişiklik fikirleri patlayacaktır.
Bir kullanıcı tarafından icat edilen çığır açan bir değişiklik fikri sosyal medyada sıcak bir konu haline gelebilir ve diğer insanlar da çeşitli Likidware uygulamalarını taklit edip değiştirebilirler.
Dahası, çeşitli yazılım uygulamalarını entegre bir şekilde ele alabilen Likidware'in de ortaya çıkması muhtemeldir. Bu, kullanıcıların birden fazla farklı sosyal medya platformundan gelen zaman akışlarını tek bir uygulamada görüntüleyebileceği veya arama sonuçlarının çok sayıda platformdan gelen çıktıları entegre edebileceği anlamına gelir.
Bu şekilde, Likidware'in yaygın olduğu bir dünyada, bilgisayarlar ve akıllı telefonlar dahil olmak üzere çeşitli cihazlar, her birimizin bireysel yaşamlarına ve faaliyetlerine mükemmel şekilde uyan işlevler sağlayacaktır.
Güncel Bir Fenomen
Benim gibi yazılım mühendisleri için Likidware'in geleceğe ait bir kavram veya birkaç yıl ötesinin konusu olmadığını anlamak çok önemlidir.
Çünkü çok basit Likidware bile şimdiden gerçekleştirilebilir durumdadır.
Örneğin, şirketimin e-ticaret sitesi için bir web uygulaması geliştiren bir mühendis olduğumu varsayalım.
Böyle bir web uygulaması, şirket içinde yönetilen sunucular veya bir bulut hizmeti aracılığıyla sözleşmeli sunucular üzerinde veritabanları, satış yönetim sistemleri ve ürün sevkiyat sistemlerine sahip olacaktır. Bir kullanıcı alışveriş yaptığında, bu sistemler ödeme tahsilatını ve ürün gönderimini yönetmek için birbirine bağlanacaktır.
Bu tür temel iş sistemleri ve veritabanları keyfi olarak değiştirilemez.
Ancak, kullanıcıya yönelik bir e-ticaret sitesinin web ekranı tasarımı, önemli sorunlara yol açmadan bireysel kullanıcılara uyacak şekilde değiştirilebilir. Elbette, bir kullanıcının yaptığı değişiklikler diğer kullanıcıların ekranlarını etkilerse bu bir sorun olur, ancak bireysel kullanıcılara özel özelleştirmeler sorun teşkil etmez.
Örneğin, çeşitli değişiklikler düşünülebilir: metni büyütme, arka planı koyu bir tona değiştirme, sıkça basılan düğmelerin konumunu sol el ile daha kolay kullanılabilecek bir yere taşıma, liste ekranında öğeleri fiyata göre sıralama veya iki ürünün ayrıntılarını yan yana görüntüleme.
Teknik olarak, bu değişiklikler tarayıcıda ekranı görüntüleyen HTML, CSS ve JavaScript gibi yapılandırma dosyaları ve programlar değiştirilerek gerçekleştirilebilir.
Güvenlik açısından bakıldığında, bu dosyalar başlangıçta web tarayıcısında çalışır. Bu nedenle, web uygulamaları konusunda bilgili bir mühendis tarafından değiştirilebilecek kısımlar, yalnızca değiştirilmesi güvenli olan işlevleri ve verileri işler.
Böylece, e-ticaret web uygulamasının sunucu tarafında, bu dosyaları oturum açmış her kullanıcı için ayrı ayrı depolayan, bir sohbet yapay zekasıyla sohbet etmek için bir ekran ekleyen ve ardından kullanıcının istekleri doğrultusunda sunucudaki o kullanıcının HTML, CSS ve JavaScript dosyalarını değiştiren bir mekanizma oluşturulabilir.
Bu metin, mevcut e-ticaret web uygulamasının yapılandırma bilgileri ve kaynak kodu ile birlikte üretken bir yapay zekaya sunulursa, bu tür bir işlevselliği eklemek için adımları ve gerekli programları muhtemelen sağlayacaktır.
Bu şekilde, Likidware zaten güncel bir konudur; şu anda devam eden bir fenomen olması şaşırtıcı olmayacaktır.
Çok Yönlü Mühendisler
Yapay zeka odaklı otomatik programlamanın kapsamı genişlese ve Likidware çağı başlamış olsa bile, yazılım geliştirme hala tamamen üretken yapay zeka tarafından yürütülemez.
Ancak, yazılım geliştirmede programlamaya verilen önemin önemli ölçüde azalacağı kesindir.
Ayrıca, yazılımı sorunsuz bir şekilde geliştirmek için, genel programlamadan bulut altyapısına, ağlara, güvenliğe, platformlara, geliştirme çerçevelerine ve veritabanlarına kadar uzanan geniş bir bilgi ve mühendislik becerisi yelpazesi gereklidir; tüm sistemin işlev görmesi için sistem yığınının her seviyesinde bu gereklidir.
Bu tür bilgi ve becerilere sahip personele tam yığın mühendisleri denir.
Geleneksel olarak, birkaç tam yığın mühendisi genel tasarımı üstlenirken, geri kalan mühendisler programlamada uzmanlaşır veya sistem yığındaki programlama dışındaki belirli alanlara odaklanarak mühendislik yapar ve böylece rolleri bölüşürlerdi.
Ancak, üretken yapay zeka programlama yönünü üstlendikçe, yazılım geliştirme maliyetleri önemli ölçüde azalacak ve bu da çeşitli yeni yazılım geliştirme projelerinin planlanmasına yol açacaktır.
Sonuç olarak, her geliştirme projesinde sadece program yazabilen mühendislere büyük ölçüde ihtiyaç duyulmayacak; bunun yerine çok sayıda tam yığın mühendisine talep olacaktır.
Dahası, bu senaryoda, sadece tam yığın bilgi ve becerilere sahip olmak yetersiz kalacaktır. Bunun nedeni, çeşitli geliştirme projelerinde ihtiyaç duyulan yazılım türlerinin çeşitlenmesi, yani geliştirmenin her zaman aynı sistem yığını kullanılarak talep edilmeyecek olmasıdır. Ayrıca, birden fazla sistem yığını gerektiren karmaşık sistemlere olan talepler şüphesiz artacaktır.
Örneğin, bir web uygulaması için sistem yığını, iş veya çekirdek sistemler için olandan farklıdır. Bu nedenle, bir tam yığın web uygulaması mühendisine, bir çekirdek sistem geliştirme projesi emanet edilemez.
Benzer şekilde, web uygulamaları, akıllı telefon uygulamaları ve bilgisayar uygulamalarının her birinin farklı sistem yığınları vardır. IoT gibi gömülü yazılım dünyasında, sistem yığını her gömülü cihaz için tamamen farklı olacaktır.
Ancak, programlamaya verilen önemin azalması ve genel yazılım geliştirme maliyetlerinin düşmesiyle birlikte, bu farklı sistem yığınlarına sahip yazılımları birleştiren karmaşık sistemlerin geliştirilmesi muhtemelen artacaktır.
Bu tür bir geliştirme, birden fazla ayrı tam yığın mühendisini bir araya getirmeyi gerektirse de, tüm sistemi denetleyebilen ve temel tasarımı yapabilen mühendisler önemli bir rol oynayacaktır.
Bu, bireysel sistem yığınlarının sınırlarını aşan, çok sayıda sistem yığını genelinde çok yönlü bilgi ve becerilere sahip mühendislere talep olacağı anlamına gelir.
Bu tür mühendislere muhtemelen çok yönlü mühendisler denilecektir.
Ve tıpkı üretken yapay zeka nedeniyle sadece programlama yapabilen mühendislerin talebinin azalacağı gibi, tek bir sistem yığınıyla sınırlı tam yığın mühendislerinin talebinin de zamanla azalacağı bir dönem gelecektir.
O dönemde bir BT mühendisi olarak aktif kalmak istiyorsanız, hemen çok yönlü mühendis olma yoluna girmeniz gerekir.
Çok Yönlü Mühendislerin Rolü
Geliştirilecek programlama dilleri, platformlar ve çerçeveler çeşitlidir.
Ancak, bir çok yönlü mühendisin hepsine hakim olması gerekmez, çünkü üretken yapay zekadan da yardım alabilirler.
Üretken yapay zekaya bırakırsanız, daha önce hiç kullanmadığınız programlama dilleri, platformlar veya çerçeveler bile sadece sözlü talimatlar verilerek oluşturulabilir.
Elbette, hatalar veya güvenlik açıkları tanıtma veya gelecekteki değişiklikleri zorlaştırabilecek teknik borç biriktirme riski vardır.
Bu riskleri belirlemek ve azaltmak için belirli dil veya kütüphane bilgisi gereklidir. Ancak, bu bilgi de üretken yapay zekadan elde edilebilir. Bir çok yönlü mühendis, bu sorunları tespit etme ve önleme veya oluşum sonrası ele alma için sağlam prosedürler ve mekanizmalar oluşturabilmelidir.
Bu prosedürler ve mekanizmalar, farklı sistem yığınlarıyla büyük ölçüde değişmez. Hataları ve güvenlik açıklarını önlemek ve gelecekteki genişletilebilirliği sağlamak için prosedürler ve mekanizmalar resmileştirilirse, gerisi üretken yapay zekaya veya bu belirli alanlarda uzmanlaşmış mühendislere bırakılabilir.
Çok yönlü mühendislerin her bir sistem yığını hakkında detaylı bilgiye veya uzun vadeli deneyime sahip olmaları gerekmez.
Çok yönlü bir mühendisin önemli rollerinden biri, farklı sistem yığınlarında işbirliği içinde çalışan birden fazla karmaşık yazılım sisteminin işlevlerinin nasıl dağıtılacağını ve nasıl birlikte çalışacağını tasarlamaktır.
Ayrıca, tüm yazılımın nasıl geliştirileceğini ve yönetileceğini düşünmek de çok yönlü bir mühendis için kritik bir rol oynar.
Çok Yönlü Yazılım
Çok yönlü bir mühendise ne tür bir yazılım geliştirme için ihtiyaç duyulduğunu ele alalım.
Daha önce, bir e-ticaret web uygulaması geliştirme örneğini vermiştim.
Üst yönetim tarafından bu e-ticaret web uygulamasını yenilemekle görevlendirilen bir yöneticinin talimatıyla, planlama ekibi aşağıdaki gereksinimlerle gelebilir:
Kullanıcı Topluluğu Platform Entegrasyonu: Bu, sadece özel bir e-ticaret uygulaması veya sitesi değil, kullanıcıların ürünler ve nasıl kullanılacakları hakkında etkileşimde bulunabileceği bir platform sağlamak anlamına gelir. Amaç, kullanıcı tutma, ağızdan ağıza etki, kullanıcı katkılarıyla içerik zenginleştirme ve geri bildirimlerin (hem olumlu hem de olumsuz) ürün geliştirmeye, yeni ürün planlamasına ve pazarlamaya entegrasyonudur.
Çoklu Cihaz Uyumluluğu: Bu, kullanıcı topluluğunu ve ürün bilgilerini yalnızca web uygulamalarından değil, akıllı telefon uygulamaları, sesli asistanlar, giyilebilir cihazlar ve akıllı ev aletleri dahil olmak üzere çeşitli cihazlardan erişilebilir kılar.
Çoklu Platform Uyumluluğu: Bu, sadece şirketin kendi kullanıcı topluluğu platformunu değil, aynı zamanda örneğin kapsamlı e-ticaret sitelerinde ürün listelemelerini ve yorum paylaşımını, sosyal medya ile entegrasyonu ve çeşitli yapay zeka araçlarıyla işlevsel ve bilgi bağlantısını içerir.
İş Sistemi Yenilemesi: Mevcut satış yönetim ve ürün teslimat sistemleriyle geçici olarak bağlantı kurulurken, bu aynı zamanda bu sistemlerin yenilenmesini de içerir. Yenileme sonrası, plan gerçek zamanlı satış verileri toplama ve talep tahmini ile envanter yönetim sistemleriyle entegrasyonu kapsamaktadır. Ayrıca, dağıtım şirketleri tarafından sağlanan bölgesel olarak dağıtılmış envanter sistemleri ve taşıyıcı tarafındaki teslimat hizmetleri ile bağlantı aşamalı olarak devreye alınacak ve bilgi sisteminin entegrasyonlarını buna göre kademeli olarak uyarlamasını gerektirecektir.
Likidware Uyumluluğu: Kullanıcıya yönelik tüm arayüzler elbette Likidware uyumlu olacaktır. Ek olarak, ürün geliştirme ve planlama (bilgi toplama ve geri bildirim gibi), sistem operasyon departmanları ve yönetim için raporlar gibi dahili kullanıcı arayüzleri de tamamen Likidware'e dönüştürülecektir.
Böyle karmaşık bir yazılım için bir geliştirme planı sunulduğunda, geleneksel bir yazılım geliştirme ekibi muhtemelen hemen kabul etmeyecektir. Alternatif olarak, sistem özellikleriyle ilgili tartışmalar yoluyla, muazzam geliştirme maliyetleri ve zaman ihtiyacını mantıksal olarak göstererek, özelliklerde önemli kesintiler yapılmasını sağlayacaklardır.
Ancak, üretken yapay zeka programlamanın çoğunu otomatikleştirebilseydi ve önerilen sistem yığınlarının yarısından fazlası zaten ekipteki birisi tarafından deneyimlenmiş olsaydı ne olurdu? Ve ekip, üretken yapay zeka yardımıyla sıfırdan yeni sistem yığınları, platformlar ve çerçeveler başlatma konusunda başarılı bir geçmişe sahip olsaydı ne olurdu? Ve siz, çok yönlü bir mühendis olarak bu yola zaten başlamış ve bu yolda ilerlemeyi düşünüyorsanız ne olurdu?
Bu bakış açısından, bu çok çekici bir proje gibi görünmelidir. Üst yönetimden iddialı öneriler getiren bir planlama ekibiyle ve çok yönlü bir yazılım geliştirme ekibine dönüşme potansiyeline sahip bir geliştirme ekibiyle çalışma fırsatına sahip olurdunuz.
Mevcut sistemlerin güvencesi de vardır. Bu aynı zamanda, çevik bir geliştirme süreci aracılığıyla, hızlı kazanç sağlayan, yüksek etkili özelliklerle başlayarak ve erken benimseyen kullanıcılardan geri bildirim alarak kademeli olarak büyütülebilecek bir projedir.
Tüm bunları göz önünde bulundurduğumuzda, bu çok yönlü yazılımın geliştirilmesi çok çekici bir proje gibi görünmelidir.
Sonuç
Üretken yapay zeka destekli otomatik programlama ile Likidware ve çok yönlü yazılım geliştirme şimdiden güncel gerçeklikler haline gelmektedir.
Bu bağlamda, BT mühendislerinin giderek daha fazla tam yığın ötesine geçerek çok yönlü mühendisler olmayı hedeflemesi gerekmektedir.
Bunun ötesinde, kapsamları daha da genişleyecek, BT sistemleri alanının dışına çıkarak müşterileri, şirket içi çalışanları ve yapay zekayı birbirine bağlayarak organizasyonel faaliyetlerin kendisini mühendislik alanına dahil eden çok yönlü iş mühendisliğini ve çok yönlü topluluk mühendisliğini kapsayacaktır.
Ve daha da ötesinde, toplumu kapsamlı bir şekilde iyileştirmeyi amaçlayan çok yönlü sosyal mühendislik adı verilen bir alanın ortaya çıkacağını öngörüyorum.