Demo Selalu Berhasil
Setiap demo AI coding mengikuti alur yang sama. Seseorang memberi prompt ke sebuah model. Aplikasi yang berfungsi muncul. Penontonnya terkesan.
Dan memang seharusnya begitu. Kecepatannya nyata. Kapabilitasnya nyata. Versi satu benar-benar dirilis lebih cepat dengan AI di dalam loop.
Masalahnya adalah versi satu tidak pernah menjadi bagian yang sulit.
Di Mana Biaya Sebenarnya Berada
Biaya software engineering tidak terkonsentrasi pada pembuatan awal. Biaya itu terkonsentrasi pada iterasi keempat, kelima, dan keenam:
- Auth provider perlu diganti karena harga berubah.
- Analytics perlu dipindahkan karena vendornya diakuisisi.
- Sebuah feature perlu ditambahkan dan menyentuh tiga screen yang tidak pernah diantisipasi oleh generation awal.
- Styling system perlu diganti karena desainer mengubah arah.
- Payment integration perlu ditukar karena produk berekspansi ke pasar baru.
Tidak satu pun dari ini adalah kegagalan generation awal. Semuanya adalah perkembangan produk yang normal. Pertanyaannya adalah apakah codebase membuat perubahan-perubahan ini murah atau mahal.
AI-Generated Codebase di Bawah Tekanan Perubahan
Kebanyakan AI-generated codebase menangani perubahan pertama dengan baik. Perubahan kedua mulai terasa tidak nyaman. Pada perubahan keempat, tim mulai melaporkan gejala yang sama:
- “Kami meminta AI mengganti auth provider, tetapi ia menyentuh 14 file.”
- “Refactor itu merusak tests di module yang seharusnya tidak terkait.”
- “Kami tidak bisa mengetahui bagian mana dari sistem yang bergantung pada analytics SDK.”
- “Setiap perubahan mengharuskan kami memahami ulang seluruh codebase.”
Gejala-gejala ini bukan kegagalan model. Ini adalah kegagalan arsitektur. Model itu menghasilkan sistem tanpa boundary, dan sekarang setiap perubahan punya radius dampak yang tidak bisa diprediksi.
Kenapa AI Codebase Memburuk Lebih Cepat
Codebase tradisional juga memburuk. Tetapi AI-generated codebase memburuk lebih cepat karena alasan-alasan yang spesifik:
Tidak ada model mental bersama. Tim manusia membangun intuisi struktural selama berbulan-bulan. AI menghasilkan code tanpa ingatan tentang mengapa keputusan-keputusan sebelumnya dibuat.
Optimasi untuk prompt yang sedang dihadapi. Model menyelesaikan permintaan saat ini. Mereka tidak mengoptimalkan lima permintaan berikutnya. Setiap generation membuat keputusan yang benar secara lokal tetapi tidak koheren secara global.
Volume memperbesar coupling. AI menghasilkan lebih banyak code lebih cepat. Lebih banyak code dengan boundary yang lemah berarti lebih banyak coupling, lebih cepat. Keunggulan kecepatan berubah menjadi akselerator degradasi.
Refactor memerlukan konteks global. Model kesulitan melakukan refactor yang mencakup seluruh codebase karena context window terbatas dan maksud arsitektural bersifat implisit.
Tantangan Engineering yang Sebenarnya
Tantangan engineering yang sebenarnya dalam AI-native development bukanlah “Bagaimana saya menghasilkan code yang lebih baik?”
Melainkan “Bagaimana saya menyusun sistem agar bagian-bagian hasil AI bisa diubah secara independen?”
Artinya:
- Boundary yang membuat radius dampak bisa diprediksi.
- Interface yang memisahkan apa yang berubah dari apa yang tetap.
- Composition root yang membuat dependency graph menjadi eksplisit.
- Contract tests yang memverifikasi integrasi tanpa memerlukan seluruh sistem.
- Kemampuan untuk menghapus dan generate ulang module apa pun tanpa kegagalan berantai.
Pemeliharaan Jangka Panjang adalah Masalah Struktural
Seberapa pun bagusnya prompting, itu tidak akan memperbaiki codebase di mana setiap module menjangkau setiap module lain. Anda tidak bisa menyelesaikan architectural coupling hanya dengan prompt.
Pemeliharaan jangka panjang AI codebase memerlukan disiplin yang sama seperti dulu: boundary, contracts, dan isolation. Bedanya, kecepatan AI membuat ketiadaan disiplin-disiplin ini terlihat lebih cepat. Tim yang dulu membutuhkan dua tahun untuk menciptakan monolit yang tidak bisa dirawat, sekarang bisa melakukannya dalam dua bulan.
Kecepatan adalah hadiah sekaligus jebakan. Tanpa struktur, itu hanya berarti Anda tiba lebih cepat di krisis pemeliharaan.
Kaitannya dengan AI-Native Architecture
Inilah argumen inti yang saya buat dalam Stanford CS146S benar soal AI coding. Mata kuliah yang hilang adalah arsitektur: kefasihan memakai alat tanpa disiplin arsitektural menghasilkan codebase yang cepat dibuat dan mahal dirawat.
Pengembang perangkat lunak modern membutuhkan keduanya. AI tools untuk merilis cepat. Disiplin arsitektur untuk tetap bisa merilis cepat setelah versi satu.
Versi satu tidak pernah menjadi masalah. Masalahnya adalah apakah versi lima masih murah.
FAQ
Kenapa AI-generated codebase menjadi sulit dirawat?
Model AI mengoptimalkan prompt yang sedang dihadapi, bukan perubahan di masa depan. Ini menghasilkan code yang berfungsi tetapi tidak memiliki boundary yang diperlukan agar bisa dimodifikasi secara independen. Tanpa constraint arsitektural yang eksplisit, coupling terakumulasi lebih cepat daripada di codebase yang ditulis manual karena AI menghasilkan lebih banyak code, lebih cepat.
Bagaimana Anda mencegah degradasi AI codebase seiring waktu?
Tiga praktik struktural: tegakkan boundary module dengan interface yang dimiliki aplikasi, pusatkan perangkaian dependency di composition root, dan jalankan contract tests yang memverifikasi titik integrasi secara independen. Semua ini membuat biaya perubahan bisa diprediksi, terlepas dari bagaimana code tersebut dihasilkan.
Apakah AI-generated code lebih sulit di-refactor daripada code yang ditulis manusia?
Tidak secara inheren. Tetapi AI-generated code lebih mungkin tidak memiliki boundary struktural yang membuat refactor aman, karena model tidak secara spontan mengoptimalkan perubahan di masa depan. Solusinya adalah memaksakan boundary tersebut sebelum generation, bukan berharap model akan menghasilkannya sendiri.
Apa risiko terbesar AI coding untuk proyek jangka panjang?
Risiko terbesarnya adalah jebakan kecepatan: merilis begitu cepat pada fase awal sehingga utang arsitektural menumpuk sebelum tim menyadarinya. Saat pemeliharaan akhirnya menjadi mahal, codebase sudah terlalu coupled untuk diperbaiki secara bertahap.