Fase bulan madu dengan alat coding bertenaga AI mungkin akan segera berakhir. Meskipun Large Language Models ( LLMs ) telah mengesankan para developer dengan kemampuannya menghasilkan kode dengan cepat, semakin banyak insinyur berpengalaman yang menunjukkan keterbatasan fundamental yang mencegah alat-alat ini benar-benar membangun software secara mandiri.
Diskusi ini berpusat pada wawasan kritis dari praktik rekayasa perangkat lunak: pemrograman yang efektif bukan hanya tentang menulis kode, tetapi tentang mempertahankan model mental yang jelas tentang apa yang seharusnya dilakukan kode versus apa yang sebenarnya dilakukannya. Proses iteratif membangun, menguji, dan memperbaiki berdasarkan model mental ini tampaknya menjadi area di mana AI saat ini mengalami kekurangan.
Masalah Model Mental
Isu utamanya bukan karena LLM tidak bisa menulis kode - mereka sebenarnya cukup baik dalam hal itu. Masalahnya terletak pada ketidakmampuan mereka untuk mempertahankan pemahaman yang konsisten tentang proyek-proyek kompleks dari waktu ke waktu. Ketika tes gagal atau bug muncul, sistem AI ini sering kali menggunakan tebakan daripada debugging sistematis. Mereka kesulitan dengan penghilangan konteks, menderita bias recency di mana informasi terbaru mengalahkan konteks sebelumnya, dan sering menghalusinasi detail yang tidak ada.
Hal ini menciptakan siklus yang membuat frustrasi bagi para developer. AI mungkin menulis kode yang mengesankan pada awalnya, tetapi seiring kompleksitas bertambah, ia mulai kehilangan jejak arsitektur sistem secara keseluruhan. Ketika masalah muncul, ia lebih cenderung menghapus semuanya dan memulai dari awal daripada secara metodis mengidentifikasi dan memperbaiki akar masalah.
Keterbatasan Utama LLM dalam Pengembangan Perangkat Lunak:
- Penghilangan Konteks: Buruk dalam menemukan konteks yang hilang dalam proyek kompleks
- Bias Kebaruan: Terlalu menekankan informasi terbaru sambil melupakan konteks sebelumnya
- Halusinasi: Sering kali menciptakan detail yang tidak ada dalam basis kode
- Pemeliharaan Model Mental: Tidak dapat mempertahankan pemahaman yang konsisten di seluruh iterasi
- Pendekatan Debugging: Cenderung menebak solusi daripada secara sistematis mengidentifikasi akar penyebab
Kemampuan dan Keterbatasan Saat Ini
Meskipun ada keterbatasan ini, LLM telah menemukan titik manisnya dalam pengembangan software. Mereka unggul dalam menghasilkan kode boilerplate, menulis dokumentasi, dan menangani tugas-tugas pemrograman rutin yang telah dilakukan berkali-kali sebelumnya. Banyak developer melaporkan peningkatan produktivitas yang signifikan ketika menggunakan AI untuk tugas-tugas tingkat mikro ini.
Namun, teknologi ini tampaknya telah mencapai plateau dalam beberapa bulan terakhir. Sementara peningkatan dari GPT-2 ke GPT-3 sangat dramatis, keuntungan dari GPT-3 ke GPT-4 dan seterusnya lebih bersifat incremental. Sebagian besar kemajuan terbaru berasal dari kurasi dataset yang lebih baik dan peningkatan pengalaman pengguna daripada terobosan fundamental dalam kemampuan penalaran.
Kelebihan vs Kelemahan LLM:
Hal yang Dikuasai LLM dengan Baik | Hal yang Sulit Dilakukan LLM |
---|---|
Menghasilkan kode boilerplate | Mempertahankan konteks di seluruh proyek |
Menulis dokumentasi | Men-debug masalah kompleks secara sistematis |
Menangani tugas pemrograman rutin | Membangun dan memelihara model mental |
Mensintesis persyaratan | Melakukan iterasi pada masalah kompleks |
Pembuatan kode dari spesifikasi yang jelas | Memutuskan apakah akan memperbaiki kode atau tes |
Perdebatan Scaling
Komunitas teknologi tetap terbagi mengenai apakah keterbatasan saat ini dapat diatasi melalui scaling. Beberapa orang berpendapat bahwa LLM akan terus membaik seperti halnya internet awal, ponsel, dan mobil listrik - teknologi yang awalnya buruk tetapi terus membaik melalui iterasi.
Mobil-mobil pertama sering rusak. Mereka memiliki jangkauan terbatas. Tidak ada pasokan suku cadang yang luas untuk mereka. Tidak ada jaringan luas stasiun bahan bakar untuk menyediakan energi bagi mereka. Kuda adalah metode yang terbukti.
Namun, para kritikus menunjukkan bahwa LLM menghadapi tantangan yang berbeda dari contoh-contoh historis ini. Tidak seperti mobil atau ponsel, yang memiliki masalah rekayasa yang bisa diselesaikan dengan waktu dan sumber daya, LLM mungkin memiliki keterbatasan arsitektural yang fundamental. Desain inti mereka - memprediksi teks berikutnya yang paling mungkin berdasarkan probabilitas - mungkin secara inheren tidak cocok untuk jenis penalaran yang diperlukan dalam pengembangan software yang kompleks.
Siklus Rekayasa Perangkat Lunak (Manusia vs LLM):
Insinyur Manusia:
- Membangun model mental dari kebutuhan
- Menulis kode untuk mengimplementasikan kebutuhan
- Membangun model mental tentang apa yang sebenarnya dilakukan kode
- Mengidentifikasi perbedaan dan memperbarui kode/kebutuhan secara sistematis
Perilaku LLM:
- Menghasilkan kode berdasarkan prompt
- Menganggap kode yang dihasilkan bekerja dengan benar
- Ketika tes gagal, menebak-nebak solusi
- Ketika frustrasi, menghapus semuanya dan memulai dari awal
Pendekatan Praktis Bergerak Maju
Daripada menunggu peningkatan terobosan, banyak developer menyesuaikan alur kerja mereka untuk bekerja dalam keterbatasan AI saat ini. Ini termasuk memecah masalah kompleks menjadi bagian-bagian yang lebih kecil, mempertahankan dokumentasi yang jelas yang membantu AI memahami konteks proyek, dan menggunakan proses pengembangan terstruktur yang memandu AI melalui praktik rekayasa perangkat lunak yang tepat.
Beberapa tim bereksperimen dengan sistem agen hierarkis, di mana instance AI yang berbeda menangani aspek pengembangan yang berbeda sementara manusia mempertahankan model mental keseluruhan. Yang lain fokus pada penggunaan AI untuk tugas-tugas spesifik yang terdefinisi dengan baik sambil menjaga manusia tetap mengendalikan keputusan arsitektur dan desain.
Konsensus yang muncul dari komunitas developer menunjukkan bahwa meskipun LLM adalah alat yang berharga untuk mempercepat aspek-aspek tertentu dari pengembangan software, mereka belum siap untuk menggantikan insinyur manusia. Teknologi ini bekerja paling baik ketika diperlakukan sebagai bentuk autocomplete yang canggih daripada developer otonom. Kesuksesan datang dari memahami keterbatasan ini dan menyusun pekerjaan sesuai dengan itu, daripada mengharapkan AI untuk menangani kompleksitas penuh pengembangan software modern secara mandiri.
Referensi: Why LLMs Can't Really Build Software