8 menit

Pola Prompt untuk Arsitektur Perangkat Lunak yang Lebih Bersih dan Lebih Sedikit Penulisan Ulang

Pelajari pola prompting terbukti yang mengarahkan AI ke persyaratan lebih jelas, desain modular, dan kode yang mudah diuji—mengurangi refactor dan siklus penulisan ulang.

Pola Prompt untuk Arsitektur Perangkat Lunak yang Lebih Bersih dan Lebih Sedikit Penulisan Ulang

Seperti Apa “Arsitektur yang Lebih Bersih” dalam Pekerjaan yang Dibantu AI

“Arsitektur yang lebih bersih” dalam tulisan ini bukan berarti kerangka kerja tertentu atau diagram yang sempurna. Maksudnya adalah Anda dapat menjelaskan sistem dengan sederhana, mengubahnya tanpa merusak bagian yang tidak terkait, dan memverifikasi perilaku tanpa pengujian luar biasa.

Definisi praktis: kejelasan, modularitas, keterujian

Kejelasan berarti tujuan dan bentuk sistem terlihat dari deskripsi singkat: apa yang dilakukannya, siapa yang menggunakannya, data apa yang dikelola, dan apa yang tidak boleh dilakukan. Dalam pekerjaan yang dibantu AI, kejelasan juga berarti model bisa mengulang persyaratan kembali kepada Anda dengan cara yang Anda setujui.

Modularitas berarti tanggung jawab memiliki batas yang bersih. Setiap modul memiliki tugas, input/output, dan pengetahuan minimal tentang internal modul lain. Ketika AI menghasilkan kode, modularitas mencegahnya menyebarkan aturan bisnis ke controller, UI, dan akses data.

Keterujian berarti arsitektur membuat "membuktikan ia bekerja" menjadi murah. Aturan bisnis bisa diuji tanpa sistem penuh, dan tes integrasi fokus pada beberapa kontrak daripada setiap jalur kode.

Mengapa penulisan ulang terjadi (dan mengapa AI bisa memperparahnya)

Penulisan ulang biasanya bukan disebabkan oleh “kode buruk”—melainkan oleh keterbatasan yang hilang, ruang lingkup yang samar, dan asumsi tersembunyi. Contoh:

  • Sebuah fitur dibangun untuk satu tipe pengguna, lalu muncul fakta ada tiga peran dengan izin berbeda.
  • Aturan performa, logging audit, atau retensi data muncul terlambat.
  • API eksternal berperilaku berbeda dari yang diharapkan, memaksa perubahan di banyak tempat.

AI dapat mempercepat mode kegagalan ini dengan menghasilkan keluaran yang meyakinkan dengan cepat, sehingga mudah membangun di atas fondasi yang goyah.

Apa yang diharapkan dari pola dalam panduan ini

Pola berikut adalah template untuk diadaptasi, bukan prompt ajaib. Tujuan sebenarnya adalah memaksa percakapan yang tepat lebih awal: mengklarifikasi keterbatasan, membandingkan opsi, mendokumentasikan asumsi, dan mendefinisikan kontrak. Jika Anda melewatkan pemikiran itu, model akan dengan senang hati mengisi kekosongan—dan Anda akan membayar nanti.

Di mana pola ini cocok dalam alur kerja Anda

Anda akan menggunakannya sepanjang siklus delivery:

  • Perencanaan: memperketat kebutuhan dan kriteria keberhasilan
  • Desain: memilih batasan, alur data, dan kontrak
  • Penulisan kode: menjaga pemisahan tanggung jawab saat implementasi tumbuh
  • Review: menangkap risiko dan ketidaksesuaian sebelum menjadi penulisan ulang

Jika Anda menggunakan workflow vibe-coding (sistem dihasilkan dan diiterasi via chat), checkpoint ini semakin penting. Misalnya, di Koder.ai Anda bisa menjalankan loop “planning mode” untuk mengunci kebutuhan dan kontrak sebelum menghasilkan kode React/Go/PostgreSQL, lalu memakai snapshot/rollback untuk iterasi aman ketika asumsi berubah—tanpa mengubah setiap perubahan menjadi penulisan ulang.

Cara Menggunakan Pola Prompt Tanpa Menambah Pekerjaan

Pola prompting paling bernilai ketika mereka mengurangi churn keputusan. Triknya adalah menggunakan pola sebagai checkpoint singkat yang bisa diulang—sebelum menulis kode, saat mendesain, dan selama review—agar AI menghasilkan artefak yang dapat digunakan ulang, bukan teks tambahan yang harus Anda saring.

Kapan menggunakan pola

Sebelum coding: jalankan satu loop “alignment” untuk mengonfirmasi tujuan, pengguna, keterbatasan, dan metrik keberhasilan.

