27 puan yazan GN⁺ 2024-12-07 | 12 yorum | WhatsApp'ta paylaş
  • Geliştiricilerin yapay zekayı kullanırken izlediği iki ana kalıp var
    • Bootstraper:
      • Bolt, v0, screenshot-to-code AI gibi araçları kullanarak hızlıca ilk prototipi oluşturur.
      • Bir tasarımı veya fikri başlangıç noktası olarak alıp yapay zekayla ilk kod tabanını üretir ve birkaç saat ya da birkaç gün içinde çalışan bir prototip geliştirir
    • İteratör:
      • Cursor, Cline, Copilot, WindSurf gibi araçları günlük geliştirme sürecinde kullanarak kod tamamlama, karmaşık refaktörler, test ve dokümantasyon üretimi yapar

Usta geliştiricilerle yeni başlayan geliştiriciler arasında yapay zeka kullanımı farkı

  • Usta geliştiriciler: Yapay zekanın önerdiği kodu sürekli refaktör eder, edge case'leri ele alır, tip tanımlarını güçlendirir ve mimari kararları gözden geçirir
  • Yeni başlayan geliştiriciler: Yapay zeka çıktısını olduğu gibi kabul etme eğilimindedir; bu da gerçek ortamda sorun çıkarabilecek, "iskambil kağıdından yapılmış ev" benzeri kod üretme riskini doğurur

Yapay zeka araçlarının paradoksu: bilgi paradoksu

  • Usta geliştiriciler: Zaten bildikleri işleri yapay zeka ile hızlandırır
  • Yeni başlayan geliştiriciler: Ne yapmaları gerektiğini öğrenmek için yapay zekayı kullanmaya çalışır
  • Sonuç: Yapay zekadan alınan verim, yetkinlik seviyesine göre büyük ölçüde değişir

Uzman olmayanların yapay zeka kodlama araçlarını kullanırken yaşadığı %70 sorunu

  • İlk ilerleme: Yapay zeka araçlarıyla istenen özelliğin %70'i hızlıca hayata geçirilebilir
  • Kalan %30: Küçük bir hatayı düzeltmeye çalışırken yeni sorunlar çıkar ve bunları çözmeye çalışırken daha da fazla problem doğuran bir kısır döngüye girilebilir

Yapay zeka araçlarını etkili kullanmak için stratejiler

  • Yapay zeka taslağı kalıbı: Yapay zekayla temel implementasyonu üretip ardından manuel olarak inceleyip refaktör etmek
  • Yapay zekayı öğrenme aracı olarak kullanmak: Sürekli diyalog yoluyla yapay zekanın ürettiği kodu anlamak, temel programlama kavramlarını birlikte öğrenmek ve bilgiyi aşamalı olarak biriktirmek
  • Yapay zekanın sınırlarını kabul etmek: Yapay zeka araçları prototip geliştirme, öğrenmeye destek ve fikir doğrulama için faydalıdır; ancak üretime hazır ve bakımı yapılabilir yazılım geliştirmek için hâlâ gerçek mühendislik bilgisi gerekir

Ajanik yazılım mühendisliğinin yükselişi

  • Ajanik sistemler: Yalnızca komutlara yanıt vermenin ötesine geçip planlayabilen, uygulayabilen ve yineleme yapabilen sistemlere dönüşüyor
  • Gelecek görünümü: Yapay zeka, geliştiricilerin yerini almak yerine giderek daha proaktif bir işbirlikçi olarak, insan yönlendirmesine ve uzmanlığına saygı duyarak sorunları inisiyatif alıp çözen bir yöne ilerliyor
  • Yapay zeka, zaten bilinen kalıpları uygulamada, fikirleri hızla prototiplemede ve farklı yaklaşımları keşfetmede şimdiden yararlı
  • Tekrarlayan ve rutin kodlama işlerini otomatikleştirerek daha ilginç problemlere odaklanmayı mümkün kılıyor

Yapay zeka araçlarını kullanırken dikkat edilmesi gerekenler

  • Kullanıcı deneyiminin önemi: Yapay zekayla hızlıca demo hazırlanabilir; ancak gerçek kullanıcıların karşılaşabileceği hata mesajları, edge case'ler ve UI durumları özenle ele alınmazsa bu kullanıcıya rahatsızlık verebilir
  • Zanaatkârlığın geri dönüşü:
    • Yapay zeka yazılım geliştirmeyi hızlandırdı, ancak gerçek tüketici kalitesinde deneyim üretme sanatını kaybetme riski de var.
    • Yapay zeka araçları rutin kodlama işlerini üstlenerek geliştiricilerin önemli ayrıntılara odaklanmasına yardımcı olabilir.

Sonuç

  • Yapay zekanın rolü:
    • Yapay zeka daha fazla kodu daha hızlı yazmak için değil, daha iyi yazılım inşa etmeye yardımcı olmak içindir
    • Yapay zeka yazılım kalitesini dramatik biçimde artırmaz.
  • Yazılım geliştirmenin zor kısımları hâlâ insan yargısı gerektirir.
  • Yapay zeka, daha iyi çözümler bulmak için hızlı keşif yapılmasını mümkün kılar; ancak iyi yazılım pratiklerinin yerini alamaz.
  • İnsanın sorumluluğu: Yapay zekayı akıllıca kullanıp mühendislik ilkelerini korumak ve yazılım kalitesini artırmak hâlâ insanların görevidir

