Pengaturan

Bahasa

Membangun Platform AI Produksi dengan Claude Code dalam 30 Hari: Kisah Jujur

L
LemonData
·27 Februari 2026·3583 tampilan
Membangun Platform AI Produksi dengan Claude Code dalam 30 Hari: Kisah Jujur

Saat itu jam 2 pagi di hari Selasa ketika saya menyadari sistem billing menagih pengguna dua kali lipat. Bug tersebut telah ada di produksi selama enam jam. Claude Code telah menghasilkan logika rekonsiliasi pembayaran sore itu, dan saya telah meninjaunya, mengujinya, dan merilisnya. Kodenya terlihat sempurna. Lulus setiap pengujian. Namun, secara fundamental rusak.

Ini adalah kisah membangun LemonData: 274 API route, 46 model database, dan 100.000+ baris kode dengan asisten coding AI. Bukan kisah yang dipoles seperti "lihat betapa produktifnya AI membuat Anda". Ini kisah nyata, dengan kegagalan, sesi debugging jam 3 pagi, dan momen-momen di mana saya mempertanyakan apakah pengembangan berbantuan AI benar-benar ide yang bagus.

Janji vs. Realitas Pengembangan Berbantuan AI

Janji tentang asisten coding AI sangat menggoda: Anda mendeskripsikan apa yang Anda inginkan, AI menulisnya, Anda meninjau dan merilisnya. Secara teori, seorang developer tunggal kini dapat melakukan pekerjaan seluruh tim.

Dalam praktiknya? Dua minggu pertama terasa luar biasa. Claude Code memahami codebase saya, menghasilkan fitur lengkap, melakukan refactoring di berbagai file. Saya merilis fitur lebih cepat daripada sebelumnya dalam karier saya. Sensasi dopamin saat menutup issue dengan cepat begitu memabukkan.

Kemudian retakan mulai muncul.

Fungsi yang sama muncul di tiga file berbeda dengan implementasi yang sedikit berbeda. Nilai konfigurasi di-hardcode di tempat-tempat acak. Definisi type saling bertentangan di berbagai package. Codebase berkembang pesat, tetapi juga menjadi labirin kode yang "berjalan tapi saya tidak yakin mengapa".

Dan bug billing itu? Claude telah menghasilkan fungsi rekonsiliasi yang terlihat sangat masuk akal. Namun, fungsi itu tidak memperhitungkan race condition dalam flow konfirmasi pembayaran async kami. AI tidak punya cara untuk mengetahui edge case tersebut karena saya tidak memberitahunya secara eksplisit, dan test suite, yang juga sebagian dibuat oleh AI, juga tidak mencakupnya.

Tujuh Pola yang Terus Merusak

Setelah sebulan membangun dengan Claude Code, saya mulai membuat daftar. Bukan daftar bug, tepatnya, melainkan pola. Jenis kegagalan yang sama terus terjadi, dan itu bukan kesalahan Claude, atau setidaknya tidak sepenuhnya. Itu adalah hasil yang dapat diprediksi dari AI yang mengoptimalkan "kode yang berfungsi sekarang" daripada "kode yang berfungsi besok."

1. Masalah Konsistensi

Claude akan mengimplementasikan logika yang sama secara berbeda tergantung pada file apa yang sedang dikerjakan, contoh apa yang dilihatnya baru-baru ini, atau tampaknya hanya variasi acak. Satu API endpoint akan mengembalikan { data: users }, yang lain akan mengembalikan { users }. Keduanya berfungsi. Tidak ada yang cocok satu sama lain. Debugging menjadi seperti arkeologi.

2. Masalah Copy-Paste

Mengapa AI harus membuat utility bersama jika menduplikasi kode lebih cepat dan tidak berisiko merusak fungsionalitas yang ada? Setiap kali saya meminta fitur baru yang menyerupai fitur yang sudah ada, saya mendapatkan implementasi baru alih-alih solusi bersama yang di-refactor. Setelah tiga minggu, saya memiliki lima fungsi "format currency" berbeda yang tersebar di seluruh codebase.

3. Masalah Type Drift

Nilai status baru akan ditambahkan ke satu file tetapi tidak ke definisi enum. Sebuah field akan menjadi opsional dalam respons API tetapi wajib dalam type frontend. TypeScript menangkap beberapa di antaranya, tetapi tidak untuk ketidakcocokan semantik, kasus di mana type secara teknis benar tetapi secara logis tidak konsisten.

4. Masalah Penyebaran Konfigurasi

