6 puan yazan baeba 5 시간 전 | Henüz yorum yok. | WhatsApp'ta paylaş

Özet genel bakış

  • Temel iddia

    • Yapay zeka doğrudan kod yazma, düzeltme ve test etme düzeyine ulaştıkça, geliştiricinin rolü basitçe kod yazmaktan problemi tanımlama, işi tasarlama, doğrulama, bağlam yönetimi ve ürünleştirmeyi destekleme yönüne kayıyor.
  • Yapısal nedenler

    • Yapay zeka kod üretim hızını büyük ölçüde artırdı, ancak kodun hemen iyi bir ürüne dönüşmesi ayrı bir konu.
    • Gereksinimler, dokümantasyon, test, yapılandırma, UX değerlendirmesi ve bakım yapılabilirlik gibi kod dışı alanların önemi daha da arttı.
  • Başlıca örnekler

    • Playwright üzerinden yapay zekanın tarayıcı testlerini de yürütmesini sağlayan deneyim.
    • Tekrarlayan işleri komutlar, beceriler ve iş akışları olarak tanımlama deneyimi.
    • Yapay zekayla oluşturulan bir frontend prototipinin dışarıdan çok iyi görünmesine rağmen iç yapısının kırılgan olduğu örnek.
  • Çözüm yönü

    • Yapay zekaya yalnızca kodu bırakmak yetmez; geliştirme sürecinin tamamındaki prosedürleri ve ölçütleri de birlikte tasarlamak gerekir.
    • Geliştirici, yapay zeka çıktısını gözden geçirmeli, bağlamı kaydetmeli ve bunun sürdürülebilir bir ürüne dönüşmesi için yapıyı düzenlemelidir.

Giriş

Yapay zeka ile kodlama çağındaki dönüşüm

  • Yazı, “İnsanların doğrudan kod yazmadığı bir çağda geliştirici ne yapmalı?” sorusuyla başlıyor.
  • Yazar, geçmişte yapay zekanın halüsinasyon ve hata ürettiği için son kararın insan tarafından verilmesi gerektiğini düşünüyordu.
  • Ancak son dönemde yapay zeka modellerinin performansındaki artışla birlikte, yapay zekanın issue anlama, dosya gezme, kod düzeltme ve testleri geçme seviyesine ulaştığını değerlendiriyor.
  • Bu değişimle birlikte geliştirici, yapay zekayı sadece yardımcı araç olarak kullanmanın ötesine geçip, geliştirme prosedürünün kendisini yapay zekaya uygulatma yönünü düşünmeye başlıyor.

Temel problem bilinci

  • Yapay zeka artık iyi kod yazabiliyor, ancak bu geliştiricinin rolünün ortadan kalktığı anlamına gelmiyor.
  • Aksine, kodlama otomatikleştikçe geliştirmenin diğer unsurları daha görünür hale geliyor.
  • Gereksinimleri düzenleme, karar kayıtlarını tutma, test tasarımı, kod yapısını yönetme ve ürün deneyimini denetleme gibi alanlar geliştiricinin temel görevleri olarak öne çıkıyor.

Ana bölüm

1. Yapay zeka, kod yazma aracından işi yürüten özneye geçti

  • Yazar, yapay zekanın artık sadece kod parçaları üretmenin ötesine geçerek gerçek geliştirme iş akışını işleyebildiğini düşünüyor.
  • Geçmişte yapay zekanın çıktısını insanın sürekli izlemesi ve düzeltmesi gerekiyordu; artık ise işi yapay zekaya verip sonucu denetlemek mümkün hale geldi.
  • SWE Bench gibi benchmark'lardaki performans artışı bu değişimi gösteren bir işaret olarak anılıyor.
  • Temel değişim, sorunun “Yapay zeka kod yazabilir mi?” olmaktan çıkıp “Yapay zekaya işin ne kadarını devredebiliriz?” haline gelmesi.