Saat desain: gunakan pola yang memaksa trade-off eksplisit (mis. alternatif, risiko, batas data) sebelum mulai implementasi.

Saat review: gunakan prompt bergaya checklist untuk menemukan celah (kasus tepi, monitoring, keamanan, performa) saat perubahan masih murah.

Kumpulkan input terlebih dahulu (ringkas saja)

Anda akan mendapat keluaran lebih baik dengan bundel input kecil dan konsisten:

  • Tujuan: apa arti “selesai” (target latensi, hasil UX, batas biaya)
  • Pengguna: peran, alur utama, dan titik sakit utama
  • Keterbatasan: stack teknis, tenggat, persyaratan kepatuhan/keamanan
  • Data & integrasi: sumber, kepemilikan, API, dependensi pihak ketiga

Jika Anda tidak tahu sesuatu, katakan secara eksplisit dan minta AI mencantumkan asumsi.

Minta format keluaran yang dapat dipakai ulang

Daripada “jelaskan desain”, minta artefak yang bisa Anda tempel ke dokumen atau tiket:

  • Sebuah decision log (opsi → pro/kontra → dipilih → mengapa)
  • Tabel komponen dengan tanggung jawab dan batasan
  • Checklist untuk reliabilitas dan pengujian
  • Deskripsi diagram sederhana (mis. teks Mermaid) yang bisa Anda render nanti

Iterasi dalam loop kecil dengan acceptance criteria

Lakukan loop 10–15 menit: prompt → skim → rapikan. Selalu sertakan acceptance criteria (apa yang harus benar agar desain dapat diterima), lalu minta AI untuk self-check melawannya. Itu mencegah proses berubah menjadi redesign tanpa akhir dan membuat pola berikutnya cepat diaplikasikan.

Pola 1: Klarifikasi Kebutuhan Sebelum Desain Apa Pun

Kebanyakan “penulisan ulang arsitektur” bukan disebabkan oleh diagram buruk—melainkan membangun hal yang tepat untuk masalah yang salah (atau tidak lengkap). Saat Anda memakai LLM awal, jangan minta arsitektur terlebih dulu. Minta ia mengekspos ambiguitas.

Gerakan prompting: ubah ketidakpastian menjadi checklist

Gunakan model sebagai pewawancara kebutuhan. Tujuan Anda adalah spes singkat yang diprioritaskan yang bisa Anda konfirmasi sebelum siapa pun mendesain komponen, memilih database, atau commit ke API.

Berikut template copy-paste yang bisa Anda gunakan:

You are my requirements analyst. Before proposing any architecture, do this:

1) Ask 10–15 clarifying questions about missing requirements and assumptions.
   - Group questions by: users, workflows, data, integrations, security/compliance, scale, operations.

2) Produce a prioritized scope list:
   - Must-have
   - Nice-to-have
   - Explicitly out-of-scope

3) List constraints I must confirm:
   - Performance (latency/throughput targets)
   - Cost limits
   - Security/privacy
   - Compliance (e.g., SOC2, HIPAA, GDPR)
   - Timeline and team size

4) End with: “Restate the final spec in exactly 10 bullets for confirmation.”

Context:
- Product idea:
- Target users:
- Success metrics:
- Existing systems (if any):

Apa yang dicari dalam keluaran

Anda mau pertanyaan yang memaksa keputusan (bukan sekadar “ceritakan lebih banyak”), plus daftar must-have yang benar-benar bisa diselesaikan dalam timeline Anda.

Perlakukan pengulangan “10 butir” sebagai kontrak: tempelkan ke tiket/PRD, minta ya/tidak cepat dari pemangku kepentingan, dan hanya setelah itu lanjut ke arsitektur. Langkah ini mencegah penyebab paling umum refactor terlambat: membangun fitur yang sebenarnya tidak pernah benar-benar diperlukan.

Pola 2: User Journeys Dulu, Baru Pilihan Teknis

Saat Anda mulai dari alat (“Haruskah kita pakai event sourcing?”) seringkali Anda mendesain untuk arsitektur bukan untuk pengguna. Jalan yang lebih cepat ke struktur bersih adalah meminta AI menggambarkan user journeys dulu dalam bahasa biasa, lalu menerjemahkannya ke komponen, data, dan API.

Template prompt sederhana berorientasi journey

Gunakan ini sebagai titik mulai copy-paste:

  • Roles: user / admin / system
  • Key actions: apa yang setiap peran coba capai
  • Edge cases: apa yang bisa salah (input tidak valid, izin hilang, penyelesaian parsial)

Lalu minta:

  1. “Describe the step-by-step flow for each action in plain language.”

  2. “Provide a simple state diagram or state list (e.g., Draft → Submitted → Approved → Archived).”

  3. “List non-happy-path scenarios: timeouts, retries, duplicate requests, cancellations, and invalid inputs.”