URL database, API key, feature flag, dan rate limit akan berakhir di mana pun yang nyaman untuk tugas saat ini. Terkadang di environment variable, terkadang di file config, terkadang di-hardcode. Menemukan semua tempat di mana sebuah nilai didefinisikan menjadi seperti perburuan harta karun.

5. Ilusi Test Coverage

Test yang dihasilkan AI cenderung menguji happy path secara menyeluruh dan melewatkan edge case sepenuhnya. Bug billing adalah contoh sempurna: test suite mencakup flow pembayaran normal dengan sangat baik. Ia tidak pernah menguji apa yang terjadi ketika dua konfirmasi pembayaran tiba dalam milidetik yang sama.

6. Masalah Silent Failure

Claude akan menambahkan blok catch (error) { console.log(error) } yang menelan exception. Dalam pengembangan, ini terlihat baik-baik saja karena error muncul di konsol. Di produksi, kegagalan kritis dicatat secara diam-diam dan dilupakan.

7. Kesenjangan Dokumentasi

Claude menulis komentar kode yang sangat baik. Ia menulis dokumentasi arsitektur yang buruk. Ia dapat menjelaskan apa yang dilakukan sebuah fungsi, tetapi ia tidak dapat menjelaskan mengapa sistem disusun seperti itu, atau batasan apa yang menyebabkan keputusan desain tertentu.

Solusi CLAUDE.md

Titik baliknya datang di minggu ketiga, ketika saya membuat CLAUDE.md, sebuah file di root proyek yang berisi setiap konvensi, batasan, dan keputusan arsitektur yang perlu diketahui Claude.

Bukan dokumentasi untuk manusia. Dokumentasi untuk AI.

## API Response Format
Always use: { success: true, data: T } or { success: false, error: string }
Never return raw data without the wrapper.

## Currency
Internal storage: USD. Display: formatCurrency(amount, currency, rate).
Never hardcode exchange rates. Never store CNY directly.

## Error Handling
Never use catch(e) { console.log(e) }.
Always use the logger: logger.error('context', { error }).

Efeknya langsung terasa. Claude mulai mengikuti konvensi secara konsisten. Ketika ia menghasilkan kode yang melanggar aturan, saya bisa menunjuk ke baris tertentu di CLAUDE.md dan ia akan mengoreksi dirinya sendiri.

Tetapi CLAUDE.md saja tidak cukup. Saya butuh penegakan otomatis.

Membangun Jaring Pengaman: CI Gate untuk Kode yang Dihasilkan AI

Kami membangun pipeline CI dengan gate yang mungkin tampak paranoid dalam codebase tradisional karena mereka ada untuk menangkap bug yang dihasilkan AI sebelum pengguna menemukannya:

  • Type checking di seluruh monorepo
  • Audit SSOT yang memverifikasi tidak ada implementasi duplikat
  • Pemeriksaan sinkronisasi Enum antara enum database dan enum TypeScript
  • Validasi format respons API
  • Security gate untuk kode billing, izin, dan autentikasi

Wawasan utamanya sederhana: Claude adalah penguat (amplifier), bukan pengganti. Ia memperkuat produktivitas Anda, tetapi ia juga memperkuat kesalahan Anda. Jika Anda tidak memiliki konvensi yang kuat, Claude akan menciptakan konvensinya sendiri, dan itu tidak akan konsisten. Jika Anda tidak memiliki pemeriksaan otomatis, bug dari Claude akan mencapai produksi lebih cepat daripada bug manusia.

Bug billing tidak bisa terjadi lagi. Bukan karena Claude menjadi lebih pintar, tetapi karena pipeline sekarang memerlukan penanganan eksplisit untuk race condition async, yang diverifikasi oleh gate yang memeriksa penguncian (locking) yang tepat dalam flow pembayaran.

Apa Arti Sebenarnya dari "AI Native Development"

Ketika saya mengatakan LemonData adalah "Infrastruktur AI Native," maksud saya bukan kami menambahkan fitur AI ke produk yang sudah ada. Maksud saya adalah seluruh proses pengembangan dibentuk oleh realitas bekerja dengan mitra coding AI.

Dokumentasi kami lebih detail daripada biasanya karena Claude membutuhkan konteks eksplisit yang mungkin bisa disimpulkan oleh rekan tim manusia. Sistem type kami lebih ketat dari yang diperlukan karena Claude akan mengeksploitasi ambiguitas apa pun. Pipeline CI kami memiliki gate yang akan tampak paranoid dalam codebase tradisional karena mereka ada untuk menangkap bug yang dihasilkan AI sebelum pengguna menemukannya.

