AI-Accelerated Development
Mental model AI sebagai akselerator berpikir, teknik prompting untuk tugas teknis, integrasi AI di setiap fase development, dan batasan yang perlu dipahami.
Ada perbedaan mendasar antara menggunakan AI sebagai pengganti berpikir dan menggunakannya sebagai akselerator berpikir. Bab ini membahas cara kedua: bagaimana AI bisa mempercepat setiap fase pekerjaan teknis seorang AI Engineer, dari menulis kode hingga debugging, tanpa menciptakan ketergantungan yang melemahkan kemampuanmu sendiri.
Bab ini sengaja ditulis tool-agnostic, karena nama tools spesifik akan berubah, tapi prinsip penggunaannya tidak.
20.1 Mental Model yang Benar
Sebelum membahas tekniknya, penting menetapkan mental model yang benar tentang peran AI dalam workflow teknis.
Jangan pernah submit kode atau jawaban yang tidak bisa kamu jelaskan baris per baris. Bukan karena AI salah, tapi karena kamu yang bertanggung jawab atas hasilnya, dan pemahaman adalah syarat untuk bisa debug ketika sesuatu bermasalah.
20.2 Teknik Prompting untuk Tugas Teknis
Prompting untuk tugas development berbeda dari prompting untuk sistem produksi. Di sini kamu adalah pengguna yang butuh output berkualitas tinggi, bukan yang merancang sistem untuk orang lain.
1. Berikan Konteks Penuh, Bukan Hanya Pertanyaan
"Bagaimana cara membuat endpoint FastAPI yang menerima file PDF?"
"Saya membangun API RAG dengan FastAPI + Python 3.11. Endpoint ini akan menerima file PDF dari frontend, mengekstrak teksnya dengan pdfplumber, lalu meneruskannya ke fungsi index_pdf() yang sudah ada. Tampilkan endpoint lengkap dengan validasi ukuran file maksimum 10MB dan error handling untuk file yang bukan PDF."
Mengapa: konteks yang lengkap (framework, versi, fungsi yang sudah ada, constraint) menghasilkan kode yang langsung bisa diintegrasikan, bukan kode generik yang perlu diadaptasi.
2. Minta Penjelasan Bersamaan dengan Kode
"Buatkan implementasi FAISS index untuk 1 juta vektor."
"Buatkan implementasi FAISS index untuk 1 juta vektor. Untuk setiap keputusan teknis yang tidak obvious (jenis index, parameter nlist, nprobe), jelaskan singkat mengapa dipilih dan apa trade-off-nya."
Mengapa: memaksa AI menjelaskan keputusannya membantumu memahami kode yang dihasilkan, sekaligus mengekspos asumsi yang mungkin tidak sesuai dengan constraint proyekmu.
3. Gunakan AI untuk Debugging Secara Terstruktur
"Kodenya error, tolong perbaiki." [paste kode panjang]
"Kode ini menghasilkan error berikut: [paste pesan error lengkap]
Konteks: Python 3.11, FastAPI 0.104. Fungsi ini dipanggil saat startup. Sebelumnya berjalan, mulai error setelah update pinecone-client.
Kode yang bermasalah: [paste bagian yang relevan saja]
Tolong: (1) identifikasi penyebab root error, (2) jelaskan mengapa terjadi, (3) berikan solusi minimal."
Mengapa: pesan error lengkap, konteks versi, dan informasi kapan mulai error memberikan AI semua yang dibutuhkan untuk diagnosis yang tepat, bukan tebakan.
4. Review Kode yang Dihasilkan dengan AI
"Review kode yang baru saja kamu tulis dari perspektif:
1. Apakah ada edge case yang tidak ditangani?
2. Apakah ada potensi memory leak atau resource leak?
3. Apakah error handling-nya cukup untuk produksi?
4. Apakah ada dependency yang tidak perlu?
Jika ada masalah, tunjukkan baris mana dan jelaskan."
AI menghasilkan kode → AI mereview kodenya sendiri → Sering menemukan masalah yang tidak terlihat di generasi pertama.
Ini bukan jaminan kode sempurna, tapi mengurangi masalah yang lolos ke production review.
Mengapa: generasi pertama AI sering mengoptimalkan untuk "bisa berjalan" tapi bukan untuk "aman di produksi". Self-review menangkap banyak masalah tambahan sebelum masuk ke production review.
20.3 Mengintegrasikan AI ke Setiap Fase Development
AI paling berguna bukan di satu titik tertentu, tapi di setiap fase siklus kerja, dengan cara yang berbeda di setiap fasenya.
1. Perencanaan dan Desain Sistem
- Menjelaskan trade-off antar arsitektur yang sedang dipertimbangkan
- Mengidentifikasi edge case yang belum terpikirkan dari spesifikasi awal
- Mengestimasi kompleksitas implementasi dari deskripsi fitur
- Menyampaikan library yang relevan untuk stack tertentu
"Saya akan membangun sistem RAG untuk dokumen hukum dalam Bahasa Indonesia. Dokumennya bisa sangat panjang (200+ halaman). Apa saja keputusan arsitektur kritis yang perlu saya buat sebelum mulai coding, dan apa trade-off masing-masing?"
2. Penulisan Kode
- Menulis boilerplate dan scaffolding yang berulang
- Menghasilkan implementasi awal dari spesifikasi yang jelas
- Melengkapi docstring dan type hint secara otomatis
- Mengonversi pseudocode menjadi kode yang berjalan
Jangan pernah submit kode yang tidak bisa kamu jelaskan.
Setelah AI menghasilkan kode, selalu:
1. Baca setiap baris
2. Pastikan kamu mengerti mengapa setiap baris ada
3. Jalankan dan verifikasi output-nya
4. Baru commit ke repository
3. Debugging dan Problem Solving
- Menjelaskan pesan error dalam bahasa yang mudah dipahami
- Menyampaikan penyebab yang paling mungkin dari gejala tertentu
- Mensimulasikan eksekusi kode untuk menemukan bug logika
- Menjelaskan perbedaan perilaku antar versi library
Error: [paste pesan error lengkap]
Konteks:
• [framework + versi]
• [kapan mulai terjadi]
• [apa yang sudah dicoba]
Kode yang relevan: [paste bagian minimal yang terkait]
Bantu saya: identifikasi root cause, jelaskan mengapa, berikan solusi minimal.
4. Code Review dan Testing
- Mengidentifikasi edge case yang tidak ditangani
- Menghasilkan test case dari spesifikasi fungsi
- Menyampaikan refactoring yang meningkatkan keterbacaan
- Memeriksa apakah error handling cukup untuk produksi
Review fungsi ini dari perspektif produksi: [paste kode]
Fokus pada:
1. Edge case yang tidak tertangani
2. Potensi error di luar kondisi normal
3. Apakah sudah aman untuk data sensitif
4. Satu refactoring paling berdampak
Jangan rewrite ulang - hanya tunjukkan masalah spesifik.
5. Belajar Konsep dan Teknologi Baru
- Menjelaskan konsep baru dengan konteks yang relevan dengan yang sudah diketahui
- Membandingkan pendekatan baru dengan yang sudah familiar
- Menghasilkan contoh minimal yang mengisolasi konsep tertentu
- Menjelaskan dokumentasi yang ambigu atau terlalu padat
Saya sudah familiar dengan REST API dan FastAPI. Jelaskan konsep GraphQL dari perspektif seseorang dengan latar belakang itu, fokus pada perbedaan fundamental, kapan lebih tepat digunakan, dan apa yang perlu dipelajari dulu sebelum menggunakannya di produksi.
20.4 Batasan yang Perlu Dipahami
AI coding assistant bukan oracle yang selalu benar. Ada kategori masalah di mana output AI secara sistematis kurang bisa diandalkan.
Library / API Versi Terbaru
AI dilatih pada data historis. Untuk library yang berubah cepat (LangChain, Pinecone), API yang dihasilkan bisa sudah deprecated.
Logika Bisnis Spesifik Domain
AI tidak tahu aturan bisnis spesifik proyekmu. Kode yang dihasilkan mungkin secara teknis benar tapi salah secara logika bisnis.
Security dan Keamanan Data
AI sering menghasilkan kode yang "berjalan" tapi melewatkan validasi keamanan penting: SQL injection, path traversal, rate limiting.
Performa di Skala Produksi
Kode yang dihasilkan AI biasanya dioptimalkan untuk keterbacaan, bukan performa. Di skala 1 juta request/hari, loop yang tidak efisien terasa.
20.5 Membangun Workflow yang Berkelanjutan
Penggunaan AI yang efektif bukan tentang produktivitas sesaat, tapi tentang membangun sistem kerja yang terus meningkat. Berikut pendekatan untuk menjaga agar AI tetap menjadi alat yang memperkuat, bukan melemahkan, kemampuanmu:
1. Bangun perpustakaan prompt pribadimu
Setiap kali menemukan prompt yang menghasilkan output sangat baik untuk task tertentu, simpan ke file teks atau notion. Dalam 3 bulan kamu punya koleksi prompt yang jauh lebih efektif dari template generik.
Debugging, code review, belajar konsep, menulis test. Prompt untuk debugging Python berbeda dari prompt untuk debugging Docker.
2. Tetapkan aturan pribadi tentang apa yang tidak boleh didelegasikan ke AI
Keputusan ini harus kamu buat sendiri berdasarkan pemahaman constraint bisnis. AI bisa jadi sparring partner, bukan pengambil keputusan.
Baca setiap baris secara manual, tidak cukup hanya "AI sudah generate jadi harusnya aman".
Sebelum paste ke AI, baca pesan error dan pikirkan sendiri selama 5 menit. Proses ini membangun intuisi debugging yang tidak bisa digantikan.
3. Ukur apakah AI benar-benar mempercepatmu
Kadang iterasi bolak-balik dengan AI untuk mengklarifikasi prompt memakan waktu lebih lama dari menulis kode langsung. Jika task sudah familiar dan sederhana, tulis sendiri, jangan gunakan AI hanya karena bisa.
AI paling menghemat waktu untuk: boilerplate, konversi format data, menulis test dari spesifikasi, dan penjelasan dokumentasi asing.
Paling tidak efektif untuk: task yang membutuhkan konteks bisnis dalam atau keputusan trade-off arsitektur.
Kesalahan Umum
Ini bukan soal etika, ini soal kemampuanmu untuk debug ketika kode itu bermasalah di produksi pukul 2 pagi. Kode yang tidak dipahami adalah hutang teknis yang akan ditagih di waktu yang paling tidak tepat.
LangChain, Pinecone, dan LangGraph adalah contoh library yang API-nya berubah signifikan antar versi. Kode yang dihasilkan AI mungkin valid untuk versi 6 bulan lalu tapi sudah deprecated sekarang. Selalu cek dokumentasi resmi untuk fungsi yang tidak familiar.
Paste seluruh file yang berisi ribuan baris tidak membuat AI lebih pintar, justru sering membuatnya kehilangan fokus. Isolasi bagian yang relevan saja: fungsi yang bermasalah, pesan error yang spesifik, dan konteks minimal yang dibutuhkan untuk memahaminya.
"Jelaskan apa yang dilakukan fungsi ini dan mengapa ia menggunakan pendekatan ini" adalah salah satu penggunaan AI yang paling underrated di antara developer. Membaca dan memahami kode yang sudah ada adalah skill yang sama pentingnya dengan menulis kode baru, dan AI bisa mempercepat proses ini secara signifikan.
Luangkan 5 menit untuk membaca dan berpikir tentang pesan error sebelum paste ke AI. Proses ini membangun intuisi yang tidak bisa digantikan: mengenali pola error, memahami stack trace, dan menebak penyebab berdasarkan pengalaman. Kemampuan ini yang membedakan engineer senior dari junior, dan tidak bisa dibangun dengan langsung mendelegasikan setiap error ke AI.
Ringkasan Bab 20
- Saya menggunakan AI sebagai akselerator berpikir bukan pengganti berpikir. Saya memahami masalah sebelum menggunakan AI untuk mempercepatnya.
- Saya tidak pernah submit kode yang tidak bisa saya jelaskan baris per baris, terlepas dari apakah kode itu ditulis AI atau manusia.
- Saya memberikan konteks yang lengkap saat prompting untuk tugas teknis: framework, versi, constraint, dan apa yang sudah ada.
- Saya meminta penjelasan bersamaan dengan kode, sehingga bisa memverifikasi keputusan teknis yang dibuat AI.
- Saya tahu kategori di mana output AI perlu diverifikasi lebih ketat: versi library terbaru, logika bisnis spesifik, keamanan data, dan performa di skala produksi.
- Saya memulai sesi debugging dengan membaca pesan error sendiri selama 5 menit sebelum mendelegasikan ke AI.
- Saya sedang atau berencana membangun perpustakaan prompt pribadi yang dikategorikan per jenis task.