Mengubah journeys menjadi keputusan (tanpa melompat lebih awal)

Setelah alur jelas, Anda bisa meminta AI memetakan ke pilihan teknis:

  • Di mana kita perlu validasi vs aturan bisnis?
  • Langkah mana yang memerlukan idempotency (retry aman)?
  • Data mana yang harus disimpan, mana yang bisa diturunkan, dan mana yang butuh jejak audit?

Barulah kemudian minta sketsa arsitektur (layanan/modul, batasan, dan tanggung jawab) yang terkait langsung ke langkah alur.

Ubah flow menjadi acceptance criteria yang bisa diuji

Akhiri dengan meminta AI mengubah setiap journey menjadi acceptance criteria yang bisa diuji:

  • “Given/When/Then untuk setiap langkah dan kasus kegagalan.”
  • “Apa yang harus dikembalikan atau ditampilkan sistem?”
  • “Apa yang harus dilog dan apa yang memicu retry vs error yang terlihat pengguna?”

Pola ini mengurangi penulisan ulang karena arsitektur tumbuh dari perilaku pengguna—bukan dari asumsi tentang teknologi.

Pola 3: Log Asumsi untuk Mencegah Penulisan Ulang yang Mengejutkan

Kebanyakan pengerjaan ulang bukan karena “desain buruk”—melainkan asumsi tersembunyi yang ternyata salah. Saat Anda meminta LLM untuk arsitektur, ia sering mengisi celah dengan tebakan yang masuk akal. Log asumsi membuat tebakan itu terlihat lebih awal, saat perubahan masih murah.

Apa yang harus Anda minta model lakukan

Tujuan Anda adalah memaksa pemisahan bersih antara fakta yang Anda berikan dan asumsi yang ia buat.

Gunakan pola prompt ini:

Template prompt “Before proposing any solution: list your assumptions. Mark each as validated (explicitly stated by me) or unknown (you inferred it). For each unknown assumption, propose a fast way to validate it (question to ask, metric to check, or quick experiment). Then design based only on validated assumptions, and call out where unknowns could change the design.”

Format log asumsi yang bisa dipakai ulang

Buat singkat supaya orang benar-benar menggunakannya:

  • Assumption:
  • Status: validated / unknown
  • Why it matters: keputusan apa yang dipengaruhi
  • How to validate: pertanyaan, cek, atau spike
  • If wrong, likely change: apa yang akan Anda rancang ulang

Trigger “Apa yang akan mengubah jawaban Anda?”

Tambahkan satu baris yang membuat model menyebutkan tipping point-nya:

  • “List 5 triggers: what would change your answer? (mis. volume pengguna, target latensi, kebutuhan kepatuhan, aturan retensi).”

Pola ini mengubah arsitektur menjadi kumpulan keputusan bersyarat. Anda tidak hanya mendapat diagram—melainkan peta hal-hal yang harus dikonfirmasi sebelum commit.

Pola 4: Bandingkan Beberapa Arsitektur Sebelum Memilih Satu

Luncurkan potongan MVP dengan cepat
Buat potongan MVP kecil ujung-ke-ujung lewat chat dan iterasi tanpa mengubah perubahan menjadi penulisan ulang.

Alat AI hebat dalam menghasilkan satu desain “terbaik”—tetapi itu sering hanya opsi pertama yang masuk akal. Arsitektur yang lebih bersih biasanya muncul ketika Anda memaksa perbandingan lebih awal, saat perubahan masih murah.

Template prompt inti

Gunakan prompt yang mengharuskan beberapa arsitektur dan tabel tradeoff terstruktur:

Propose 2–3 viable architectures for this project.
Compare them in a table with criteria: complexity, reliability, time-to-ship, scalability, cost.
Then recommend one option for our constraints and explain why it wins.
Finally, list “what we are NOT building” in this iteration to keep scope stable.

Context:
- Users and key journeys:
- Constraints (team size, deadlines, budget, compliance):
- Expected load and growth:
- Current systems we must integrate with:

Mengapa ini mengurangi penulisan ulang

Perbandingan memaksa model (dan Anda) mengungkap asumsi tersembunyi: di mana state tinggal, bagaimana layanan berkomunikasi, apa yang harus sinkron, dan apa yang bisa ditunda.

Tabel kriteria penting karena menghentikan perdebatan seperti “microservices vs monolith” menjadi sekadar opini. Ia menambat keputusan ke apa yang benar-benar Anda pedulikan—mengirim cepat, mengurangi overhead operasional, atau meningkatkan reliabilitas.

Minta rekomendasi dan batasan

Jangan terima jawaban “tergantung.” Minta rekomendasi jelas dan keterbatasan spesifik yang dioptimalkan.