12 yorum

 
dbs0829 2024-12-10

Teknolojiden yararlanmak iyi ama düşünmeyi bile ona devreden çok fazla insan var; özellikle eğitim gibi ortamlara çıktığımda bunu daha da çok görüyorum, bu yüzden endişeleniyorum. Açıkçası ben böyle insanlarla çalışmak istemem.

 
kandk 2024-12-09

IDE'lerin geliştiricileri bozduğu tartışmasına benziyor olabilir..

 
savvykang 2024-12-07

Müşterinin ürettiği AI kodunu düzeltmekten yoruldum
Karar vermeye AI başladığında, ortada bir çözüm kalmamış gibi görünüyor

 
iolothebard 2024-12-07

AI’ye geri bildirim verince iyileşiyor gibi görünür ama… bir noktada aniden bozulur. O anı fark etmenin bir yöntemi gerekir. Ve o an geldiğinde AI’yi bırakıp bırakmamaya ya da baştan başlayıp başlamamaya karar vermek gerekir.

 
yadameda 2024-12-07

production-ready (metinde üretime hazır) ifadesini nasıl çevirirsek daha akıcı olur?

gerçek hizmette kullanıma hazır seviye ürün düzeyi

 
kandk 2024-12-09

Yayın için hazır!

 
binaryeast 2024-12-08

Ben genelde bunu release edilebilir veya release’e hazır olarak çevirmeyi tercih ediyorum.

 
jhj0517 2024-12-08

"Yayımlanabilir" kulağa hoş geliyor!

 
bus710 2024-12-08

"(gerçek kullanım veya müşteri kullanımı için) dağıtıma hazır" ifadesi nasıl olur?

 
savvykang 2024-12-07

Peki ya sahada doğrulanmış olanlar?

 
soomtong 2024-12-09

Gerçek dünya doğrulaması için genelde battle tested ifadesi kullanılıyor gibi görünüyor.

 
GN⁺ 2024-12-07
Hacker News görüşü
  • AI, geçmişteki birçok araç gibi programlamanın bir kısmının yerini almaya çalıştı. Ancak özdeki iş hâlâ insan zihni gerektiriyor

    • AI, karmaşıklık yönetimi gibi özsel işleri yerine getiremiyor
    • AI İngilizce iletişim kurabildiği için önceki denemelerden daha esnek, ancak temel problem çözmede hâlâ sınırlamaları var
  • AI, ekibin hevesli junior geliştiricisi gibi

    • Hem junior geliştiriciler hem de AI araçları çok hatalı ve gereğinden uzun kod yazma eğiliminde
    • AI geri bildirimle öğrenemediği için aynı hataları tekrar tekrar gözden geçirmek gerekiyor
  • AI araçları kullanılarak yeni araçlar hızlıca geliştirilebildi

    • AI sayesinde günler sürecek işler birkaç saatte tamamlanabildi
    • AI tüm işin %70'ini ya da %42,5'ini yapmış olsa bile bu büyük bir iyileşmeydi
  • Junior geliştiriciler için AI iki ucu keskin bir kılıç

    • AI'yi öğrenmede kestirme yol olarak kullanmak, öğrenme sürecini atlamaya yol açıyor
    • Ancak AI'yi mentor olarak kullanmak derinlemesine öğrenmeyi mümkün kılıyor
    • AI junior geliştiricilerin işini ikame ederse işe alım sorunları ortaya çıkabilir
  • "Güven ama doğrula" kalıbı önemli

    • AI'nin yazdığı kod derleniyor ve test senaryolarını geçiyorsa bu olumlu bir işaret
    • Örneğin, Rust'ın csscolorparser'ını Python'a bind eden bir proje var
  • AI kodu hızlı yazabiliyor ama öğrenme sürecini hızlandırmıyor

    • AI'nin yardımıyla daha hızlı gelişmek mümkün, ancak iyi yapılandırılmış kod yazmak yine de zaman alıyor
  • Copilot karmaşık işlerde başarısız oluyor

    • AI ölçeklenebilirlik konusunda sınırlar gösteriyor
    • Gelecekte kuantum hesaplama gibi teknolojilere ihtiyaç duyulacak
  • GenAI, gereksinimleri iyi bilinen çözümlerde derinlikli sonuçlar üretebilir

    • Karmaşık problemlerde ancak yaklaşık %50 başarı sağlanabiliyor
    • Ayrıntılı görev listeleri çıkarıp her görevi tek tek çözme yöntemi kullanılıyor
  • AI'nin yaptığı işi doğrulamak önemli

    • AI'nin önerdiği kod çalıştırılabiliyordu, ancak güvenlik sorunu olan bir kütüphane kullanıyordu
    • AI kodu çalışabilir olsa bile doğrulama gerekli
  • AI ile üretkenliğin büyük ölçüde arttığını söyleyen insanlarla gerçekte karşılaşmak zor

    • AI araçları kullanışlı, ancak sadece kodlamanın belli bölümlerinde işe yarıyor