Hasilnya adalah codebase yang sebenarnya lebih mudah dipelihara daripada kebanyakan yang pernah saya kerjakan. Bukan karena AI menulis kode yang lebih baik daripada manusia, tetapi karena membangun untuk pengembangan berbantuan AI memaksa saya untuk memperjelas semua konvensi dan pemeriksaan yang biasanya hanya ada di kepala developer senior.

Untuk informasi lebih lanjut tentang apa arti AI Native sebagai filosofi, lihat Apa Itu AI Native?

Jika Anda menginginkan sisi praktis "bagaimana saya mulai menerapkannya?", dua bacaan lanjutan terbaik adalah panduan desain API agent-first dan panduan migrasi. Yang satu menjelaskan bentuk API. Yang lainnya menunjukkan seberapa cepat sebuah tim dapat benar-benar mengubah arah setelah alur kerja dirancang untuk peralihan model.

Pelajaran bagi Developer yang Membangun dengan Asisten Coding AI

Jika Anda memulai proyek dengan Claude Code, Cursor, atau asisten coding AI apa pun:

  1. Buat CLAUDE.md Anda pada hari pertama, bukan minggu ketiga seperti yang saya lakukan.
  2. Otomatiskan penegakan konvensi. Jangan mengandalkan AI untuk mengingat aturan.
  3. Tinjau kode AI seolah-olah seorang developer junior yang menulisnya. Ia cepat dan mampu, tetapi kurang konteks.
  4. Uji edge case secara manual. Test yang dihasilkan AI mencakup happy path, bukan race condition.
  5. Sentralisasikan konfigurasi sejak awal. Masalah penyebaran (scatter) akan menumpuk dengan cepat.
  6. Gunakan TypeScript yang ketat. Ini adalah pertahanan terbaik Anda terhadap type drift.
  7. Bangun CI gate lebih awal. Mereka akan terbayar dalam minggu pertama.

Apakah Saya Akan Melakukannya Lagi?

Tentu saja. Tetapi saya akan memulai dengan CLAUDE.md pada hari pertama alih-alih minggu ketiga. Dan saya akan ingat bahwa pengganda produktivitas 10x mencakup pengganda 10x pada konsekuensi dari kesalahan.

Platform yang kami bangun, 300+ model AI, API terpadu, billing multi-mata uang, dan internasionalisasi 13 bahasa, akan memakan waktu berbulan-bulan bagi tim tradisional. Kami merilisnya dalam 30 hari. Bug-nya nyata, tetapi kecepatannya juga nyata.

Pengembangan berbantuan AI bukanlah sihir. Ini adalah jenis disiplin engineering baru. Dan seperti semua disiplin ilmu, ia menghargai mereka yang menghormati batasannya.

FAQ

Bisakah satu developer benar-benar membangun platform produksi dengan Claude Code?

Ya, tetapi dengan catatan. AI menangani pembuatan kode dan refactoring dengan kecepatan luar biasa, tetapi Anda tetap memerlukan penilaian arsitektur yang kuat, quality gate otomatis, dan disiplin untuk meninjau semuanya dengan cermat. Kecepatan 10x mencakup bug 10x lebih cepat jika Anda tidak hati-hati.

Apa itu CLAUDE.md?

CLAUDE.md adalah file instruksi tingkat proyek yang dibaca oleh asisten coding AI untuk mendapatkan konteks. File ini berisi konvensi coding, keputusan arsitektur, dan batasan yang harus diikuti oleh AI. Anggap saja sebagai dokumentasi onboarding untuk rekan tim AI Anda.

Bagaimana cara mencegah bug yang dihasilkan AI di produksi?

CI gate otomatis sangat penting: type checking, audit SSOT, verifikasi sinkronisasi enum, dan security gate khusus domain. Wawasan utamanya adalah AI memperkuat produktivitas dan kesalahan, jadi Anda memerlukan pemeriksaan otomatis untuk menangkap kesalahan yang diperkuat tersebut.

Apakah pengembangan berbantuan AI cocok untuk sistem billing dan pembayaran?

Ya, tetapi dengan kewaspadaan ekstra. Kode pembayaran membutuhkan penanganan race condition yang eksplisit, penguncian (locking) yang tepat, dan pengujian edge case yang menyeluruh. Test yang dihasilkan AI cenderung mencakup happy path, jadi Anda harus menguji skenario kegagalan dan operasi konkuren secara manual.


LemonData memberi Anda akses ke 300+ model AI melalui satu API. Mulai gratis dan uji platform dengan kredit $1.

Share: