Developer Memperdebatkan Perpindahan dari Pemrograman Deterministik karena LLM Memperkenalkan Ketidakpastian

Tim Komunitas BigGo
Developer Memperdebatkan Perpindahan dari Pemrograman Deterministik karena LLM Memperkenalkan Ketidakpastian

Pemikiran terbaru Martin Fowler tentang LLM dan pengembangan perangkat lunak telah memicu perdebatan sengit tentang apakah dunia pemrograman harus menerima atau menolak sifat non-deterministik dari alat coding bertenaga AI. Diskusi ini mengungkap ketegangan fundamental antara prinsip-prinsip rekayasa perangkat lunak tradisional dan realitas yang muncul dari pengembangan berbantuan AI.

Perpecahan Besar Determinisme

Komunitas pemrograman menemukan dirinya terpecah pada pertanyaan inti: haruskah pengembangan perangkat lunak meninggalkan akar deterministiknya? Pemrograman tradisional selalu dibangun pada prinsip bahwa dengan input yang sama, kode akan menghasilkan output yang identik setiap saat. Prediktabilitas ini telah menjadi kekuatan sekaligus karakteristik yang menentukan bidang ini.

Namun, LLM beroperasi secara berbeda. Mereka menghasilkan respons melalui proses probabilistik, yang berarti pertanyaan yang sama dapat menghasilkan jawaban yang berbeda setiap kali. Beberapa developer melihat ini sebagai langkah mundur, berargumen bahwa memperkenalkan ketidakpastian ke dalam bidang yang secara inheren logis akan merusak kemajuan rekayasa selama puluhan tahun. Yang lain melihatnya sebagai evolusi, menyarankan bahwa rekayasa perangkat lunak harus bergabung dengan disiplin rekayasa lain yang selalu berurusan dengan variabilitas dan toleransi.

Perdebatan meluas melampaui filosofi ke dalam kekhawatiran praktis. Developer melaporkan menghabiskan waktu yang signifikan untuk men-debug kode yang dihasilkan AI yang tampak benar tetapi mengandung kesalahan halus. Fenomena 90% bagus, 10% rusak telah menjadi pengalaman umum, di mana LLM dengan cepat menghasilkan kode yang sebagian besar fungsional tetapi memerlukan tinjauan dan penyempurnaan yang ekstensif.

Perang Alur Kerja: Auto-complete vs. Manipulasi Kode Langsung

Wawasan kunci dari diskusi komunitas berpusat pada bagaimana developer benar-benar menggunakan LLM. Sebagian besar survei fokus pada fungsionalitas auto-complete dasar melalui alat seperti GitHub Copilot , tetapi praktisi berpengalaman melaporkan mendapatkan hasil yang lebih baik dari alur kerja yang memungkinkan LLM untuk langsung membaca dan mengedit seluruh file sumber.

Perbedaan ini penting karena mempengaruhi pengukuran produktivitas dan strategi adopsi. Developer yang memperlakukan LLM sebagai alat auto-complete canggih sering melaporkan peningkatan yang sederhana, sementara mereka yang menggunakan pendekatan yang lebih canggih mengklaim peningkatan produktivitas yang dramatis. Kesenjangan ini menunjukkan bahwa penelitian saat ini mungkin mengukur metrik yang salah dan menarik kesimpulan yang tidak lengkap tentang dampak AI pada pengembangan perangkat lunak.

Beberapa developer telah menemukan kesuksesan dengan menggabungkan Test-Driven Development dengan LLM, menggunakan AI untuk menghasilkan tes dan kode implementasi dalam siklus iteratif. Pendekatan ini menyediakan kerangka kerja untuk mengelola ketidakpastian yang melekat dalam kode yang dihasilkan AI sambil mempertahankan standar kualitas.

Pola Penggunaan LLM dalam Pengembangan Perangkat Lunak

Pendekatan Tradisional (Paling Umum)

  • Fungsi pelengkapan otomatis ( GitHub Copilot )
  • Kesadaran konteks yang terbatas
  • Peningkatan produktivitas yang sederhana

Pendekatan Lanjutan (Nilai Lebih Tinggi)

  • Pembacaan dan pengeditan file secara langsung
  • Konteks codebase yang lengkap
  • Peningkatan produktivitas yang signifikan
  • Dikombinasikan dengan Test-Driven Development

Halusinasi sebagai Fitur, Bukan Bug

