27 poin oleh GN⁺ 2026-04-06 | 1 komentar | Bagikan ke WhatsApp
  • 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

1 komentar

 
GN⁺ 2026-04-06
Pendapat Hacker News
  • Menyegarkan melihat sudut pandang yang seimbang soal AI coding
    Ini pengalaman yang kemungkinan besar akan dirasakan sebagian besar developer serius — awalnya terkesan karena AI bisa menulis kode dengan baik, tetapi belakangan codebase-nya ternyata berantakan jadi spaghetti code
    Sebagian orang bahkan tidak melakukan code review dan ribut mengatakan “coding manual sudah berakhir”, sementara yang lain langsung menyimpulkan “AI coding tidak berguna”
    Namun kenyataannya ada di tengah-tengah. AI bisa menjadi akselerator produktivitas yang besar, tetapi harus diintegrasikan dengan benar ke dalam workflow dan manusia tetap harus terus terlibat

    • Saya juga sudah memakai Claude sebagai antarmuka coding utama selama 3 bulan terakhir
      Awalnya hanya prototipe, tetapi cepat berkembang menjadi layanan nyata. Setelah itu saya kesulitan saat harus refactor dan membersihkan kode-kode tidak berguna
      Meski begitu, tanpa prototipe yang cepat itu, produk saat ini tidak akan ada. Claude juga berguna seperti gergaji mesin untuk merapikan kode
      Belakangan saya menambahkan type checker lewat hook pre-commit dan memperbaiki 90 error hanya dalam 2 jam.
      AI coding memang luar biasa, tetapi untuk kode production, review dan penilaian manusia tetap wajib
    • Alasan saya sangat menyukai tulisan ini adalah karena perspektifnya seimbang
      Hanya saja, karena kasus ini adalah proyek greenfield milik individu, sulit untuk langsung menerapkannya ke pengembangan tim pada umumnya
      Meski begitu, kalau prototipe dibuat dengan asumsi akan “dibuang”, menurut saya spaghetti code pun tidak masalah.
      Masalahnya adalah penulis sempat salah mengira bahwa itu bisa berkembang menjadi produk sungguhan.
      Namun saya rasa justru dari kegagalan itu dia belajar desain yang lebih baik
    • Sebenarnya reaksi yang terpolarisasi seperti ini adalah tahap yang dialami semua orang saat pertama kali mengalami AI coding
      Awalnya kagum, lalu kecewa, dan akhirnya menemukan keseimbangan.
      Rasanya seperti versi AI dari model Kübler-Ross
    • Sebaliknya, saya melihat obsesi pada kualitas kode sebagai titik buta di era AI
      Tentu kualitas itu penting, tetapi sekarang kualitas kode itu sendiri mulai menjadi kurang penting
      Kode yang tidak perlu dipelihara seperti aplikasi pribadi makin banyak, dan kemampuan desain AI juga meningkat cepat
      Pada akhirnya, “kebenaran tentang AI coding” akan terus berubah, dan arus ini tidak akan berhenti
    • Saya rasa ada dua alasan kenapa tulisan realistis seperti ini jarang
      Pertama, kebanyakan developer diam-diam menikmati peningkatan produktivitas 2~50% tanpa merasa perlu banyak bicara
      Kedua, AI coding yang sesungguhnya itu membosankan dan tidak visual.
      Pada akhirnya LLM hanyalah ‘alat agar kita tidak perlu menghafal boilerplate’, sedangkan esensi coding tetap sama
  • Saya juga mengalami masalah yang sama pada pembuatan test dengan AI
    Saat test bertambah banyak memang terasa menenangkan, tetapi kenyataannya edge case tetap tidak tertangani
    Terutama ketika refactor kode legacy yang tidak punya test, test buatan AI hanya memeriksa apakah sesuatu berjalan, tetapi tidak menjamin konsistensi perilaku
    Di aplikasi React masalah ini terasa sangat parah. Karena itu saya sedang memikirkan cara menggabungkan BDD + pengembangan berbasis spesifikasi dengan AI

    • Saya merasa menulis test yang baik itu 10 kali lebih sulit daripada coding itu sendiri
      Untuk unit test, yang penting adalah desain mock yang kreatif; untuk integration test, manipulasi data; dan untuk test e2e, stabilitas selector
      Penilaian kreatif seperti ini masih sulit diikuti AI
    • Jangan tertipu angka coverage
      Walaupun coverage 97%, tetap ada banyak lubang dalam ruang input logis.
      Belakangan saya mengotomatisasi teknik klasik seperti equivalence partitioning dengan agen AI dan menerapkannya ke 60 model
    • Saya merekomendasikan pendekatan menspesifikasikan perilaku sistem dengan TLA+ lalu menghubungkan kode dengan spesifikasinya
      Kuncinya adalah memisahkan pure function semaksimal mungkin agar pemetaan input-output bisa diuji sepenuhnya
  • Dalam jangka panjang, saya rasa nilai sejati AI ada pada perannya sebagai alat penguat pemahaman
    Misalnya menganalisis aturan dalam kode C yang kompleks lalu mendokumentasikan strukturnya
    Jika ekstraksi pengetahuan seperti ini menjadi mungkin, otomatisasi bisa diperluas ke dokumentasi API, pemetaan aturan, analisis bug, hingga optimasi arsitektur
    Pada akhirnya, dibanding menghasilkan kode, kemampuan menstrukturkan konteks akan menjadi lebih penting

    • Cara orang memakai AI sangat terbelah
      ① tipe oracle mahatahu yang hanya melempar requirement lalu membiarkan seluruh aplikasi dibuat
      ② tipe alat bantu yang memakainya di dalam IDE sambil meninjau baris demi baris
      Untuk membangun layanan yang berkelanjutan, pendekatan ② jauh lebih realistis
  • Kalimat “arsitektur muncul ketika potongan-potongan lokal saling berinteraksi” sangat berkesan
    AI kuat dalam eksekusi lokal, tetapi lemah pada tahap desain yang ambigu
    Sebenarnya developer manusia pun sama. Sebab desain adalah rangkaian trade-off tanpa jawaban tunggal

    • Saya juga pernah sampai pada kesimpulan desain melalui percakapan panjang dengan AI
      Khususnya dalam desain SQL ClickHouse, AI sangat membantu
      Berkat metode penyertaan SQL berbasis template yang disarankan AI, saya bisa mengurangi duplikasi dan meningkatkan performa
      Mungkin pendekatan seperti ini sudah pernah ada, tetapi tanpa AI mungkin akan sulit menemukannya
  • Tulisan ini terasa meyakinkan karena ada 250 jam upaya nyata di baliknya
    Saya rasa proyek sebesar ini adalah model realistis untuk system programming berbantuan AI yang sesungguhnya

  • Ungkapan “AI coding itu seperti mesin slot” sangat saya rasakan
    Saya juga diberi akses tanpa batas ke agen AI di kantor, dan begitu masuk ke pola “coba satu prompt lagi”
    tahu-tahu 12 jam sudah berlalu. Sifat adiktif dari keadaan flow memang kuat

  • Mungkin sekarang adalah masa tersulit bagi AI coding
    Hal-hal yang 6 bulan lalu bahkan tak terbayangkan sekarang sudah menjadi mungkin
    Saya sedang mengerjakan proyek dalam beberapa bahasa, dan AI membuat kode terlalu cepat
    sehingga sekarang kecepatan review justru menjadi bottleneck
    Begitu sejumlah test lolos, muncul pertanyaan “apakah ini sudah cukup baik?”
    Saya menuliskan atribut kualitas seperti prinsip SOLID, coupling, cohesion di dalam prompt
    Saya meminta ide refactor kepada AI, dan kalau cocok tinggal bilang “oke, jalankan”
    Pada akhirnya yang penting adalah seni merancang prompt
    Namun saya rasa tak lama lagi AI akan menjalankan guardrail kualitas seperti ini secara default

    • Ada juga pertanyaan kenapa mengerjakan proyek dalam beberapa bahasa
      Bahasa itu sendiri bukan bottleneck performa, tetapi bereksperimen dengan bahasa baru membantu proses belajar
  • Ini mengingatkan saya pada filosofi Fred Brooks, “buang satu versi”
    AI sangat cocok untuk membuat versi pertama itu (throwaway) dengan cepat
    Mengharapkan kualitas production sejak awal adalah pendekatan yang bodoh
    Cara yang benar adalah membuatnya cepat, belajar darinya, lalu refactor sesudahnya
    Saya juga setuju bahwa saat lelah, prompt jadi kabur dan hasilnya pun memburuk

    • Namun menarik juga bahwa Brooks belakangan mengubah pendiriannya ke arah iterative refinement
  • Saya terkejut mengetahui parser SQL milik SQLite tidak dihasilkan oleh lemon
    Saat mem-porting pikchr ke Go, saya lebih dulu memindahkan lemon, tetapi SQLite bahkan tidak membuat parser tree
    Jika melihat dokumentasi lemon, ini tampak seperti kurangnya pendefinisian masalah pada tahap desain

  • Saya juga sepenuhnya setuju dengan kesimpulan tulisan ini
    Ini contoh yang bagus karena menunjukkan realitas AI coding secara jujur tanpa berlebihan