Juga tekankan “apa yang tidak kami bangun.” Contoh: “Tidak ada failover multi-region,” “Tidak ada sistem plugin,” “Tidak ada notifikasi real-time.” Ini menjaga arsitektur agar tidak meluas diam-diam untuk mendukung fitur yang belum Anda komit—dan mencegah penulisan ulang kejutan saat ruang lingkup berubah nanti.

Pola 5: Prompt Batas Modul dan Tanggung Jawab

Sebagian besar penulisan ulang terjadi karena batas-batas samar: segala sesuatu “menyentuh segala sesuatu,” dan perubahan kecil beriak ke seluruh basis kode. Pola ini memakai prompt yang memaksa kepemilikan modul yang jelas sebelum ada debat framework atau diagram kelas.

Ide inti

Minta AI mendefinisikan modul dan tanggung jawab, serta apa yang secara eksplisit tidak termasuk dalam setiap modul. Lalu minta antarmuka (input/output) dan aturan dependensi, bukan rencana build atau detail implementasi.

Template copy-paste

Gunakan ini saat Anda merancang fitur baru atau merombak area berantakan:

  • Context: <satu paragraf tentang produk/fitur>
  • Goal: Propose a modular architecture with 4–8 modules.
  1. List modules with:

    • Purpose (1 sentence)
    • Responsibilities (3–5 bullets)
    • Non-responsibilities (“does NOT handle…”) (2–3 bullets)
  2. For each module, define interfaces only:

    • Inputs (events/requests/data)
    • Outputs (responses/events/side effects)
    • Public API surface (function names or endpoints ok; no internal classes)
  3. Dependency rules:

    • Allowed dependencies (A → B)
    • Forbidden dependencies (A ↛ C) with reasoning
    • Where shared types live (and what must never be shared)
  4. Future change test: Given these likely changes: <list 3>, show which single module should absorb each change and why.

Seperti apa keluaran yang “bagus”

Anda menginginkan modul yang dapat Anda jelaskan ke rekan dalam kurang dari satu menit. Jika AI mengusulkan modul “Utils” atau menaruh aturan bisnis di controller, dorong balik: “Pindahkan logika keputusan ke modul domain dan jaga adapter tetap tipis.”

Saat selesai, Anda punya batasan yang bertahan terhadap kebutuhan baru—karena perubahan punya rumah yang jelas, dan aturan dependensi mencegah coupling tak sengaja.

Pola 6: Data & Kontrak API Dulu (Hindari Pekerjaan Ulang Integrasi)

Pekerjaan ulang integrasi sering bukan karena “kode buruk”—melainkan kontrak yang tidak jelas. Jika model data dan bentuk API diputuskan terlambat, setiap tim (atau modul) mengisi kekosongan berbeda-beda, dan Anda menghabiskan sprint berikutnya menyelaraskan asumsi yang tidak cocok.

Mulai dengan meminta kontrak sebelum bicara framework, database, atau microservices. Kontrak jelas menjadi referensi bersama yang menjaga UI, backend, dan pipeline data tetap selaras.

Prompt contract-first

Gunakan prompt awal ini dengan asisten AI Anda:

  • Template: “Describe the data model, ownership, and lifecycle for each entity”

Lalu segera ikuti dengan:

  • Minta kontrak API dengan contoh (request, response, bentuk error)
  • Tambahkan versioning dan ekspektasi kompatibilitas mundur
  • Minta aturan validasi dan kasus tepi per field

Seperti apa keluaran yang “bagus”

Anda mau artefak konkret, bukan prosa. Contoh:

  • Entity: Subscription
    • Owner: Billing service
    • Lifecycle: created on checkout → active → past_due → canceled (soft-delete after 90 days)
    • Source of truth: billing DB; layanan lain cache hanya baca

Dan sketsa API:

POST /v1/subscriptions
{
  "customer_id": "cus_123",
  "plan_id": "pro_monthly",
  "start_date": "2026-01-01"
}
201 Created
{
  "id": "sub_456",
  "status": "active",
  "current_period_end": "2026-02-01"
}
422 Unprocessable Entity
{
  "error": {
    "code": "VALIDATION_ERROR",
    "message": "start_date must be today or later",
    "fields": {"start_date": "in_past"}
  }
}

Aturan versioning dan kompatibilitas

Minta AI menyatakan aturan seperti: “Field tambahan boleh tanpa bump versi; penggantian nama memerlukan /v2; klien harus mengabaikan field yang tidak dikenal.” Langkah tunggal ini mencegah perubahan diam-diam yang merusak—dan penulisan ulang yang menyusul.

Pola 7: Mode Kegagalan dan Checklist Reliabilitas

Tetapkan skema API
Buat kontrak data dan API sejak awal agar UI, backend, dan integrasi selaras.

