- Tool pengembangan berkualitas tinggi untuk SQLite yang sudah lama dirindukan akhirnya bisa diselesaikan dalam waktu singkat dengan bantuan AI
- Tantangan terbesar adalah membangun parser karena tidak adanya spesifikasi tata bahasa resmi dan codebase C yang kompleks
- Dengan memanfaatkan agen coding AI seperti Claude Code, implementasi awal bisa dipercepat, tetapi masalah kode spageti membuat proyek ini ditulis ulang berbasis Rust
- AI menunjukkan efisiensi besar dalam generasi kode, refactoring, bantuan belajar, dan peningkatan UX, tetapi juga menimbulkan efek samping seperti penundaan desain, keterputusan dari codebase, dan kecanduan pada dependensi
- Pada akhirnya, AI hanyalah alat untuk mempercepat implementasi; desain dan arah perangkat lunak tetap harus menjadi tanggung jawab manusia
Catatan 3 Bulan Membangun Tool Pengembangan SQLite dengan AI
- Sudah lama menginginkan tool pengembangan berkualitas tinggi untuk SQLite, tetapi tool open source yang ada kurang memadai dari sisi keandalan, kecepatan, dan fleksibilitas
- Saat memelihara PerfettoSQL, ada kebutuhan untuk fitur seperti formatter, linter, dan ekstensi editor, tetapi tidak ada tool yang benar-benar cocok
- Pernah ingin membuat tool baru sebagai proyek pribadi, tetapi tingkat kesulitan dan beban kerja berulang membuatnya tertunda selama bertahun-tahun
Tantangan proyek
- SQLite tidak memiliki spesifikasi tata bahasa resmi maupun API parser yang stabil
- Secara internal SQLite tidak membangun parse tree, sehingga logika parser harus diekstrak langsung dari source code
- Ada lebih dari 400 aturan tata bahasa yang harus dipetakan satu per satu, dan penulisan tes serta debugging menjadi pekerjaan yang sangat repetitif dan melelahkan
- Codebase C milik SQLite rumit dan sangat padat, sehingga sulit dipahami
- Struktur internalnya begitu pelik sampai butuh beberapa hari hanya untuk memahami API virtual table dan implementasinya
Proses pengembangan bersama AI
- Sejak akhir 2025, mulai memanfaatkan agen coding AI seperti Claude Code secara serius
- Pada awalnya, sebagian besar desain dan implementasi diserahkan ke AI dengan pendekatan “vibe-coding”
- Hasilnya memang berjalan, tetapi codebase berubah menjadi kode spageti yang terlalu kompleks untuk dipelihara
- Setelah itu, seluruh proyek ditulis ulang dengan Rust sambil menata ulang strukturnya
- Rust dipilih menggantikan C agar komponen tingkat atas seperti validator dan language server lebih mudah dikembangkan
- AI kemudian dibatasi sebagai “alat autocomplete yang diperkuat”, sementara desain, review, dan pengujian dipimpin langsung
- Juga dibangun scaffolding untuk memverifikasi hasil keluaran AI, seperti otomatisasi linting, validasi, dan pengujian
Hal-hal yang dimungkinkan oleh AI
-
Mengatasi inersia
- AI membantu memecah pekerjaan menjadi unit masalah yang konkret, sehingga lebih mudah untuk mulai
- Pola pikir bergeser dari “harus memahami parsing SQLite” menjadi “meninjau pendekatan yang diusulkan AI”, sehingga eksekusi menjadi lebih cepat
-
Kecepatan generasi kode dan refactoring
- Saat kebutuhannya jelas, AI dapat menulis kode yang standar dan konsisten dengan cepat
- Tetapi pada desain yang tidak standar, seperti struktur parser, AI justru mengganggu sehingga perlu ditulis langsung
- Setelah generasi kode skala besar, refactoring berkelanjutan menjadi keharusan untuk menjaga kualitas
-
Peran sebagai asisten belajar
- AI bisa menjelaskan konsep baru seperti algoritme formatting Wadler-Lindig secara real-time
- Ini memungkinkan masuk lebih cepat ke area yang belum akrab seperti Rust dan ekstensi VS Code
- Saat konteks proyek mulai hilang, pertanyaan seperti “jelaskan komponen ini” membantu memulihkan konteks secara instan
-
Meningkatkan tingkat kematangan hasil
- AI menurunkan biaya pengembangan fitur tambahan seperti ekstensi editor, binding Python, playground WASM, dan situs dokumentasi
- Karena beban implementasi berkurang, fokus bisa dialihkan ke peningkatan UX, seperti pesan error dan desain CLI
Efek samping penggunaan AI
-
Sifat adiktif
- Ada struktur hadiah ala mesin slot dalam kebiasaan mengulang “satu prompt lagi”
- Semakin lelah, kualitas prompt menurun, hasil ikut memburuk, dan lahirlah lingkaran setan
-
Keterputusan dari codebase
- Semakin banyak kode yang dihasilkan AI, semakin hilang pula rasa terhadap struktur detailnya
- Saat konteks hilang, percakapan dengan AI menjadi lebih panjang dan tidak efisien
- Sebagai solusi, dibentuk kebiasaan membaca langsung kode yang baru dihasilkan dan memeriksa “bagian mana yang akan saya tulis secara berbeda”
-
Penundaan dan pengikisan desain
- Karena refactoring terasa mudah, muncul kecenderungan untuk menunda keputusan desain yang inti
- Sekalipun tes banyak, kesalahan desain yang mendasar sulit tertutupi, dan pada akhirnya perlu penulisan ulang total
-
Tidak punya rasa waktu
- AI tidak mampu memahami konteks temporal maupun proses evolusi sebuah kode
- Akibatnya, kesalahan lama bisa terulang atau masalah yang sebenarnya sudah selesai malah dieksplorasi lagi
- Dokumentasi bisa membantu, tetapi niat desain tidak mudah direkam secara sepenuhnya
Relativitas dalam memanfaatkan AI
- Di domain yang sudah dipahami mendalam, AI sangat unggul karena review dan iterasi bisa dilakukan cepat
- Contoh: pembuatan aturan parser efisien karena punya jawaban yang jelas
- Di domain yang hanya sebagian dipahami, AI berguna sebagai alat belajar, tetapi tetap perlu kewaspadaan terus-menerus
- Contoh: mempelajari algoritme formatter
- Pada tahap belum tahu apa yang ingin dibuat, AI justru cenderung merugikan
- Contoh: pada tahap desain arsitektur, AI dapat memicu loop yang tidak produktif
- Untuk masalah yang bisa diverifikasi seperti lolos kompilasi dan tes, AI kuat, tetapi
pada masalah tanpa jawaban tunggal seperti desain dan kualitas API, AI lemah
Kesimpulan
- Tool SQLite yang telah dirancang selama 8 tahun akhirnya bisa diwujudkan hanya dalam 3 bulan berkat AI
- Namun prosesnya bukan sekadar kisah sukses, melainkan juga disertai batasan dan biaya dari ketergantungan pada AI
- AI adalah alat percepatan implementasi, tetapi bukan pengganti desain
- AI bisa menjawab pertanyaan teknis dengan akurat, tetapi tidak memiliki sejarah, selera, maupun kepekaan terhadap pengguna
- Pelajaran yang sebenarnya adalah, meskipun AI membuat kita lebih cepat menabrak tembok,
manusialah yang harus bertanggung jawab atas arah desain dan ‘jiwa perangkat lunak’
- Yang dibutuhkan ke depan adalah lebih banyak berbagi contoh proyek yang benar-benar tahan terhadap pengguna nyata dan beban pemeliharaan
- Bukan sekadar eksperimen, melainkan akumulasi pengalaman pengembangan kolaboratif AI yang realistis dan berkelanjutan
Belum ada komentar.