Mungkin wawasan paling provokatif dari diskusi adalah pembingkaian ulang halusinasi AI sebagai fitur inti daripada cacat. Perspektif ini menunjukkan bahwa LLM tidak membedakan antara output yang akurat dan tidak akurat - mereka hanya menghasilkan teks berdasarkan pola dalam data pelatihan mereka.

Yang dilakukan LLM hanyalah menghasilkan halusinasi, hanya saja kita menemukan beberapa di antaranya berguna.

Pemahaman ini mengarah pada rekomendasi praktis: ajukan pertanyaan yang sama beberapa kali, bandingkan respons, dan gunakan variasi sebagai informasi tambahan. Untuk perhitungan numerik, developer harus menanyai LLM setidaknya tiga kali untuk mengukur konsistensi, meskipun banyak yang berpendapat bahwa perhitungan deterministik tidak boleh didelegasikan ke sistem probabilistik sejak awal.

Praktik Terbaik untuk Generasi Kode LLM

Strategi Query:

  • Ajukan pertanyaan yang sama beberapa kali
  • Variasikan kata-kata di antara percobaan
  • Bandingkan respons untuk konsistensi
  • Gunakan LLM untuk menganalisis perbedaan antara jawaban

Untuk Perhitungan Numerik:

  • Query minimal 3 kali
  • Jangan pernah gunakan LLM untuk perhitungan deterministik
  • Buat kode untuk perhitungan alih-alih komputasi langsung
  • Selalu verifikasi hasil secara independen

Risiko Keamanan dan Perluasan Permukaan Serangan

Integrasi LLM ke dalam alur kerja pengembangan memperkenalkan kerentanan keamanan baru yang masih dipelajari komunitas untuk diatasi. Agen AI dengan akses ke data pribadi, paparan konten yang tidak terpercaya, dan kemampuan komunikasi menciptakan apa yang disebut ahli keamanan sebagai trifecta mematikan untuk serangan potensial.

Aktor jahat dapat menanamkan instruksi tak terlihat di halaman web yang menipu LLM untuk mengekstrak informasi sensitif atau melakukan tindakan yang tidak sah. Agen AI berbasis browser menghadapi risiko khusus, karena mereka dapat dimanipulasi untuk mengakses situs perbankan atau layanan sensitif lainnya atas nama pengguna. Kekhawatiran ini telah membuat beberapa peneliti keamanan mempertanyakan apakah alat bertenaga AI tertentu dapat dibuat cukup aman.

Risiko Keamanan: Tiga Serangkai Mematikan untuk Agen AI

Tiga Komponen Kritis:

  1. Akses ke data pribadi - AI dapat membaca informasi sensitif
  2. Paparan terhadap konten yang tidak terpercaya - Halaman web, input pengguna, sumber eksternal
  3. Kemampuan komunikasi eksternal - Kemampuan untuk mengirim data keluar dari sistem

Vektor Serangan:

  • Instruksi tak terlihat di halaman web (font 1pt putih-di-atas-putih)
  • Manipulasi browser untuk transaksi tidak sah
  • Eksfiltrasi data melalui permintaan yang tampak tidak berbahaya

Pertanyaan Gelembung dan Ketidakpastian Masa Depan

Meskipun mengakui bahwa AI mewakili gelembung teknologi klasik, komunitas pengembangan tetap terbagi pada waktu dan dampak akhir. Paralel historis dengan gelembung teknologi sebelumnya menawarkan harapan dan peringatan - beberapa perusahaan akan bertahan dan berkembang, sementara yang lain akan menghilang ketika gelembung pecah.

Ketidakpastian meluas ke implikasi karier untuk developer di semua tingkatan. Developer junior menghadapi tantangan khusus, karena alat AI dapat menghilangkan jalur pembelajaran tradisional sambil secara bersamaan memerlukan keterampilan baru untuk bekerja secara efektif dengan sistem AI. Developer senior harus menyesuaikan peran mereka untuk lebih fokus pada arsitektur dan pengawasan daripada produksi kode langsung.

Meskipun ada gangguan, sebagian besar developer setuju bahwa eksperimen dan pembelajaran tetap penting. Teknologi berkembang dengan cepat, dan pendekatan yang paling efektif masih ditemukan melalui trial and error di seluruh komunitas.

Dunia pemrograman berdiri di persimpangan antara tradisi deterministik dan inovasi probabilistik. Meskipun tujuan akhir tetap tidak jelas, perjalanan ini membentuk kembali bagaimana perangkat lunak dibangun dan siapa yang membangunnya.

Referensi: Some thoughts on LLMs and Software Development