Arsitektur dirombak ketika desain jalur bahagia bertemu trafik nyata, dependensi fluktuatif, dan perilaku pengguna tak terduga. Pola ini membuat reliabilitas menjadi keluaran desain eksplisit, bukan perjuangan pasca-rilis.

Template copy/paste

Gunakan ini pada deskripsi arsitektur pilihan Anda:

List failure modes; propose mitigations; define observability signals.

Untuk setiap mode kegagalan:

  • Apa pemicunya?
  • Dampak ke pengguna (apa yang pengguna alami)
  • Mitigasi (desain + operasional)
  • Retries, idempotency, rate limits, timeouts pertimbangan
  • Observability: logs/metrics/traces + ambang alert

Yang harus diminta model untuk cakupi (non-negotiable)

Fokuskan respons dengan menyebut antarmuka yang bisa gagal: API eksternal, database, antrean, penyedia auth, dan job background. Lalu minta keputusan konkret:

  • Retries: kapan retry, berapa kali, strategi backoff, error mana yang retryable.
  • Idempotency: idempotency key, jendela dedupe, dan state yang aman untuk replay.
  • Rate limits: batas per user/IP/service, pesan ke klien, dan proteksi sisi server.
  • Timeouts: per dependensi, anggaran permintaan keseluruhan, dan propagasi pembatalan.

Keluaran checklist reliabilitas

Akhiri prompt dengan: “Kembalikan checklist sederhana yang bisa kami tinjau dalam 2 menit.” Checklist yang baik mencakup: timeout dependensi diset, retry dibatasi, idempotency untuk aksi create/charge, backpressure/rate limiting ada, jalur degradasi yang anggun didefinisikan.

Observability terkait tindakan pengguna

Minta event sekitar momen pengguna (bukan hanya intern sistem): “user_signed_up”, “checkout_submitted”, “payment_confirmed”, “report_generated”. Untuk tiap event, minta:

  • Field log (user_id, request_id, idempotency_key)
  • Metrics (success rate, latency p95/p99, retry count)
  • Traces (span per panggilan dependensi)

Ini mengubah reliabilitas menjadi artefak desain yang bisa Anda validasi sebelum kode ada.

Pola 8: Perencanaan Irisan MVP untuk Mengurangi Overbuilding

Salah satu cara umum desain yang dibantu AI menghasilkan penulisan ulang adalah mendorong arsitektur “lengkap” terlalu dini. Perbaikannya sederhana: paksa rencana dimulai dengan irisan paling kecil yang berguna—yang memberikan nilai, menguji desain, dan menjaga opsi masa depan tetap terbuka.

Template prompt

Gunakan ini saat solusi terasa berkembang lebih cepat daripada kebutuhan:

Template: “Propose the smallest usable slice; define success metrics; list follow-ups.”

Minta model menjawab dengan:

  • MVP slice: apa yang termasuk untuk mengirim sesuatu yang nyata
  • Success metrics: bagaimana Anda tahu itu berhasil (pengguna + teknis)
  • Follow-ups: apa yang bisa ditunda tanpa menghalangi pembelajaran

Minta roadmap bertahap (MVP → v1 → v2)

Tambahkan instruksi kedua: “Berikan roadmap bertahap: MVP → v1 → v2, dan jelaskan risiko apa yang dikurangi tiap fase.” Ini menjaga ide-ide nanti terlihat tanpa memaksanya masuk rilis pertama.

Contoh hasil yang diinginkan:

  • MVP memvalidasi alur inti dan jalur end-to-end tipis.
  • v1 memperkuat reliabilitas, menambahkan kegunaan "must-have" yang hilang.
  • v2 memperluas jangkauan (lebih banyak integrasi, peran lanjutan, optimisasi).

Minta pengecualian eksplisit untuk mencegah scope creep

Baris paling kuat dalam pola ini adalah: “List what is explicitly out of scope for MVP.” Pengecualian melindungi keputusan arsitektur dari kompleksitas prematur.

Contoh pengecualian:

  • “Tidak ada failover multi-region di MVP (catat insiden; rencanakan untuk v2).”
  • “Tidak ada sistem plugin dulu (jaga batasan bersih, tapi kirim modul tetap).”
  • “Hanya satu penyedia pembayaran; abstraksi belakangan jika perlu.”

Ubah rencana menjadi tiket dengan dependensi

Akhirnya: “Ubah MVP menjadi tiket, masing-masing dengan acceptance criteria dan dependensi.” Ini memaksa kejelasan dan mengungkap coupling tersembunyi.

Rincian tiket yang sehat biasanya mencakup:

  1. Jalur end-to-end “happy path” tipis
  2. Model data minimal + kontrak API
  3. Penanganan error dasar dan logging
  4. Satu titik integrasi (jika perlu) dengan fallback stub

