Pemrograman Vibe
Apa Itu Vibe Coding?
Vibe coding adalah metode pemrograman bertenaga AI yang diperkenalkan oleh Andrej Karpathy pada 2024/2025. Dengan vibe coding, Anda menjelaskan apa yang Anda inginkan dalam prompt berbahasa alami dan biasanya model bahasa besar (LLMs) menghasilkan sebagian besar, seringkali semua, kode kerja untuk Anda. Jika Anda punya waktu, lihatlah Art of Vibe Coding yang diadaptasi oleh Rick Rubin untuk mempelajari lebih lanjut tentang cara vibe coding.
Salah satu keuntungan besar dari metode baru ini adalah aksesibilitas karena orang tanpa pengalaman coding dapat membangun proyek sementara pengembang berpengalaman dapat dengan cepat membuat prototipe ide baru sebelum benar-benar berkomitmen. Ini sangat membantu bagi startup. Kekurangannya adalah pengembang kemungkinan besar tidak akan sepenuhnya memahami bagaimana kode yang dihasilkan bekerja. Untuk proyek sampingan kecil, ini tidak masalah, tetapi untuk perangkat lunak tingkat produksi hal ini dapat menyebabkan masalah jangka panjang dan utang teknis.
Ada banyak alat di luar sana yang membuat vibe coding lebih mulus. Cursor IDE, Claude Code CLI, GitHub Copilot, Loveable, Replit, v0, dan lainnya memungkinkan Anda bekerja dengan AI langsung di lingkungan Anda atau menyediakan antarmuka khusus untuk vibe coding. Secara pribadi, saya biasanya menggunakan Cursor IDE dan Claude Code CLI untuk proyek-proyek ini.
Begini masalahnya. Alat dan model ini membutuhkan biaya. Dengan coding tradisional, Anda sebagian besar membayar dengan waktu Anda. Dengan vibe coding, Anda membayar dengan dompet Anda. Dan jika Anda tidak tahu apa yang Anda lakukan, Anda membayar dengan dompet dan waktu Anda. Masing-masing proyek di halaman ini menghabiskan biaya sekitar $10 hingga $20 untuk dibangun. Itu bertambah jika Anda banyak bereksperimen. Saya memang berpikir seiring model-model ini meningkat dan menjadi lebih efisien, biayanya akan turun pada akhirnya. Untuk sekarang, ini sesuatu yang perlu dipertimbangkan ketika memutuskan apakah vibe coding masuk akal untuk proyek Anda.
Penasaran dengan apa yang mungkin, saya mencoba vibe coding sendiri dan membuat halaman ini untuk mengeksplorasi prinsip itu melalui proyek nyata. Saya tidak sekadar membangun produk, saya menguji dan mendemonstrasikan apa yang sebenarnya mampu dilakukan vibe coding. Ini hanya untuk bersenang-senang, tetapi memberikan sekilas bagaimana coding mungkin terlihat di masa depan seiring model-model ini terus berkembang.
Teorema Monyet Tak Terbatas
Pernah mendengar tentang Teorema Monyet Tak Terbatas? Ini adalah eksperimen pemikiran filosofis yang mengatakan jika Anda memberikan monyet tak terhingga mesin tik tak terhingga dan waktu tak terhingga, pada akhirnya salah satu dari mereka akan menghasilkan karya lengkap Shakespeare hanya dengan memukul tombol secara acak.
Kedengarannya konyol, bukan? Tapi inilah bagian yang gila. Vibe coding agak seperti itu, kecuali alih-alih monyet kita memiliki model AI, alih-alih mesin tik kita memiliki bahasa pemrograman, dan alih-alih Shakespeare kita mendapatkan perangkat lunak yang bekerja.
Pikirkan tentang itu. Model bahasa besar dilatih pada miliaran baris kode, pola, dan contoh. Ketika Anda memberi LLM sebuah prompt, ia sebenarnya tidak “memikirkan” masalah Anda langkah demi langkah seperti pengembang manusia. Sebaliknya, ia memprediksi token berikutnya yang paling mungkin berdasarkan pola yang dipelajarinya selama pelatihan. Pada dasarnya ia membuat tebakan terdidik dengan menghasilkan kode berdasarkan apa yang secara statistik tampak benar.
Dan entah bagaimana, seringkali, itu berhasil. Model mengeluarkan kode yang benar-benar dapat dikompilasi, dijalankan, dan menyelesaikan masalah Anda. Bukan melalui pemahaman, tetapi melalui pencocokan pola probabilistik dalam skala yang sangat besar. Ini seperti generator teks acak paling canggih di alam semesta menemukan jawaban yang “benar”. Tetapi di sini, bedanya adalah kecepatan. Monyet-monyet itu akan membutuhkan literal ketakterhinggaan. AI Anda? Mencapainya dalam hitungan detik atau menit.
Jadi dengan cara tertentu, ketika Anda menggunakan vibe coding, Anda memanfaatkan jutaan baris pola kode, yang didistilasi ke dalam model, untuk menghasilkan solusi. Ini bukan pemecahan masalah yang sadar, ini adalah keajaiban statistik. Dan itulah mengapa metode ini begitu kuat dan, harus diakui, mengapa memahami apa yang sebenarnya dilakukan kode itu tetap penting.
Pertanyaan Lebih Penting Daripada Jawaban
Berikut sesuatu yang penting yang sering diabaikan. Vibe coding bukan tentang mendapat jawaban apa saja, melainkan tentang mengajukan pertanyaan yang tepat. Pikirkan tentang Komputer Super Deep Thought dari Panduan Hitchhiker ke Galaksi. Ia menghabiskan jutaan tahun menghitung jawaban untuk pertanyaan utama tentang kehidupan, alam semesta, dan segala sesuatu, hanya untuk memberi Anda angka 42. Jawabannya secara teknis benar, tetapi tidak berguna karena masalah sebenarnya adalah menemukan pertanyaan apa yang harus diajukan sejak awal.
Vibe coding bekerja dengan cara yang sama. Prompt Anda adalah segalanya, tetapi manajemen konteks juga sama pentingnya. Prompt yang samar akan memberi Anda kode yang samar, dan jika Anda tidak menyediakan file, dokumentasi, atau contoh yang tepat sebagai konteks, model tidak akan memahami apa yang Anda sebenarnya butuhkan. Jika Anda seseorang yang memahami coding, arsitektur, dan desain sistem, Anda dapat membuat prompt terperinci dan mengkurasi konteks yang tepat untuk mengarahkan LLM menuju solusi yang bagus. Tetapi jika Anda tidak tahu apa yang harus diminta atau konteks apa yang harus diberikan, AI juga tidak akan tahu.
Inilah sebenarnya mengapa vibe coding begitu kuat bagi pengembang berpengalaman. Kami tahu seperti apa kode yang baik, kami memahami jebakan-jebakannya, dan kami bisa menulis prompt yang menjauhkan model dari hal-hal tersebut. Bagi pemula tanpa latar belakang teknis, ini menjadi keterbatasan nyata. Anda mungkin mendapatkan kode yang bekerja, tetapi tanpa memahami apa yang salah atau apa yang harus diminta selanjutnya, Anda terjebak.
Ketika Vibe Coding Tidak Cukup
Model AI terbaru mengesankan, tetapi bukan peluru ajaib. Vibe coding bisa bekerja di produksi, tetapi hanya jika Anda serius tentang itu. Anda memerlukan unit test yang kuat. Anda memerlukan sumber kebenaran yang jelas tentang apa yang seharusnya dilakukan sistem Anda. Anda perlu menangkap ketika sesuatu rusak atau menyimpang. Dan Anda memerlukan pola pikir peretas. Pikirkan di luar kotak dan coba hancurkan proyek yang di-vibe-code Anda dengan cara yang tak terduga. Kasus tepi apa yang belum Anda pertimbangkan? Kerentanan keamanan apa yang bisa dieksploitasi seseorang? Inilah yang memisahkan kode yang sekadar bekerja dari kode yang benar-benar tangguh.
Begini masalahnya. AI tidak menguasai Anda. Anda yang menguasai AI. Jangan hanya menerima apa yang dihasilkannya. Tinjau itu. Uji itu. Rusak itu. Dan sejujurnya, untuk bagian-bagian tertentu dari basis kode Anda, Anda perlu kembali ke pemrograman gaya lama. Fokus, pikirkan mendalam, tulis sendiri. Vibe coding mempercepat proses, tetapi bukan pengganti pemrograman nyata saat itu penting.
Ada hal lain yang saya pelajari. Terkadang Anda hanya perlu mengakhiri sesi dengan AI dan memulai yang baru. Saat riwayat percakapan Anda semakin besar, kinerja model menurun. Ia membuat lebih banyak kesalahan, menghasilkan kode yang kurang koheren, dan mulai berhalusinasi lebih sering. Jika Anda tidak menangkap ini dan berhenti, kesalahan-kesalahan ini saling menumpuk, membuat keadaan semakin buruk secara progresif. Ini seperti mencoba membaca dokumen yang telah difotokopi berulang-ulang. Memulai baru membuat segala sesuatu tetap bersih dan tajam.
Proyek yang Dibuat dengan Vibe Coding
Di bawah ini ada dua proyek, stairs (repo) dan transcendental (repo), yang saya buat menggunakan metodologi vibe coding. Sebagian besar dihasilkan dari prompt, dengan pekerjaan manual terbatas pada menyediakan konteks, debugging, dan menerapkan ke GitHub Pages. Mereka adalah eksperimen situs statis yang menyenangkan yang menunjukkan apa yang mungkin ketika Anda menggabungkan ide kreatif dengan kode melalui vibe coding. Keduanya dihosting di GitHub.