Saya sudah memakai editor AI dari sejak beberapa tahun lalu (seperti yang sudah saya tuliskan di sini di tahun 2022). Awalnya hanya sekedar membantu melengkapi kode berikutnya dengan TAB completion, lalu berikutnya saya mulai memprogram dengan memberikan langkah spesifik menggunakan komentar di tengah-tengah fungsi (misalnya: use linear search to find matching elements).

Sekarang saya sudah mulai menggunakan AI Agents, walau cara lama kadang tetap dipakai karena masih berguna untuk algoritma kompleks. Dengan mode agent, kita bisa mendeskripsikan apa yang kita inginkan, misalnya: “buat halaman advanced tutorial, dengan layout yang sama dengan basic tutorial, tapi hanya bisa diakses member premium”, dan AI akan merencanakan semua langkahnya, lalu melakukan apa yang kita minta.
Ketika saya mencoba mode agent ini beberapa bulan lalu, kualitasnya masih agak random, kadang bagus, kadang sangat ngaco. Tapi berbagai model LLM baru sudah muncul yang memang ditraining dengan kemampuan agentic, dan sekarang hasilnya sangat bagus.
Dengan menggunakan Coding Agent (selanjutnya saya sebut agent saja), saat ini ada trend vibe coding, di mana kita memprogram dengan sekedar bahasa inggris dan mengikuti flow saja, tanpa harus melihat kode dengan detail. Sekedar contoh game yang saya vibe code: http://assembly-blocks.pages.dev/ Saya tidak menulis sebaris kode pun. Bahkan saya belum melihat implementasi dalamnya seperti apa, yang penting jalan (karena ini bukan program penting).

Daftar Isi
Teknologi saat ini
Saya akan mendeskripsikan kegunaan dan kekurangan teknologi LLM untuk coding agent saat ini. Karena perkembangan sangat cepat, maka yang saya tuliskan ini bisa tidak valid lagi beberapa hari atau bulan ke depan.
Saat ini saya sudah mencoba:
- Cursor
- Windsurf
- Github Copilot di vscode (termasuk juga coding agentnya yang berjalan di github)
- OpenAI Codex
- Claude Code
- Gemini CLI
- Aider
Saya akan membahas hal-hal yang umum saja, karena hal-hal yang spesifik sangat cepat berubah. Andaikan tool X tidak punya fitur Y hari ini, besok mungkin fiturnya sudah ditambahkan.
Cocok untuk greenfield project (alias proyek baru)
Dari percobaan saya, saat ini Coding Agent lebih cocok untuk kode baru. LLM punya berbagai pola yang sudah dimemorisasi, dan jika diminta membuat dari awal, maka pola source code yang dibuat akan sesuai ekspektasi. Ketika memakai claude code, kita bisa memakai /init
agar Claude membaca kode kita dan membuat ringkasan kode, ini bisa membantu untuk kode yang sudah ada, tapi tidak sebagus untuk kode yang dari awal dibuat oleh LLM.
Contoh kecil: saya membantu mengubah kode lama yang tidak konsisten memakai user_id
(integer) dan user_guid
(string). Programmer sebelumnya sering tidak konsisten membuat fungsi dengan parameter user
yang kadang artinya user_id
dan kadang user_gid
. Sebelum saya bereskan, LLM sering bingung dengan ini ketika diminta membuat fitur baru.
Coding best Practice sangat penting
Untuk bahasa yang memiliki tipe yang ketat, ketika kita mengcompile program, maka akan terlihat apakah ada error atau tidak pada syntax dan juga tipe datanya. Untuk bahasa yang dinamik seperti Python dan Javascript, kita perlu mensetup linter.
Jika kita mensetup linter (tool untuk mengecek syntax, coding best practice dan kadang juga bug security) serta aneka test, maka setiap perubahan yang dilakukan Coding Agent bisa dicek dulu apakah memang benar atau halusinasi. Dengan mensetup linter di proyek Javascript, dan meminta LLM menjalankan “npm run lint”, saya melihat bahwa banyak kesalahan berhasil ditemukan dan diperbaiki oleh LLM.
Menambahkan setup linter ke kode yang ada biasanya mudah, tapi untuk project lama kadang sudah terlalu banyak kode yang tidak memenuhi best practice sehingga perlu perubahan di source code agar tidak ada warning dari linter.
Mengubah banyak hal di source code tentunya berisiko kalau tidak ada test case. Jadi sebaiknya kode punya banyak test case. Kita bisa meminta LLM membuat test case, tapi masalahnya: tanpa linter, test case ini juga kadang salah (misalnya halusinasi salah path untuk require
).
Ini sebabnya kenapa saya menyatakan bahwa LLM ini cocok untuk proyek baru: lebih mudah ditangani. Kode lama juga bisa ditangani LLM dengan baik kalau kita sabar mensetup best practice.
Tidak deterministik
Sebenarnya ini sesuatu yang sangat jelas dan sudah diketahui umum, tapi sekedar pengingat saja bahwa kalau kita minta LLM mengerjakan sesuatu dua kali, hasilnya bisa tidak sama.
Saya pernah melakukan sesuatu di laptop dan lupa belum disinkronisasi ke desktop (buru-buru menutup laptop ketika sedang vibe coding dan belum dicommit). Saya sedang malas sinkronisasi, jadi saya ulangi saja request sebelumnya agar dikerjakan agent, dan ternyata pendekatannya jauh berbeda.
Kadang bingung
Coding Agent masih bisa bingung jika instruksi kurang jelas. Dengan interface agent yang interaktif, kesesatan ini bisa segera dicancel. Contohnya kadang Agent berkutat di file yang salah. Walau teorinya agent seperti Claude bisa mencari sendiri file yang akan diedit, jika kita beritahu lebih spesifik maka kerjanya akan lebih cepat.
AI yang kadang bingung ini menjadi alasan kenapa saya belum banyak memakai pendekatan non interaktif seperti codex (OpenAI) dan coding agent github copilot.
Kadang Berbahaya
Kadang LLM seenaknya mengubah flow program yang seharusnya. Contohnya: user harus menyetujui Terms and Conditions ketika pertama login. Ternyata loading TNC ini lambat dan bisa gagal (dokumen TNC-nya panjang), dan ketika diminta membuat solusi yang dilakukan adalah menghapus halaman itu.
Contoh lain adalah ketika diminta mengoptimasi file PNG dan JPG di suatu direktori, LLM berusaha menimpa file aslinya dengan hasil yang sudah diresize TANPA membuat backup lebih dulu.
Terkena batasan LLM Provider
Kadang LLM tiba-tiba tidak available atau throttled. Hal yang menyebalkan adalah ketika ini terjadi di tengah-tengah sebuah sesi. Dengan LLM kita jadi bergantung pada layanan yang tidak bisa kita prediksi ketersediannya. Contoh yang agak aneh yang saya alami hari ini adalah Gemini CLI. Teorinya dengan API key, maka kita akan diprioritaskan (karena membayar lebih), tapi saya malah kena throttle, dan ketika berpindah ke mode gratis malah bisa lanjut.