2. Yapay zeka başarısız olduğunda sorun sadece ‘yetersiz yetenek’ değildir

  • Yapay zeka hâlâ her zaman başarılı olmuyor.
  • Hataların tekrar ettiği ya da düzeltildiği söylense bile gerçek ekranda sorunların sürdüğü durumlar yaşanıyor.
  • Yazar, ilk başta buna insanın hatayı kopyalayıp yapay zekaya iletmesi yöntemiyle karşılık vermiş.
  • Daha sonra Playwright kullanarak yapay zekanın tarayıcıyı doğrudan açıp test etmesini sağladığında, insanın yaptığı doğrulama prosedürlerinin de yapay zekaya devredilebileceğini fark etmiş.
  • Bu örnek, yapay zekanın sınırı sandığımız bazı noktaların aslında kullanıcının açık talimat vermemiş olmasından kaynaklandığını gösteriyor.

3. AI Native düşüncesi, tüm prosedürü devretme yaklaşımıdır

  • Yazar, yapay zekayı yalnızca yardımcı araç olarak kullanan bakış açısından çıkıp, kendi yürüttüğü prosedürün tamamını yapay zekanın uyguladığı bir yöne geçiyor.
  • Tekrarlayan işleri komutlar, beceriler ve iş akışları haline getirerek kendi örtük bilgisini tanımlamaya çalışıyor.
  • Örnek olarak /plan, /prd, /debug, /refactor, /verify, /retrospect gibi komut akışları oluşturuyor.
  • Buradaki önemli nokta, yapay zekaya sadece “kod yaz” demek değil; ne zaman soru soracağı, ne zaman duracağı ve ne zaman doğrulama yapacağı gibi kuralları da belirlemek.
  • Böylece geliştirici kendi çalışma biçimini ve karar ölçütlerini, yapay zekanın yeniden kullanabileceği bir yapıya dönüştürüyor.

4. Kişisel birikim hızla araç özelliklerine dönüşür

  • Yazarın bizzat oluşturduğu komutlar ve iş akışları, zamanla Skill, memory, hooks, orchestration gibi resmî özellik ve kavramlar olarak ortaya çıkıyor.
  • Bireyin keşfettiği yapay zeka kullanım metodolojileri, etkili oldukça hızla ürün özelliğine ya da ortak yönteme dönüşüyor.
  • Bu nedenle yapay zekayı iyi kullanmaya yönelik belirli prompt'lar ya da ipuçlarıyla uzun vadeli farklılaşma yaratmak zor.
  • Önemli olan, metodolojinin kendisinden çok, o yaklaşımı gerçek problemlere uygulayıp ne kadar ileri götürdüğünüz ve hangi sınırlarla karşılaştığınızdır.

5. Yapay zeka, geliştiricinin ele alabileceği problemlerin ölçeğini büyütür

  • Yapay zeka, yazarın geçmişte maliyet ve zaman nedeniyle denemediği büyük fikirleri gerçekten test etmesini mümkün kılıyor.
  • Örneğin kodu ve dokümanları bir canvas gibi sererek gösteren araçlar, MD viewer, kod analiz araçları ve geliştirme destek araçlarını hızlıca deniyor.
  • Buradaki esas nokta, yapay zekanın bitmiş ürünü anında vermesi değil, başlama eşiğini düşürmesi.
  • Geliştirici böylece “Bunu yapabilir miyim?” düşüncesinden “Önce ne kadar ileri götürebileceğime bakalım” düşüncesine geçiyor.

