Handbook AI Engineering
Bagian VI - Bab 20

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.

Apa yang Akan Kamu Pahami Setelah Bab Ini

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.

✗ Pola yang Melemahkan
"AI sebagai pengganti berpikir"
Dapat tugas
Langsung paste ke AI
Copy output tanpa dibaca
Tidak bisa menjelaskan hasilnya
✓ Pola yang Memperkuat
"AI sebagai akselerator berpikir"
Dapat tugas, pahami dulu
Gunakan AI untuk mempercepat bagian yang sudah dipahami
Review dan verifikasi output AI
Bisa menjelaskan dan modifikasi
Aturan Praktis

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

Prompt Lemah

"Bagaimana cara membuat endpoint FastAPI yang menerima file PDF?"

Prompt Kuat

"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

Hanya Minta Kode

"Buatkan implementasi FAISS index untuk 1 juta vektor."

Minta Kode + Penjelasan

"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

Pendekatan Lemah

"Kodenya error, tolong perbaiki." [paste kode panjang]

Pendekatan Terstruktur

"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

Prompt Self-Review

"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."

Apa yang Terjadi

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

CARA AI MEMBANTU
  • 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
CONTOH PROMPT EFEKTIF

"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

CARA AI MEMBANTU
  • 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
ATURAN YANG TIDAK BOLEH DILANGGAR

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

CARA AI MEMBANTU
  • 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
TEMPLATE DEBUGGING

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

CARA AI MEMBANTU
  • Mengidentifikasi edge case yang tidak ditangani
  • Menghasilkan test case dari spesifikasi fungsi
  • Menyampaikan refactoring yang meningkatkan keterbacaan
  • Memeriksa apakah error handling cukup untuk produksi
CONTOH PROMPT REVIEW

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

CARA AI MEMBANTU
  • 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
CONTOH PROMPT BELAJAR

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.

Perlu Verifikasi Ketat

Library / API Versi Terbaru

AI dilatih pada data historis. Untuk library yang berubah cepat (LangChain, Pinecone), API yang dihasilkan bisa sudah deprecated.

Selalu verifikasi ke dokumentasi resmi
Perlu Verifikasi Ketat

Logika Bisnis Spesifik Domain

AI tidak tahu aturan bisnis spesifik proyekmu. Kode yang dihasilkan mungkin secara teknis benar tapi salah secara logika bisnis.

Selalu test dengan skenario bisnis nyata
Perlu Verifikasi Ketat

Security dan Keamanan Data

AI sering menghasilkan kode yang "berjalan" tapi melewatkan validasi keamanan penting: SQL injection, path traversal, rate limiting.

Security review wajib dilakukan manual
Perlu Verifikasi Ketat

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.

Profiling dan load testing tetap wajib

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.

KATEGORIKAN PER TASK

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

DESAIN ARSITEKTUR SISTEM

Keputusan ini harus kamu buat sendiri berdasarkan pemahaman constraint bisnis. AI bisa jadi sparring partner, bukan pengambil keputusan.

REVIEW KODE YANG MENYENTUH DATA SENSITIF ATAU AUTENTIKASI

Baca setiap baris secara manual, tidak cukup hanya "AI sudah generate jadi harusnya aman".

MEMAHAMI ERROR YANG DITEMUI PERTAMA KALI

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.

PENGGUNAAN PALING EFEKTIF

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

Jangan submit kode yang tidak bisa kamu jelaskan baris per baris.

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.

Jangan percaya output AI untuk versi library terbaru tanpa verifikasi.

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.

Terlalu banyak konteks dalam satu prompt sering menghasilkan output yang lebih buruk.

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.

Gunakan AI untuk memahami kode orang lain, bukan hanya menulis kode baru.

"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.

Mulai setiap sesi debug dengan membaca pesan error sendiri sebelum ke AI.

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

Checklist Pemahaman
  • 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.