Jika Anda mau, tautkan ini langsung ke alur kerja Anda dengan meminta model mengeluarkan dalam format tim (mis. field gaya Jira) dan simpan fase berikutnya sebagai backlog terpisah.

Pola 9: Test-First Prompts yang Membentuk Desain Lebih Baik

Buat aplikasi mobile dari chat
Ubah alur Anda menjadi aplikasi mobile Flutter tanpa mulai dari nol.

Cara sederhana mencegah arsitektur melenceng adalah memaksa kejelasan lewat tes sebelum Anda minta desain. Ketika Anda prompt LLM untuk menulis acceptance tests dulu, ia harus menamai perilaku, input, output, dan kasus tepi. Itu secara alami mengungkap persyaratan yang hilang dan mendorong implementasi ke batas modul yang bersih.

Template copy-paste

Gunakan ini sebagai prompt “gerbang” setiap kali Anda akan mendesain sebuah komponen:

  • Template: “Write acceptance tests first; then propose implementation. You must: (1) list assumptions, (2) name unit vs integration tests, (3) define test data and mocks vs real dependencies, (4) include a definition of done.”

Minta batasan pengujian yang cocok dengan modul

Tindak lanjuti dengan: “Group the tests by module responsibility (API layer, domain logic, persistence, external integrations). For each group, specify what is mocked and what is real.”

Ini mendorong LLM menjauhi desain kusut tempat segala sesuatu saling menyentuh. Jika ia tidak bisa menjelaskan di mana tes integrasi mulai, arsitektur Anda kemungkinan belum jelas.

Strategi data uji: hindari suite yang rapuh

Minta: “Propose a test data plan: fixtures vs factories, how to generate edge cases, and how to keep tests deterministic. List which dependencies can use in-memory fakes and which require a real service in CI.”

Seringkali Anda menemukan bahwa fitur "sederhana" sebenarnya membutuhkan kontrak, dataset seed, atau ID stabil—lebih baik menemukan itu sekarang daripada saat penulisan ulang.

Definition of done (supaya desain dikirim)

Akhiri dengan checklist ringan:

  • Tests passing (unit + integration) dan cakupan bermakna untuk kasus kegagalan
  • Dokumentasi minimal: penggunaan, konfigurasi, dan catatan troubleshooting singkat
  • Monitoring/alert untuk mode kegagalan utama
  • Rencana rollout (feature flag, langkah migrasi, rollback)

Pola 10: Prompt Review Desain untuk Menangkap Masalah Lebih Awal

Review desain tidak harus terjadi hanya setelah kode ada. Dengan AI, Anda bisa menjalankan “pre-mortem review” pada draf arsitektur (meskipun hanya beberapa paragraf dan diagram-in-words) dan mendapatkan daftar kelemahan konkret sebelum menjadi penulisan ulang.

Template review inti

Mulai dengan sikap reviewer yang blak-blakan dan paksakan spesifisitas:

Prompt: “Act as a reviewer; list risks, inconsistencies, and missing details in this design. Be concrete. If you can’t evaluate something, say what information is missing.”

Tempelkan ringkasan desain Anda, keterbatasan (anggaran, timeline, keterampilan tim), dan non-functional requirements (latensi, ketersediaan, kepatuhan).

Ubah feedback menjadi punch list yang dapat ditindaklanjuti

Review gagal jika umpan balik samar. Minta set perbaikan yang diprioritaskan:

Prompt: “Give me a prioritized punch list. For each item: severity (Blocker/High/Medium/Low), why it matters, suggested fix, and the smallest validation step.”

Ini menghasilkan tugas siap-keputusan daripada debat.

Kuantifikasi risiko penulisan ulang

Fungsi pemaksa yang berguna adalah skor sederhana:

Prompt: “Assign a rewrite risk score from 1–10. Explain the top 3 drivers. What would reduce the score by 2 points with minimal effort?”

Anda tidak mengejar presisi; Anda ingin mengungkap asumsi paling rentan terhadap penulisan ulang.

Akhiri dengan “diff plan”

Terakhir, cegah review memperluas ruang lingkup:

Prompt: “Provide a diff plan: minimal changes needed to reach the target design. List what stays the same, what changes, and any breaking impacts.”

Ketika Anda mengulangi pola ini tiap iterasi, arsitektur Anda berkembang melalui langkah kecil yang dapat dibalik—sementara masalah besar terdeteksi lebih awal.

Paket Prompt Copy-Paste dan Alur Kerja Sederhana

Gunakan paket ini sebagai alur kerja ringan yang dapat Anda ulang untuk setiap fitur. Ide utamanya adalah rantai prompt sehingga setiap langkah menghasilkan artefak yang dapat dipakai langkah berikutnya—mengurangi "konteks hilang" dan kejutan penulisan ulang.