6. Büyük problemlerle uğraşınca kod dışındaki geliştirme işleri görünür olur

  • Yapay zekayla kod üretimi arttıkça geliştiricinin tüm kodu doğrudan okuyup bağlamı zihninde tutması zorlaşıyor.
  • Kod bizzat yazılırken doğal olarak biriken bağlam, kararlar ve yapısal anlayış, kodlama işi yapay zekaya verildiğinde otomatik olarak geride kalmıyor.
  • Bu yüzden dokümantasyon, testler, issue'lar, iş raporları ve değişiklik gerekçelerinin kaydı önem kazanıyor.
  • Bunlar yalnızca yönetim işi değil, yapay zeka çağında geliştirme bağlamını korumanın temel araçları haline geliyor.
  • Metin, kodlama becerisi kadar bağlamı ve muhakemeyi koruma becerisinin de önemli hale geldiğini vurguluyor.

7. Commit ve test sayısındaki artış doğrudan ürün iyileşmesi anlamına gelmez

  • Yapay zeka kullanıldığında commit, dosya, test ve dokümantasyon sayısı hızla artabiliyor.
  • Ancak sayıların artması, ürünün gerçekten daha iyi hale geldiği anlamına gelmiyor.
  • Yeni özellikler eklenirken UX'in tuhaf kalması ya da testler geçse bile gerçek ekran akışının kararsız olması gibi sorunlar ortaya çıkıyor.
  • Yazar ilk başta bunu sadece kod kalitesi ve yapı problemi olarak görmeye çalışmış.
  • Ancak kod yapısını iyileştirmenin ürün deneyimini otomatik olarak iyileştirmediğini tecrübe ediyor.
  • Sonuçta kod üretimi ile ürün iyileştirmesi farklı meselelerdir ve ürün niteliği hakkında ayrıca değerlendirme gerekir.

8. Frontend, yapay zekanın özellikle kolay tökezlediği bir alandır

  • Yapay zeka, dashboard, landing page ve yönetim ekranı gibi inandırıcı ilk UI'ları hızlıca oluşturabiliyor.
  • Ancak gerçek ürün seviyesindeki frontend; design system, state management, erişilebilirlik, klavye kullanımı, istisna durumları ve kullanıcı akışları gibi karmaşık ölçütler gerektiriyor.
  • Frontend'deki pek çok gereksinim “daha doğal”, “daha az garip”, “seçilmiş gibi hissettiren” gibi muğlak ifadelerle anlatılıyor.
  • Yapay zeka bu belirsiz talepleri koda çevirirken sonuçlar kolayca dağılabiliyor.
  • Bu nedenle frontend'de yapay zekayı iyi kullanmak için, iyi çıkan kısımları sabitleyip yalnızca eksik parçaları yeniden düzelttirecek ölçütlere ve muhakemeye ihtiyaç var.

9. İyi sonuçlar tek seferde çıkmaz; yakınsama süreciyle oluşur

  • Yazar, bir planlamacının yapay zekayla hazırladığı yüksek tamamlanma düzeyine sahip bir prototipi görüp bakışını değiştiriyor.
  • O çıktı, tek bir özel prompt ile değil, “oluncaya kadar” tekrar tekrar düzeltilerek ortaya çıkmıştı.
  • Bu örnek, yapay zeka kullanımının özünün basit otomatik üretim değil, eksik kısımları sürekli görüp yeniden talep etme şeklindeki bir yakınsama süreci olduğunu gösteriyor.
  • İyi sonuç üreten kişi, yapay zekanın çıktısında neyin eksik olduğunu değerlendiren ve istediği seviyeye ulaşana kadar ısrarla ayar yapan kişidir.
  • Yapay zeka çağında da insanın ölçütleri, sezgisi ve sürekli denetimi sonuç farkını yaratıyor.

