Üretken yapay zekanın, talimatlara uyarak foto-gerçekçi resimler, illüstrasyonlar ve tablolar üreterek görsel içerik oluşturabildiği iyi bilinmektedir.
Bu arada, iş dünyasında üretken yapay zekanın program üretme yeteneğine odaklanılmıştır.
Sohbet tabanlı yapay zeka, temel büyük dil modelleri aracılığıyla gerçekleştirilir ve bu sayede çeşitli dillerde sohbet etme ve diller arasında çeviri yapma konusunda oldukça yeteneklidir.
Program oluşturmak için kullanılan programlama dilleri de bir tür dildir. İnsan programcılar, bir anlamda, sözlü olarak alınan yazılım gereksinimlerini programlama dillerine çevirirler.
Bu nedenle, büyük dil modellerini kullanan konuşma tabanlı üretken yapay zeka, programlama konusunda da oldukça yeteneklidir.
Ayrıca, programlama, çıktının doğruluğunun genellikle otomatik ve anında doğrulanabildiği bir entelektüel çalışma türüdür. Bunun nedeni, oluşturulan programın çalıştırılmasının, istenen sonuçların üretilip üretilmediğini otomatik olarak belirlemesidir.
Aslında, insan programcılar, ana programın amaçlandığı gibi çalıştığını doğrulamak için genellikle ana programla eş zamanlı olarak test programları oluşturarak, geliştirme ilerledikçe davranışını kontrol ederler.
Üretken yapay zeka da test yaparak programlama sürecinde ilerleyebilir; bu, bir insan doğru talimatlar verdiğinde, yapay zekanın testleri geçene kadar programı otomatik olarak tekrarlayarak tamamlamasına olanak tanıyan bir mekanizmadır.
Elbette, üretken yapay zekanın programlama yeteneğinin sınırlamaları ve insan talimatlarının belirsizliği nedeniyle, birden fazla yinelemeden sonra bile testlerin geçilemediği birçok durum vardır. Ayrıca, testler yetersiz veya hatalı olabilir, bu da tamamlanan programda sıkça hatalara veya sorunlara yol açar.
Ancak, üretken yapay zeka yetenekleri geliştikçe, insan mühendisleri talimat verme yöntemlerini iyileştirdikçe ve üretken yapay zekanın programlama bilgisi internet aramaları aracılığıyla arttıkça, uygun programları otomatik olarak üretme kapsamı her geçen gün artmaktadır.
Buna ek olarak, iş dünyasının dikkatiyle birlikte, üretken yapay zeka araştırma ve geliştirmesi yapan önde gelen şirketler de üretken yapay zekanın programlama yeteneklerini geliştirmeye odaklanmaktadır.
Bu tür koşullarda, otomatik programlamanın üretken yapay zekaya emanet edilebileceği alanların ve hacimlerin genişlemesinin hızlanması beklenmektedir.
Daha önce hiç program geliştirmemiş kişilerin, internet bilgilerine dayanarak temel bir geliştirme ortamı kurup, ardından programlamayı üretken yapay zekaya bırakarak işbirliği içinde programları tamamladığı birçok durum vardır.
Ben de bir programcı olarak programlama için üretken yapay zeka kullanıyorum. Bir kez alıştığımda, programı hiç düzenlemeden, sadece programları dosyalara kopyalayarak veya üretken yapay zekanın talimatlarına göre kesip yapıştırarak yazılımı tamamlayabiliyorum.
Elbette, zorluklarla karşılaştığım birçok durum oluyor. Bunlar genellikle bilgisayarımın veya programlama geliştirme araçlarımın tipik yapılandırmalardan biraz farklı ayarlara sahip olmasından, veya ücretsiz yazılım bileşenlerinin üretken yapay zekanın öğrendiğinden daha yeni olup bilgi boşluğuna yol açmasından, ya da bazen istediğim içeriğin biraz alışılmadık olmasından kaynaklanıyor.
Çoğu durumda, bu tür küçük farklılıklar veya özel durumlar yoksa ve ona çok yaygın bir yazılım özelliği oluşturmasını söylersem, uygun programlar üretilir.
Likit Yazılım Çağına Doğru
Bir yazılım geliştiricisi olarak, geliştirdiğim yazılımı piyasaya sürebilirim. Ve biz mühendislerin piyasaya sürdüğü yazılımlar çeşitli kullanıcılar tarafından kullanılmaktadır.
Üretken yapay zeka ile herkesin bu yazılım geliştirmeyi gerçekleştirebileceği gelecek, şu ana kadarki tartışmanın bir uzantısıdır.
Ancak, bu sadece yazılım geliştirme tarafındaki bir değişiklik değildir. Kullanıcı tarafında da önemli bir değişiklik meydana gelecektir.
Üretken yapay zekaya sözlü olarak yazılıma otomatik olarak özellik eklemesini veya değiştirmesini söylemek, yalnızca yazılım piyasaya sürülmeden önceki geliştirme aşamasında değil, aynı zamanda kullanımdayken de yapılabilir. Dahası, bu, yazılım kullanıcılarının kendileri tarafından da yapılabilir.
Yazılım geliştiricilerinin yapması gereken tek şey, izin verilen ve değiştirilemez aralıkları tanımlamak ve yazılımı üretken yapay zeka destekli bir özelleştirme özelliğiyle yayınlamaktır.
Bu, kullanıcıların üretken yapay zekadan küçük kullanılabilirlik sorunlarını veya ekran tasarımı tercihlerini değiştirmesini istemesine olanak tanıyacaktır.
Ayrıca, diğer uygulamalarda bulunan kullanışlı özellikleri eklemek, tek tıklamayla birden fazla işlemi birleştirmek veya sık erişilen ekranları tek bir ekranda görüntülemek mümkün olacaktır.
Yazılım geliştiricinin bakış açısından, bu tür kullanıcı özelleştirmelerini etkinleştirmek önemli avantajlar sunar. Kullanıcı isteklerine dayalı özellikler ekleme ihtiyacını ortadan kaldırır ve kullanılabilirlik konusundaki olumsuz geri bildirimleri ve memnuniyetsizlikleri önleyerek yazılımın popülaritesini artırabileceği düşünüldüğünde, bu büyük bir kazançtır.
Kullanıcılar ekranları ve işlevleri bu şekilde serbestçe değiştirebildiğinde, kavram geleneksel olarak "yazılım" olarak adlandırdığımızdan önemli ölçüde sapar.
Yazılımdan (donanıma göre esnek olan) daha da akışkan ve uyarlanabilir olduğunu ve kullanıcıya mükemmel şekilde uyduğunu belirtmek için "likit yazılım" olarak adlandırmak uygun olacaktır.
Geçmişte işlevler yalnızca donanım tarafından gerçekleştirilirken, daha sonra değiştirilebilir yazılım ortaya çıktı ve işlevlerin donanım + yazılım kombinasyonuyla gerçekleştirilmesine olanak tanıdı.
Buradan hareketle, üretken yapay zeka tarafından değiştirilebilen kısımları ifade eden likit yazılımın ortaya çıktığını düşünebiliriz. Böylece, genel işlevler donanım + yazılım (geliştiriciler tarafından sağlanan) + likit yazılım (kullanıcı değişiklikleri) tarafından gerçekleştirilecektir.
Bu likit yazılım çağında, kullanıcı tarafındaki 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ğerlerini çeşitli likit yazılımları taklit etmeye ve değiştirmeye yönlendirebilir.
Ayrıca, çeşitli yazılım türlerini entegre edebilen ve işleyebilen likit yazılımların ortaya çıkması kaçınılmazdır. Bu, kullanıcıların birden fazla farklı SNS platformundaki zaman çizelgelerini tek bir uygulamada görüntülemesine veya çok sayıda platformdaki arama sonuçlarını entegre etmesine olanak tanır.
Bu şekilde, likit yazılımın yaygın olduğu bir dünyada, bilgisayarlar ve akıllı telefonlar dahil olmak üzere çeşitli cihazlar, her bireyin yaşamı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 önemli olan şey, "likit yazılım"ın geleceğe dair bir konsept ya da birkaç yıl uzakta bir şey olmamasıdır.
Bunun nedeni, çok basit likit yazılımların zaten ulaşılabilir olmasıdır.
Örneğin, şirketimin e-ticaret sitesi için bir web uygulaması geliştiren bir mühendis olduğumu varsayalım.
Bu tür web uygulamaları tipik olarak, şirket tarafından yönetilen sunucularda veya anlaşmalı bulut hizmetlerinde veritabanları, satış yönetimi sistemleri ve ürün sevkiyat sistemlerine sahiptir. Bir kullanıcı satın alma işlemi yaptığında, bu sistemler ödemeleri toplamak ve ürünleri göndermek için birbirine bağlanır.
Bu işlemlerin temel sistemleri ve veritabanları keyfi olarak değiştirilemez.
Ancak, kullanıcıların gördüğü e-ticaret web sitesinin tasarımı her kullanıcının rahatlığı için değiştirilirse, bu genellikle küçük bir sorun yaratır. Elbette, bir kullanıcının değişiklikleri başka bir kullanıcının ekranını etkilerse bu bir sorun olur, ancak bireysel kullanıcıya özel özelleştirmeler sorun teşkil etmez.
Çeşitli değişiklikler düşünülebilir: metni büyütmek, arka planı koyu bir tona değiştirmek, sıkça basılan düğmeleri sol elle kolayca erişilebilen konumlara taşımak, liste ekranında öğeleri fiyata göre sıralamak veya iki ürünün detaylarını yan yana görüntülemek.
Teknik olarak, bu değişiklikler, ekranı tarayıcıda 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, bu dosyalar başlangıçta web tarayıcısında çalışır, bu nedenle web uygulamalarına aşina mühendisler tarafından değiştirilebilirler. Bu nedenle, yalnızca değiştirilmesi güvenli olan işlevleri ve verileri işlerler.
Bu nedenle, e-ticaret web uygulamasının sunucu tarafında, bu dosyalar her oturum açmış kullanıcı için ayrı ayrı saklanabilir, sohbet yapay zekasıyla konuşma için bir ekran eklenebilir ve kullanıcının isteklerine göre sunucudaki HTML, CSS ve JavaScript dosyalarını değiştirmek için bir mekanizma oluşturulabilir.
Bu metni, mevcut bir e-ticaret web uygulamasının yapılandırma bilgileri ve kaynak koduyla birlikte üretken yapay zekaya sağlarsanız, yapay zeka muhtemelen bu tür bir işlevselliği eklemek için adımları ve gerekli programları sağlayacaktır.
Bu şekilde, likit yazılım zaten güncel bir konudur; devam eden bir fenomen olması şaşırtıcı olmaz.
Çok Yönlü Mühendis
Yapay zeka destekli otomatik programlamanın kapsamı genişlese ve likit yazılım çağı zaten başlamış olsa bile, yazılım geliştirme henüz tamamen üretken yapay zeka tarafından yürütülemez.
Ancak, yazılım geliştirmede programlamanın ağırlığının önemli ölçüde azalacağı kesindir.
Buna ek olarak, yazılımı sorunsuz bir şekilde geliştirmek için sadece genel programlama değil, aynı zamanda bulut altyapısı, ağlar, güvenlik, platformlar, geliştirme çerçeveleri ve veritabanları gibi tüm sistemi yukarıdan aşağıya kapsayan geniş bir bilgi ve mühendislik becerileri yelpazesine ihtiyaç vardır.
Bu tür bilgi ve becerilere sahip personele tam yığın mühendisleri denir.
Şimdiye kadar, birkaç tam yığın mühendisi genel tasarımı yönetirken, geri kalan mühendisler ya sadece programlamaya odaklandı ya da sistem yığını içinde programlama dışındaki belirli alanlarda uzmanlaştı ve bu şekilde görevleri paylaştı.
Ancak, üretken yapay zeka programlama kısmını üstlendikçe, yazılım geliştirme maliyetleri önemli ölçüde azalacak ve bu da çeşitli yeni yazılım geliştirmelerinin planlanmasına yol açacaktır.
Sonuç olarak, her geliştirme projesi çok az sayıda yalnızca kod yazabilen mühendise ihtiyaç duyacak; bunun yerine, çok sayıda tam yığın mühendisine ihtiyaç duyulacaktır.
Dahası, bu durumda sadece tam yığın bilgi ve becerilere sahip olmak yeterli olmayacaktır. Bunun nedeni, çeşitli yazılım geliştirme projelerinin farklı yazılım türleri talep etmesi, yani geliştirmenin her zaman aynı sistem yığını içinde istenmeyeceği anlamına gelmesidir. Ayrıca, birden fazla sistem yığını gerektiren bileşik sistemlere olan talep de artacaktır.
Örneğin, bir web uygulaması için sistem yığını, iş veya çekirdek sistemlerinkinden farklıdır. Bu nedenle, bir tam yığın web uygulaması mühendisine bir çekirdek sistem geliştirme projesi emanet edilemez.
Ayrıca, web uygulamaları, akıllı telefon uygulamaları ve PC uygulamaları farklı sistem yığınlarına sahiptir. IoT gibi gömülü yazılım dünyasında, sistem yığını gömülü olduğu cihaza bağlı olarak tamamen değişir.
Ancak, programlamaya verilen önemin azalması ve yazılım geliştirmenin genel maliyetinin düşmesi durumunda, farklı sistem yığınlarına sahip yazılımları birleştiren bileşik sistemlerin geliştirilmesi artmalıdır.
Bu durum, geliştirme için birden fazla ayrı tam yığın mühendisinin bir araya getirilmesini gerektirse de, tüm resmi denetleyebilen ve temel tasarımı gerçekleştirebilen mühendisler çok önemli bir konumda olacaktır.
Bu, bireysel sistem yığınlarının sınırlarını aşan, çok sayıda sistem yığını boyunca çok yönlü bilgi ve becerilere sahip mühendislerin talep göreceği 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 azalması gibi, sonunda tek bir sistem yığınıyla sınırlı tam yığın mühendislerinin talebinin de azalacağı bir dönem gelecektir.
Bu çağda bir BT mühendisi olarak aktif kalmak istiyorsanız, hemen çok yönlü bir mühendis olmaya çalışmaya başlamalısınız.
Çok Yönlü Mühendisin Rolü
Geliştirilecek programlama dilleri, platformlar ve çerçeveler çeşitlidir.
Ancak bu, hepsini öğrenmek gerektiği anlamına gelmez. Çünkü çok yönlü mühendis, üretken yapay zekadan da yardım alabilir.
Üretken yapay zekaya emanet edildiğinde, daha önce hiç kişisel olarak kullanılmamış programlama dilleri, platformlar veya çerçeveler bile sadece sözlü talimatlarla oluşturulabilir.
Elbette, hatalar veya güvenlik açıkları ekleme, veya gelecekteki değişiklikleri zorlaştırabilecek teknik borç biriktirme riski vardır.
Bu riskleri belirlemek ve azaltmak için belirli bir dil veya kütüphane hakkında bilgi gereklidir. Ancak bu bilgi de üretken yapay zekadan elde edilebilir. Çok yönlü mühendisin yalnızca bu sorunları tespit etme ve önleme veya sonradan ele alma prosedürlerini ve mekanizmalarını eksiksiz bir şekilde oluşturabilmesi yeterlidir.
Bu prosedürler ve mekanizmalar, sistem yığınındaki farklılıklarla önemli ölçüde değişmez. Hata ve güvenlik açığı oluşumunu engelleme ve geliştirme sırasında gelecekteki genişletilebilirliği sağlama prosedürleri ve mekanizmaları resmileştirilebilirse, geri kalanı üretken yapay zekaya veya bu belirli alanlarda yetenekli mühendislere emanet edilebilir.
Çok yönlü mühendisin, her bir sistem yığını hakkında detaylı bilgiye veya uzun süreli deneyime sahip olması gerekmez.
Ayrıca, çok yönlü bir mühendisin önemli rollerinden biri, birden çok farklı sistem yığınında işbirliği içinde çalışan karmaşık yazılımlarda işlevlerin nasıl dağıtılacağını ve nasıl birlikte çalışacaklarını tasarlamaktır.
Buna ek olarak, tüm yazılımın nasıl geliştirileceği ve yönetileceği de çok yönlü mühendis için önemli bir rol haline gelir.
Çok Yönlü Yazılım
Ne tür bir yazılım geliştirmenin çok yönlü bir mühendis gerektirdiğini ele alalım.
Daha önce, bir e-ticaret web uygulaması geliştirme örneğini vermiştim.
Şirket yönetimi tarafından bu e-ticaret web uygulamasının baştan sona yenilenmesi emrini alan bir yöneticinin yönlendirmesi altında, planlama ekibi aşağıdaki gereksinimlerle gelebilir:
Kullanıcı Topluluğu Platformu Dönüşümü. Bu, sadece e-ticaret odaklı bir uygulama veya site değil, ürün kullanıcılarının ürünlerin kendileri ve kullanımları hakkında birbirleriyle etkileşime girebilecekleri bir platform sağlamak anlamına gelir. Amaç, kullanıcı tutma, ağızdan ağıza pazarlama etkisi, kullanıcı katkılarıyla içeriğin zenginleştirilmesi ve ürün geliştirme geri bildirimlerinin (hem olumlu hem de olumsuz) yeni ürün planlama ve pazarlama ile entegrasyonudur.
Çok Cihazlı Uyumluluk. Bu, kullanıcı topluluğuna ve ürün bilgilerine yalnızca web uygulamalarından değil, aynı zamanda akıllı telefon uygulamalarından, sesli asistanlardan, giyilebilir cihazlardan, akıllı ev aletlerinden ve diğer tüm cihazlardan erişimi sağlar.
Çok Platformlu Uyumluluk. Bu, yalnızca şirketin kendi kullanıcı topluluğu platformunu değil, aynı zamanda örneğin genel e-ticaret sitelerindeki ürün listelerini ve inceleme paylaşımlarını, sosyal medya entegrasyonunu ve çeşitli yapay zeka araçlarıyla işlevsel ve bilgi bağlantısını içerir.
İş Sistemi Yenileme. Mevcut satış yönetimi ve ürün teslim sistemleriyle geçici olarak bağlantı kurulurken, bu sistemler de yenilenecektir. Yenilemenin ardından, gerçek zamanlı satış verisi toplama, talep tahmini ve envanter yönetim sistemleriyle entegrasyon öngörülmektedir. Ayrıca, bölgesel dağıtık envanter sistemleri ve teslimat şirketleri tarafından sağlanan ürün sevkiyat hizmetleriyle aşamalı entegrasyon ilerledikçe, bilgi sistemleri de buna uygun olarak aşamalı olarak entegre olmalıdır.
Likit Yazılım Uyumluluğu. Elbette, tüm kullanıcı arayüzleri likit yazılım ile uyumlu olacaktır. Ayrıca, ürün geliştirme ve planlama için bilgi toplama ve geri bildirim, sistem operasyon departmanları ve yönetim raporları gibi tüm dahili kullanıcı arayüzleri de likit yazılıma dönüştürülecektir.
Böyle karmaşık bir yazılım için bir geliştirme planı sunulsa, geleneksel bir yazılım geliştirme ekibi muhtemelen hemen kabul etmezdi. Veya, sistem özelliklerini iyileştirme sürecinde, devasa geliştirme maliyetleri ve zaman ihtiyacını mantıksal olarak gösterir ve özelliklerde önemli indirimler için baskı yaparlardı.
Peki ya üretken yapay zeka programlamanın çoğunu otomatik hale getirebilseydi ve sunulan sistem yığınlarının yarısından fazlası ekipteki birine tanıdık gelseydi ve ekip, üretken yapay zeka yardımıyla yeni sistem yığınları, platformlar ve çerçeveleri sıfırdan başarıyla tanıtma konusunda daha önce deneyime sahip olsaydı? Ve ya siz, çok yönlü bir mühendis olarak, zaten bu yola çıkmış ve bu yolda devam etmeyi düşünüyorsanız, ne olurdu?
Bu açıdan bakıldığında, çok çekici bir proje olarak görünmelidir. Planlama liderliğinin yönlendirmesi altında iddialı teklifler sunan bir planlama ekibi ve çok yönlü bir yazılım geliştirme ekibine dönüşme potansiyeline sahip bir geliştirme ekibiyle çalışma fırsatı yakalamış olurdunuz.
Mevcut sistemlerin güvencesi de var. Aynı zamanda, yüksek etkili özelliklerin hızla oluşturulabildiği ve sistemin erken benimseyen kullanıcılardan gelen geri bildirimlerle kademeli olarak büyüyebildiği çevik geliştirme süreçlerine olanak tanıyan bir projedir.
Bu düşünüldüğünde, bu çok yönlü yazılımın geliştirilmesi çekici bir proje olarak görünmelidir.
Sonuç
Üretken yapay zeka tarafından yapılan otomatik programlama sayesinde, likit yazılım ve çok yönlü yazılım geliştirme zaten güncel gerçekler haline gelmektedir.
Böyle bir durumda, BT mühendislerinin tam yığın mühendisliğinin ötesine geçerek çok yönlü mühendisler olmayı hedeflemeleri giderek daha fazla gerekmektedir.
Dahası, bunun ötesinde, kapsamları BT sistemlerinin ötesine geçerek müşterileri, kurum içi çalışanları ve yapay zekayı birbirine bağlayarak organizasyonel faaliyetleri kapsamlı bir şekilde mühendislik yapan çok yönlü iş mühendisliği ve çok yönlü topluluk mühendisliğine genişleyecektir.
Ve bunun da ötesinde, toplumu kapsamlı bir şekilde iyileştirmeyi amaçlayan çok yönlü sosyal mühendislik adı verilen bir alanın ortaya çıkacağına inanıyorum.