Alur 6 langkah (rantai pola ini)

  1. Kebutuhan (klarifikasi + keterbatasan)
  2. Opsi arsitektur (bandingkan 2–3 pendekatan)
  3. Batas (modul + tanggung jawab)
  4. Kontrak (data + API)
  5. Tes (test-first acceptance + unit penting)
  6. Review (mode kegagalan + checklist review desain)

Dalam praktik, tim sering mengimplementasikan rantai ini sebagai “feature recipe” yang dapat diulang. Jika Anda membangun dengan Koder.ai, struktur yang sama terpetakan dengan rapi ke proses build berbasis chat: simpan artefak di satu tempat, hasilkan irisan kerja pertama, lalu iterasi dengan snapshot sehingga eksperimen tetap dapat dibalik. Ketika MVP siap, Anda bisa mengekspor kode sumber atau deploy/host dengan domain kustom—berguna saat Anda ingin kecepatan delivery dibantu AI tanpa terkunci pada satu lingkungan.

Paket prompt copy/paste (dengan guardrail)

SYSTEM (optional)
You are a software architecture assistant. Be practical and concise. 
Guardrail: When you make a recommendation, cite the specific lines from *my input* you relied on by quoting them verbatim under “Input citations”. Do not cite external sources or general industry claims.
If something is unknown, ask targeted questions.
1) REQUIREMENTS CLARIFIER
Context: <product/system overview>
Feature: <feature name>
My notes: <paste bullets, tickets, constraints>

Task:
- Produce: (a) clarified requirements, (b) non-goals, (c) constraints, (d) open questions.
- Include “Input citations” quoting the exact parts of my notes you used.
2) ARCHITECTURE OPTIONS
Using the clarified requirements above, propose 3 architecture options.
For each: tradeoffs, complexity, risks, and when to choose it.
End with a recommendation + “Input citations”.
3) MODULAR BOUNDARIES
Chosen option: <option name>
Define modules/components and their responsibilities.
- What each module owns (and does NOT own)
- Key interfaces between modules
- “Input citations”
4) DATA & API CONTRACTS
For each interface, define a contract:
- Request/response schema (or events)
- Validation rules
- Versioning strategy
- Error shapes
- “Input citations”
5) TEST-FIRST ACCEPTANCE
Write:
- Acceptance criteria (Given/When/Then)
- 5–10 critical tests (unit/integration)
- What to mock vs not mock
- “Input citations”
6) RELIABILITY + DESIGN REVIEW
Create:
- Failure modes list (timeouts, partial failure, bad data, retries)
- Observability plan (logs/metrics/traces)
- Review checklist tailored to this feature
- “Input citations”

Jika Anda menginginkan pendamping yang lebih mendalam, lihat /blog/prompting-for-code-reviews. Jika Anda mengevaluasi tooling atau rollout tim, /pricing adalah langkah praktis berikutnya.

Pertanyaan umum

Apa arti “arsitektur yang lebih bersih” dalam panduan ini?

"Arsitektur yang lebih bersih" di sini berarti Anda bisa:

  • Menjelaskan sistem dengan sederhana (tujuan, pengguna, data, hal yang tidak boleh dilakukan).
  • Mengubah satu bagian tanpa merusak bagian lain (batasan yang jelas).
  • Memverifikasi perilaku dengan murah (aturan bisnis dapat diuji tanpa menjalankan seluruh sistem).

Dalam pekerjaan yang dibantu AI, ini juga berarti model dapat mengulang kembali persyaratan dengan cara yang Anda siap setujui.

Mengapa pengembangan yang dibantu AI bisa menyebabkan lebih banyak penulisan ulang?

AI dapat menghasilkan kode dan desain yang meyakinkan dengan cepat, sehingga mudah membangun di atas dasar yang kurang jelas—yaitu keterbatasan yang hilang dan asumsi tersembunyi. Kecepatan itu bisa memperkuat pemicu penulisan ulang seperti:

  • menemukan peran/izin tambahan terlambat
  • menambahkan persyaratan performa/audit/retensi setelah implementasi
  • mengetahui API eksternal berperilaku berbeda dari yang diharapkan

Solusinya bukan “kurangi AI”, melainkan menggunakan prompt yang memaksa keterbatasan, kontrak, dan asumsi muncul lebih awal.

Kapan saya harus menggunakan pola prompting ini dalam alur kerja?

Gunakan pola sebagai checkpoint singkat yang menghasilkan artefak yang bisa dipakai ulang (bukan prosa berlebih):

  • Sebelum penulisan kode: satu loop alignment (tujuan, pengguna, keterbatasan, metrik keberhasilan).
  • Saat desain: paksakan trade-off eksplisit (alternatif, risiko, batasan).
  • Saat review: jalankan prompt checklist (kasus tepi, reliabilitas, keamanan, performa).

Pertahankan iterasi 10–15 menit: prompt → skim → rapikan → self-check terhadap acceptance criteria.

