- Saat memanfaatkan alat coding AI dan secara bertahap menyerahkan tugas yang makin besar, penulis sempat merasa takjub, tetapi kemudian menyadari hasilnya kurang memiliki konsistensi dan kelengkapan struktural
- Bahkan dengan spesifikasi rinci, agen AI tidak mampu mempertahankan konteks jangka panjang atau mengembangkan desain, sehingga pada akhirnya seluruh codebase berubah menjadi kumpulan fragmen yang tidak seragam
- Potongan kode tampak lengkap secara individual, tetapi secara keseluruhan terjadi kekacauan struktural (sloppy) dan runtuhnya konteks
- Setelah pengalaman ini, penulis menilai bahwa kode buatan AI tidak dapat menjamin kepercayaan pengguna atau perlindungan data, lalu kembali ke cara menulis kode secara langsung
- Coding dengan AI tetap berguna, tetapi karena dapat menimbulkan utang teknis dan hilangnya kendali pengembang, penggunaannya perlu dilakukan dengan hati-hati
Antusiasme awal terhadap coding AI dan kesadaran akan batasannya
- Sebagian besar pengguna memulai coding AI dengan tugas sederhana lalu secara bertahap menyerahkan tugas yang lebih kompleks, sambil terkagum pada performanya
- Namun setelah titik tertentu, kesalahan dan ketidakkonsistenan AI mulai terlihat, sehingga muncul jarak antara harapan dan kenyataan
- Saat hasilnya tidak memuaskan, pengguna cenderung menganggap masalahnya ada pada prompt mereka sendiri dan mencoba menulis spesifikasi yang lebih rinci
- Mereka membuat dokumen spesifikasi detail dengan alat seperti Obsidian, tetapi AI tidak mampu mengembangkannya dalam jangka panjang
Kegagalan pendekatan berbasis spesifikasi
- Dalam pengembangan nyata, dokumen desain adalah dokumen hidup yang terus berubah selama proses penemuan dan implementasi
- Namun agen AI terpaku pada spesifikasi awal sehingga tidak mampu melakukan revisi fleksibel atau reinterpretasi
- Saat menangani struktur yang kompleks, agen cenderung kehilangan konteks keseluruhan masalah atau tetap memaksa maju
- Akibatnya, meski kodenya tampak lengkap di permukaan, konsistensi internal dan integritas struktural justru hilang
Runtuhnya kualitas kode dan batasan ‘vibecoding’
- Kode yang ditulis AI terlihat hebat di beberapa bagian, tetapi secara keseluruhan menjadi kombinasi yang tak bermakna
- Setelah meninjau seluruh codebase, penulis menemukan adanya ‘slop’ yang murni kacau di dalamnya
- AI setia pada prompt dan konsistensi dirinya sendiri, tetapi tidak mempertimbangkan harmoni sistem secara keseluruhan atau konsistensi pola di sekitarnya
- Ini mirip dengan ‘vibewriting’ di mana beberapa paragraf novel bagus, tetapi keseluruhan chapter berantakan
Kembali ke pengembangan yang berpusat pada manusia
- Penulis menilai bahwa kode yang dihasilkan AI tidak layak dipakai untuk merilis produk atau melindungi data pengguna
- Dengan tekad, “Saya tidak akan membohongi pengguna dengan kode ini,” ia pun kembali menulis kode sendiri
- Saat menulis sendiri, ia merasakan kecepatan, akurasi, kreativitas, dan produktivitas justru meningkat
- Jika dinilai bukan dari kecepatan menghasilkan kode semata, melainkan efisiensi pengembangan secara keseluruhan, keunggulan manusia menjadi jelas
Penggunaan coding AI yang tetap berlanjut, dengan kewaspadaan
- Penulis masih memanfaatkan LLM secara terbatas (sekitar 40%) untuk beberapa pekerjaan
- Berguna untuk tugas berulang atau pembuatan kode sederhana, tetapi utang teknis dan menurunnya pemahaman terhadap kode terus menumpuk
- Dalam jangka panjang, ada risiko pengembang kehilangan model mental atas codebase dan menjadi tidak mampu menyelesaikan masalah tanpa AI
- Saat sedang bepergian (kereta, pesawat, dan sebagainya), bahkan muncul situasi di mana produktivitas menjadi 0% karena ketergantungan pada AI
- Pengembang lain juga menunjukkan bahwa cara berpikir “asal spesifikasinya bagus, semua akan beres” adalah pengulangan model waterfall, padahal pengembangan nyata menuntut eksplorasi improvisasional dan interaksi
Kesimpulan
- Coding AI tetap merupakan alat yang kuat, tetapi masih kurang mampu menjaga konteks keseluruhan sistem dan konsistensi struktural
- Penilaian intuitif dan kemampuan penyesuaian improvisasional dari pengembang manusia tetap menjadi inti, dan
AI harus digunakan secara hati-hati sebagai alat bantu dalam cara yang terkendali
9 komentar
Konsep vibe coding bahkan belum genap setahun sejak diciptakan, apaan gaya sok ala SNS begini wkwk
Memang perlu upaya yang serius saat mengasah spesifikasi.. Akan bagus kalau spesifikasinya benar-benar dibuat dan disempurnakan sesuai kaidah formal yang dipelajari di rekayasa perangkat lunak, lalu dikerjakan sambil melakukan manajemen keterlacakan dan terus diperbarui.
Saat mengerjakan proyek, saya selalu terus menaikkan versi template dokumen spesifikasi dan prompt, tetapi belakangan saya jadi merasa mungkin sudah saatnya benar-benar mempelajari rekayasa perangkat lunak secara lebih mendalam.
Penulis masih memanfaatkan LLM secara terbatas untuk sebagian pekerjaan (sekitar 40%)
Dari uraian di atas, sepertinya penulis juga tidak berpendapat bahwa AI harus ditinggalkan sepenuhnya.
Sepertinya kita perlu terus memikirkan cara memanfaatkannya dengan baik. Menurut saya, mengembangkan tanpa AI berarti akan tertinggal sedikit demi sedikit.
Penulis artikel ini sebenarnya sudah menggunakan cara yang baik, tetapi meski begitu saya rasa tetap perlu memikirkan arah untuk memanfaatkan AI dengan lebih baik.
(Masih banyak trial and error untuk saat ini...)
Perbarui spesifikasi.
Betul. Kita bisa memasang hook agar ketika implementasi selesai spesifikasinya juga diperbarui, dan kalau tidak begitu pun tinggal menambahkan command atau skill untuk memperbarui spesifikasi secara manual wkwk
Ah, aku tidak mau menua.
Komentar Hacker News
Menurut saya justru berbahaya bahwa AI terlalu mahir dalam hal-hal dasar
Para pelajar jadi tidak lagi menulis kode sendiri karena merasa “AI yang akan mengerjakannya”, dan akibatnya mereka tidak benar-benar mempelajari tahap menengah atau konsep yang sulit lewat praktik langsung
Sebagai guru CS, saya menekankan kepada murid-murid bahwa “bukan mesin, kamu sendiri yang harus menulis kodenya”
Mengangkat beban dengan forklift itu mudah, tetapi otot tidak akan terbentuk
Rasa sakit dalam proses belajar justru inti dari pertumbuhan
Tentu di tempat kerja hasil akhir lebih penting, tetapi orang yang mampu berpikir tingkat tinggi tetap dibutuhkan
Kandidat punya pengetahuan teori yang sempurna, tetapi sama sekali tidak bisa menjelaskan bagaimana kode yang ia tulis bekerja
Pada akhirnya ia mengaku bahwa “sebagian besar ditulis oleh GenAI”, dan jarak antara ‘apa yang dipelajari’ dan ‘apa yang benar-benar pernah dikerjakan sendiri’ terasa terlalu besar
Lebih penting mengajarkan ‘bagaimana kode bekerja’ daripada ‘bagaimana cara menulis kode’
Dulu ada masa ketika orang menulis langsung dalam assembly, tetapi sekarang lebih bernilai memahami prinsip kerja compiler
Memang kebanyakan orang tidak akan pernah membuat compiler atau OS sendiri, tetapi memahami prinsipnya membantu kita mengerti batasan bahasa pemrograman
Saat compiler pertama kali muncul, perdebatan yang sama juga ada, dan pada akhirnya kita naik ke tingkat abstraksi yang lebih tinggi
Implementasi belaka tidak membuat pemikiran menjadi lebih dalam
Jika implementasi diserahkan ke AI, akhirnya itu seperti ‘orang buta mencari jalan bersama-sama’
Proses berpikir sambil menangani kode secara langsung itu wajib
Saya tidak setuju dengan pernyataan “AI bagus untuk tugas kecil, tetapi lebih bagus lagi untuk tugas besar”
Dalam praktiknya saya selalu hanya mendapatkan hasil yang mengecewakan
Kodenya tidak berjalan dengan benar, atau perlu instruksi revisi yang berulang-ulang
Jika feedback loop sulit, pada akhirnya diri kita sendirilah satu-satunya sumber umpan balik, dan di situlah batas AI terasa jelas
Misalnya jika saya menjelaskan dengan jelas struktur TaskManager atau aturan kepemilikan memori, AI bisa menghasilkan kode yang lolos pengujian
Ada orang seperti Ryan Dahl yang berkata “sekarang saya tidak lagi menulis kode sendiri”, tetapi itu karena hasilnya dipoles seperti kerja kolaboratif melalui umpan balik berulang
AI harus diperlakukan seperti mengajari anak
Jelaskan dengan jelas input, output, dan error yang diperkirakan, lalu revisi sambil bereksperimen berulang kali
Claude mengajukan pertanyaan, melakukan riset, bahkan mereview kode
Rasanya seperti membimbing junior developer yang kompeten
Awalnya saya mencoba “vibe coding” dengan pikiran terbuka, tetapi lama-lama menjadi semakin skeptis
Ini cocok untuk kode yang repetitif dan jelas, tetapi tidak cocok untuk logika inti bisnis
Claude sering mengabaikan spesifikasi, mengulang logika yang sama berkali-kali, atau mengatakan sudah memperbaiki sesuatu padahal sebenarnya dibiarkan begitu saja
Saya juga merasa modelnya makin tumpul
Sekarang saya hanya memakainya untuk diskusi desain atau debugging
Jika ada begitu banyak ‘bagian membosankan’ yang perlu diisi AI, mungkin struktur kodenya memang sejak awal salah
Di bagian ini LLM masih tetap membantu
Banyak developer pada akhirnya memang hanya menerima desain yang sudah ditentukan lalu mengimplementasikannya, jadi AI bisa mempercepat pekerjaan mereka
Saya tidak setuju dengan klaim bahwa “AI tidak bisa mengikuti perubahan desain”
Justru “itulah peran manusia”
Misalnya jika diminta mengubah struktur API, AI bisa menemukan semua bagian terkait, memodifikasinya, dan bahkan menjalankan tes
Terlalu terpaku pada detail implementasi, atau melewatkan validasi konseptual
Meski begitu, tes buatan manusia pun sering mirip seperti itu, jadi saya bisa memahaminya
Jika kita tidak menulis kode sendiri, kita tidak akan benar-benar merasakan bagian abstraksi yang kasar dan tidak seimbang, dan itu pada akhirnya menurunkan kualitas struktural
Perbedaan inilah yang menentukan tingkat kematangan kode
Tetapi yang penting adalah kemampuan menilai pekerjaan mana yang benar-benar memerlukan intervensi manual
Namun efisiensinya baru terasa jika memakai langganan tingkat tinggi, misalnya Claude Max 200 dolar
Ia menekankan perlunya cara objektif untuk menilai kemahiran memakai alat AI
Saya mempertanyakan pernyataan “saya sudah melakukan vibe coding sejak 2 tahun lalu”
Karpathy baru menciptakan istilah itu sekitar setahun lalu (sumber)
Menarik bahwa GPT merancang sendiri API yang akan dipakainya, lalu mengimplementasikan sesuai desain tersebut
Tetapi setelah itu model-model berikutnya mulai memblokir percakapan terkait modifikasi diri dan replikasi diri
Tidak harus memakai alat agen penuh; ChatGPT atau Claude pun sudah cukup
sekarang ia justru mendapatkan hasil bagus dengan berkolaborasi dengan AI sejak tahap riset
Saya berkata kepada para siswa, “menonton olahraga di TV tidak membuatmu berolahraga”
Vibe coding juga sama; ada rasa pencapaian yang hanya bisa didapat saat menulis kode dengan tangan sendiri
‘kode setengah jadi’ yang dibuat AI justru membuat saya bersemangat lagi
Saya ragu para engineer sungguhan benar-benar melakukan ‘vibe coding’ secara membabi buta
Saya justru memakai cara memoles kode melalui percakapan seperti memahat
Saya menyampaikan requirement, meninjau desain bersama AI, lalu menyempurnakan struktur secara bertahap
Proses ini lambat, tetapi bisa menjaga kolaborasi dan kedalaman berpikir
Berdasarkan pembelajaran dari sangat banyak kode, AI mengusulkan ide-ide baru, dan saya menyesuaikannya dengan pengalaman saya
Pada akhirnya AI terasa seperti versi diri saya yang diperluas (me++)
Saya belum siap menyerahkan semuanya pada agen penuh, tetapi cara ini yang paling produktif
Saya merasa kode yang ditulis AI itu seperti novel yang sebagian bagiannya hebat tetapi secara keseluruhan kacau
Jika dilihat per bab, semuanya tampak sempurna, tetapi dalam konteks keseluruhan justru membingungkan
Kalau tidak, maka sulit berharap codebase 10 ribu baris yang dibuat dengan vibe coding akan benar-benar berjalan baik
Jika pemikiran dan emosi manusia tidak tercermin di dalamnya, pengalaman pengguna pun kehilangan konsistensi dan timbul gesekan kognitif
dan mengatakan bahwa ketika desainnya jelas, LLM mempercepat pekerjaan boilerplate secara eksplosif
Tetapi desain tetap merupakan ranah manusia
Proyeknya bisa dilihat di versi publik GitHub
Saya mengakui bahwa kode buatan LLM sebagian tampak hebat tetapi struktur keseluruhannya lemah
Namun jika kita memahami codebase dan meninjaunya sendiri, itu cukup bisa diperbaiki
Vibe coding sangat bagus untuk membuat prototipe
Cepat menangkap gambaran awal, lalu merapikannya kembali dan memperluasnya setelah itu adalah pendekatan yang efektif
Artinya, menurut klaim itu, vibe coding yang sesungguhnya adalah menilai hanya dari hasil akhirnya saja