Selain batasan karena faktor langganan, kadang providernya sendiri memang sedang bermasalah. Kalau kita tergantung AI sepenuhnya, maka pekerjaan akan berhenti selama ada masalah.

Memiliki masalah security dan privacy
LLM kadang menghasilkan kode yang mengandung bug security. Setelah diberitahu, biasanya akan bisa memperbaiki bug itu. Tapi kadang kita harus sangat spesifik memberi tahu bugnya, tidak bisa sekedar “cari dan betulkan bug security”.
Meskipun di Terms of service tertulis bahwa data kita tidak akan disimpan dan tidak akan dipakai training, tapi ternyata ini bisa berubah jika ada perintah pengadilan. Selain itu kadang batasan ini terlalu kompleks seperti yang dijelaskan posting ini.

Model masih terbatas
Ketika ChatGPT versi pertama keluar, banyak orang merasa memiliki “trik prompting jenius” untuk mendapatkan hasil yang kita mau. Sekarang dengan adanya banyak model baru yang lebih cerdas, kita semakin sadar bahwa: Jika modelnya memang jelek/terbatas, prompting sepanjang dan sedetail apapun juga tidak akan berhasil.
Tiap model memiliki “kecerdasan” masing-masing, dan kadang jika memang sudah mentok dengan satu model, kita perlu switch ke model lain. Tapi setelah switch, tetap saja kadang masalah tidak bisa diselesaikan. Ini sering terjadi pada bahasa atau teknologi yang kurang populer.
Model Context Protocol (MCP)
MCP memungkinkan kita mengekspose tool agar bisa dipakai oleh LLM. Saat ini sudah ada banyak sekali server MCP untuk berbagai keperluan, tapi menurut saya masih kurang banyak dan berbagai MCP yang ada masih kurang fiturnya.
Masa Depan
Apakah AI akan segera menggantikan programmer? Selama komputer masih belum bisa berinterface langsung dengan pikiran kita dan membaca keinginan kita, maka kemampuan mengkomunikasikan keinginan ke komputer masih diperlukan.
Saya berusaha mengajarkan anak saya untuk mencoba vibe coding. Dia terpikir suatu game sederhana, tapi ternyata menjelaskan flow gamenya sendiiri butuh waktu mengetik yang cukup lama. Jadi skill menjelaskan sesuatu masih sangat dibutuhkan, dan ketika levelnya semakin detail, ini sudah mendekati pemrograman, bedanya tidak menggunakan sintaks bahasa pemrograman tertentu.
Masih butuh pemahaman dasar
Untuk bisa mengkomunikasikan dengan cepat dan akurat, kita perlu tahu aneka macam terminologi. Contoh sederhana: kita bisa meminta AI supaya: “website ini tampilannya kalau di desktop jadi besar, tapi di mobile jadi ikut mengikuti ukuran konten mobile”, atau kita bisa bilang “buat design web yang responsif”.
Atau kalau Anda pernah iseng melihat aneka macam prompt yang dipakai untuk membuat gambar dan video dengan AI, Anda bisa melihat bahwa ada banyak istilah-istilah yang dipakai untuk menggambarkan sesuatu (“vintage fujifilm style”, “hyper realistic”, “8-bit style”). Istilah-istilah ini tidak diketahui orang awam.
Saat ini untuk kasus gambar: kita bisa memberikan contoh gambar serupa, lalu meminta AI mendeskripsikan untuk mendapatkan istilah-istilah yang dipakai (asumsinya: punya contoh gambarnya). Dalam kasus aplikasi: kita bisa memberikan gambar sebuah aplikasi atau website, dan otomatis bisa menghasilkan kode untuk menghasilkan aplikasi atau webnya (asumsi: ada website serupa).
Untuk membuat sesuatu yang benar-benar baru, LLM masih harus dipandu dengan rinci. Segala macam interaksi dan logika di belakangnya harus kita tentukan sendiri.
Beberapa pekerjaan masih aman
Beberapa pekerjaan yang bekerja dengan hal-hal rahasia (misalnya sistem militer) akan aman, karena kemungkinan tidak boleh memakai LLM. Kalaupun LLM bisa dipakai, data trainingnya sangat sedikit karena memang sifatnya rahasia.
Sepertinya pekerjaan di dunia abu-abu atau dunia hitam juga aman. Saat ini berbagai LLM di-align agar tidak melakukan hal berbahaya atau illegal. Selain masalah moral, banyak hal-hal illegal tidak didokumentasikan/dirahasiakan. Jadi pekerjaan sejenis ini sepertinya malah aman.
Orang yang melakukan deployment dan integrasi AI juga masih aman. Selama AI belum bisa menginstall dirinya sendiri di sebuah perusahaan, akan dibutuhkan orang-orang untuk menghubungkan aneka teknologi dengan AI.
Penutup
Sebagian orang sangat pro dengan LLM untuk coding dan sebagian lagi anti. Sudah ada banyak sekali tulisan mengenai ini. Ini ada dua yang cukup merangkum semuanya: Yang pro: https://fly.io/blog/youre-all-nuts/ dan yang anti: https://blog.miguelgrinberg.com/post/why-generative-ai-coding-tools-and-agents-do-not-work-for-m
Sebagai progammer, saya merasa LLM tidak bisa dihindari, dan saya berusaha belajar lebih banyak dari awal supaya siap menghadapi masa depan, walau mungkin sebentar lagi saya sudah pensiun.
Satu hal yang perlu diperhatikan adalah: tetap butuh effort pikiran untuk vibe coding, jadi meski bisa memakai AI kapanpun juga, saya tidak langsung punya niat untuk membuat program, saya butuh menyisihkan waktu khusus. Saya masih perlu memperhatikan apakah aksi AI sudah benar, memastikan testnya benar, dan juga bersiap meminta pendekatan lain jika yang sekarang masih salah.
Untuk Anda yang tertarik masa depan software development, silakan lihat video ini:
Saya beruntung sudah memprogram jauh sebelum ada AI, jadi bisa membaca kode dengan cepat, dan bisa cepat melihat jika AI salah arah. Tanpa panduan, AI bisa ngawur melakukan aneka hal yang aneh atau tidak perlu, dan bahkan berbahaya.
Saya masih belum tahu apa yang harus diajarkan ke anak-anak saya, tapi sejauh ini saya berusaha mengajarkan semuanya:
- dasar pemrograman
- memakai LLM untuk masalah sehari-hari
- memakai LLM untuk belajar
- vibe coding
Mungkin itu masih tidak cukup untuk menghadapi masa depan, tapi setidaknya saya sudah berusaha mempersiapkan sebaik mungkin.