Input apa yang harus saya kumpulkan sebelum memberi prompt ke LLM tentang arsitektur?

Siapkan paket input kecil dan konsisten:

  • Tujuan: apa arti “selesai” (latensi, hasil UX, batas biaya)
  • Pengguna: peran + alur utama
  • Keterbatasan: stack, tenggat, kepatuhan/keamanan
  • Data & integrasi: sumber, pemilik, API, pihak ketiga

Jika ada yang tidak diketahui, sebutkan dan minta model mendaftar asumsi secara eksplisit daripada menebak diam-diam.

Output reusable apa yang harus saya minta daripada hanya “jelaskan desain”?

Minta artefak yang bisa Anda tempel ke dokumen, tiket, dan PR:

  • sebuah decision log (opsi → pro/kontra → pilihan → alasan)
  • tabel komponen/modul (tanggung jawab, batasan)
  • checklist reliabilitas/pengujian
  • deskripsi diagram sederhana (mis. teks Mermaid)

Ini menjaga keluaran AI agar bersifat aksi dan mengurangi kerja ulang akibat “konteks hilang.”

Bagaimana saya mengklarifikasi kebutuhan dengan AI sebelum membuat arsitektur apa pun?

Gunakan model sebagai pewawancara kebutuhan. Suruh ia:

  • mengajukan 10–15 pertanyaan klarifikasi dikelompokkan menurut pengguna, alur kerja, data, integrasi, keamanan/kepatuhan, skala, operasi
  • menghasilkan daftar ruang lingkup terprioritas (must-have / nice-to-have / out-of-scope)
  • mencantumkan keterbatasan yang harus dikonfirmasi (performansi, biaya, keamanan, kepatuhan, tenggat)
  • mengulangi spesifikasi akhir dalam tepat 10 butir untuk konfirmasi

Anggap pengulangan 10-butir itu sebagai kontrak yang Anda validasi dengan pemangku kepentingan sebelum memulai desain.

Mengapa “user journeys first” menghasilkan keputusan arsitektur yang lebih baik?

Mulai dari peran dan aksi, lalu minta:

  • alur langkah-demi-langkah dalam bahasa sederhana
  • daftar status sederhana (mis. Draft → Submitted → Approved)
  • skenario non-happy-path (timeout, retry, duplikasi, pembatalan, input tidak valid)

Setelah alur jelas, peta ke keputusan teknis seperti di mana validasi berakhir dan aturan bisnis dimulai, di mana idempotency diperlukan, dan apa yang harus disimpan vs diturunkan. Ubah alur menjadi acceptance criteria Given/When/Then yang dapat diuji.

Apa itu log asumsi, dan bagaimana itu mencegah penulisan ulang yang mengejutkan?

Karena LLM akan mengisi celah dengan tebakan yang masuk akal kecuali Anda memaksa pemisahan antara:

  • fakta yang Anda berikan
  • asumsi yang ia simpulkan

Minta log asumsi yang menandai setiap item sebagai terverifikasi atau tidak diketahui, plus:

  • mengapa penting (keputusan apa yang dipengaruhi)
  • bagaimana memverifikasinya dengan cepat (pertanyaan/cek/spike)
  • apa yang berubah jika salah

Juga minta “apa yang akan mengubah jawaban Anda?” (mis. volume, latensi, kepatuhan, retensi) agar desain menjadi kondisional dan lebih tahan penulisan ulang.

Bagaimana cara membandingkan beberapa arsitektur tanpa berubah jadi perdebatan tak berujung?

Paksakan model untuk mengusulkan 2–3 arsitektur yang layak dan bandingkan dalam tabel (kompleksitas, reliabilitas, waktu untuk kirim, skalabilitas, biaya). Lalu minta:

  • rekomendasi jelas yang terkait dengan keterbatasan Anda
  • daftar eksplisit “apa yang TIDAK kami bangun” untuk iterasi ini

Ini mencegah opsi pertama yang masuk akal menjadi default dan mengurangi perluasan ruang lingkup tersembunyi (penyebab umum penulisan ulang).

Bagaimana “data & kontrak API dulu” mencegah penulisan ulang integrasi?

Pendekatan contract-first membuat bentuk data dan aturan kompatibilitas menjadi eksplisit. Minta:

  • kepemilikan entitas + siklus hidup + sumber kebenaran
  • contoh request/response API dan bentuk error standar
  • aturan validasi level-field + kasus tepi
  • aturan versioning (mis. field tambahan boleh tanpa bump versi; rename memerlukan /v2; klien mengabaikan field yang tidak dikenal)

Ketika UI, backend, dan integrasi berbagi artefak kontrak yang sama, Anda menghabiskan lebih sedikit waktu menyesuaikan asumsi yang mismatch nanti.

Related posts