10. Geliştirici, potansiyeli olan çıktıları ürüne dönüştüren rolü üstlenir

  • Yapay zekayla üretilen sonuçlar dışarıdan iyi görünebilir ama iç kod yapısı kırılgan olabilir.
  • State management'ın kararsız olması, component sorumluluklarının belirsizleşmesi ya da testlerin gerçek akışı güvence altına alamaması gibi problemler doğabilir.
  • Geliştiricinin görevi bu tür çıktıları otomatik olarak düşük değerli saymak ya da çöpe atmak değildir.
  • Aynı zamanda bunları olduğu gibi ürünleştirmek de doğru değildir.
  • Geliştirici, potansiyeli olan çıktının daha ileri gidebilmesi için yapıyı düzenlemeli, riskleri işaretlemeli, test edilebilir birimler oluşturmalı ve bağlamı kaydetmelidir.
  • Yani geliştiricinin rolü, “her şeyi sonuna kadar tek başına yapan kişi” olmaktan çıkıp “yapay zeka ve insanın birlikte ürettiği sonuçları sürdürülebilir ürüne dönüştüren kişi” olmaya doğru genişliyor.

11. Yapay zeka çağında geliştirme rolü tek bir noktada birleşmez

  • Kodlama eşiği düştükçe geliştirmeye katılan insan tipleri de çeşitleniyor.
  • Planlamacılar, tasarımcılar, PM'ler ve alan uzmanları da yapay zeka sayesinde çalışan prototipler ya da iç araçlar üretebilir hale geliyor.
  • Bu, geliştiricinin gerekliliğinin ortadan kalktığı anlamına değil, geliştirmeyle ilgili rollerin daha da ayrıştığı anlamına geliyor.
  • Yazar bunu YouTube ekosistemine benzetiyor.
  • Nasıl YouTube video uzmanlarını ortadan kaldırmadıysa; oyuncu, editör, planlamacı, kanal yöneticisi ve platform üreticisi gibi rolleri çeşitlendirdiyse, yapay zeka da geliştirme rollerini çeşitlendirebilir.
  • Gelecekte derin sistemler kuranlar, prototipleri ürüne dönüştürenler, yapay zekanın iyi çalışabileceği katmanları oluşturanlar ve problemi doğrudan çözenler birlikte var olabilir.

Sonuç

Geliştirici, kodlama sonrasındaki geliştirmeyi tasarlamalı

  • Yazının vardığı sonuç, “Kod yazmaya devam etmeli miyiz, yoksa bırakmalı mıyız?” şeklindeki ikili bir ayrım değil.

  • Yapay zeka kodlamayı yapabildiğine göre, geliştiricinin yapay zekaya neyi devredeceğini ve neyi bizzat değerlendirmesi gerektiğini deneyim yoluyla öğrenmesi gerekiyor.

  • Özellikle şu yetkinlikler önem kazanıyor.

    • Problemi daha büyük ölçekte kurabilme becerisi
    • Tekrarlayan prosedürleri becerilere ve iş akışlarına dönüştürme becerisi
    • Gereksinimleri, dokümantasyonu, testleri ve issue'ları yapılandırma becerisi
    • Yapay zeka çıktısını denetleyip eksik noktaları yeniden tarif etme becerisi
    • Ham sonuçları sürdürülebilir ürüne dönüştürme becerisi
    • Kod dışındaki araçları ve iş akışlarını da yapay zekayla bağlayabilme becerisi

Temel mesaj

  • Yapay zeka, geliştiricinin umduğu kadar kusursuz değil; ama düşünüldüğünden çok daha fazla işi yerine getirebiliyor.
  • Yapay zekanın yapamayacağına karar vermeden önce, gerçekte ne kadarını yapabildiğini denemek gerekir.
  • Tersine, yapay zeka bir şeyi kolaylaştırdı diye üretilen sonuca olduğu gibi güvenilmemelidir.
  • Geliştirici; yapay zekanın ürettiği sonucu değerlendirme, yakınsatma, bağlamı koruma ve bunu ürüne bağlama rolünü üstlenmelidir.
  • Sonuç olarak yapay zeka çağındaki geliştirici, doğrudan çok kod yazan kişiden ziyade, yapay zeka ve insanın ürettiği çıktıların daha iyi sonuçlara dönüşmesi için problem, prosedür, ölçüt ve bağlam tasarlayan kişi olmaya yaklaşıyor.

Henüz yorum yok.

Henüz yorum yok.