Geliştiriciler Vim ve Emacs gibi araçlara veya entegre geliştirme ortamlarına yalnızca alışkanlıktan bağlanmaz; bu araçlar düşünme, kod yazma ve kod inceleme biçimlerinin bir parçası hâline geldiği için bağlanırlar. Kullanıcı uzun süre deneyim kazandıkça komutlar ve işlemler örtük bilgiye ve kas hafızasına dönüşür; böylece araç elinin doğal bir uzantısı gibi görünür. Bu ilişki, kısa sürede eksiksiz uygulamalar üretebilen ancak daha az kesin, açık ve öngörülebilir olan aracı programlama araçlarına yönelik tereddüdün bir bölümünü açıklar.
Makale, araçlar ile güveni ve bunları çevreleyen süreci ilişkilendiriyor. Güvenilir araç yalnızca görevi yerine getiren değil, geliştiricinin sınırlarını ve davranışını bilmesini ve sonuçlarını öngörmesini sağlayan araçtır. Buna karşılık aracı yapay zekâ araçlarının yetenekleri sürekli değişir ve belirsiz olabilen doğal dil komutlarına dayanır. Makalenin atıfta bulunduğu son geliştirici anketinin verilerine göre yapay zekâ kullanımı %76'dan %84'e yükselirken, yapay zekâya duyulan güven %40'tan %29'a geriledi.
Araç, geliştirme sürecinin bir parçasıdır
Geliştiricinin terminalde, bir metin düzenleyicide veya entegre geliştirme ortamında çalışmayı öğrenmesi yalnızca ayrı bir programı öğrenmek anlamına gelmez; kod yazmak, anlamak ve iyileştirmek için eksiksiz bir süreç oluşturmak anlamına gelir. Bu nedenle terminalden entegre geliştirme ortamına geçiş çalışma biçiminin yeniden kurgulanmasını gerektirebilir; bunlardan herhangi birinden aracı programlama aracına geçiş ise daha büyük bir dönüşümdür.
Geliştirici üretkenliği savunucusu Tricia Gee, geliştiricinin bildiği geliştirme ortamını kullanırken daha hızlı olabileceğini, çünkü parmaklarının ne yapılması gerektiğine alıştığını açıklıyor. Aynı durum deneyimli Vim ve Emacs kullanıcıları için de geçerlidir. Zamanla geliştiricinin araca güvenmesine ve aracı kod üretmek ve iyileştirmek için kullanmasına yardımcı olan bilinç dışı bir yetkinlik oluşur.
Entegre geliştirme ortamları, kapsayıcı araçları ve statik analiz araçları gibi geleneksel araçlar, kullanıcıya sınırları ve rolleri hakkında net bir tasavvur sunar. Yapay zekâ ise yazılım geliştirme yaşam döngüsünün araç zincirinin birçok bölümüne nüfuz eder; bu da ona duyulan güvenin azalmasını sürecin tamamını etkileyen bir duruma getirir. Kod yazmak hızlanabilir, ancak kodu doğrulamak ve üretimde maliyetli arızalara yol açmayacağından emin olmak daha uzun sürebilir.
Araçlar bozuk süreçleri düzeltmez
Aracı programlama araçları geliştirme sürecinin doğasını değiştirdi. Bu durum, statik inceleme, birim testleri, entegrasyon ve sürekli dağıtım araçları gibi önceki süreç etrafında oluşturulmuş araçları mevcut hâlleriyle daha az uygun hâle getirebilir. Ancak makale, araç ile aracın somutlaştırdığı süreç arasında ayrım yapıyor: İyi bir sürekli entegrasyon ve dağıtım aracı daha hızlı teslimatı garanti etmez; güçlü bir entegre geliştirme ortamı daha iyi kod yazılmasını garanti etmez; bir konu takip sistemi de iş yükünün doğru tahmin edilmesini garanti etmez.
Sürecin bir bölümü kurum kültürü, çalışanların davranışları ve standartları içinde şekillenir. Bu nedenle yeni araçlar, vaatleri ne kadar büyük görünürse görünsün, mevcut kültür ve süreçlerle uyumlu olmadıkları veya geliştiriciler kullanımlarının nedenini anlamadığı takdirde başarısız olabilir. Makale, aracı programlama araçlarının geliştiricilerin sorunları hızla çözmesine yardımcı oldukları için hızla yaygınlaştığını; ancak aynı zamanda gereksinimlerin belirlenmesinde, problemin tanımlanmasında ve çözümün anlamında eskiden beri var olan kusurları açığa çıkardığını belirtiyor.
Kod üretimi geçmişe kıyasla neredeyse ücretsiz hâle geldi, ancak kod incelemesi aynı şekilde ucuzlamadı. Geliştiriciler, aracıların birkaç dakika içinde ürettiği birleştirme isteklerinde büyük değişikliklerle karşılaşabilir; bu da inceleyenlerin yükünü artırabilir veya biçimsel incelemelerin benimsenmesine yol açabilir. İncelemenin kapsamını genişletmek için bir dil modelinin hakem olarak kullanılması geliştiriliyor; ancak yapay zekânın yapay zekâ tarafından yazılmış kodu inceleme becerisine güven oluşturmak ek çalışma gerektiriyor.
Kodu çalıştırmanın da maliyetleri vardır. Bunlar altyapı maliyetlerini, hesaplama, bellek ve trafik dâhil bulut kaynaklarını, bağımlı hizmetleri ve barındırılan programlama arayüzlerini; ayrıca kesintiler, güvenlik ihlalleri ve fırsat maliyetleri gibi arıza maliyetlerini kapsar. Bu unsurları dikkate almadan kod üreten araçlar mutlaka yararlı değildir ve güvenilir yazılım üreten süreci zayıflatabilir.
Sorumluluk ve süreçler aracılığıyla güven oluşturmak
Geleneksel geliştirme yaşam döngüsünde güven, birbiriyle bağlantılı roller arasında dağıtılıyordu: Ürün yöneticileri gereksinimleri belirliyor, mimarlar çözümleri tasarlıyor, mühendisler yazılımı geliştirip değişiklikleri inceliyor, kalite güvence ekibi kırılma noktalarını test ediyor, ardından DevOps ve SRE uzmanları yayımdan sonra performansı ve kaynakları izliyordu. Bu dağılım, bir kişinin veya aracın sınırların dışına çıkarak sisteme zarar verme olasılığını azaltmaya yardımcı oluyordu.
Makale, yapay zekâ destekli geliştirme döngüsünün de benzer ilkelere ihtiyaç duyduğunu savunuyor: İnsanlarla birlikte çalışmak, sorumluluğu ve hesap verebilirliği belirlemek, süreçleri paylaşmak ve kademeli olarak iyileştirmek, hata fırsatlarını azaltmak. İnsanlar sorumlu taraflar olarak kalmalı ve yapay zekânın katkıda bulunduğu noktalar açıklığa kavuşturulmalıdır.
Değişikliği aracı oluşturduğu için sorumluluk araca devredilmez. Değişikliği depoya gönderen kişi koddan, birleştirme isteğini onaylayan kişi ise onaydan sorumludur. Makalenin ortaya koyduğu mantığa göre değişiklik üretim ortamını bozarsa suç geliştirme ortamına veya araca atılamaz; sorumluluk, değişikliğin geçmesine izin veren kişilere ve sürece aittir.
Bu dönüşüm iş birliğiyle ilgili başka bir zorluk da yaratıyor. Aracı, tek bir geliştiricinin ürün gereksinimlerinden DevOps işlemlerine kadar uzanan görevleri yerine getirmesini sağlayabilir; bu da geliştiricinin belirli bir kod tabanıyla ilgilenen tasarımcı veya uzman mühendisle iletişim kurmayan, tek başına bir adaya dönüşme olasılığını artırır. Makale, araç işi hızla gerçekleştirebilecek gibi görünse bile bu yolun büyük birleştirme isteklerine yol açabileceği konusunda uyarıyor.
Temel sonuç, yeni araçların yararsız olduğu değil; yalnızca araçları iyileştirmenin bozuk bir geliştirme döngüsünü düzeltmeye yetmeyeceğidir. Kurumların, geliştiricilerin anlayıp benimsediği süreçlere, aracıların rolü için net sınırlara, fiilî sorumluluk taşıyan insan incelemesine ve geliştirmenin kapalı, bireysel bir faaliyete dönüşmesini önleyen iş birliğine ihtiyacı vardır. Böylece araçlar ve kültür, yapay zekâya dayalı bir geliştirme ortamında yeni bir güven oluşturmak için birlikte çalışabilir.